From 9cff4910eeb0efc6fb0a7f6f460ee2adef35ffb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukan=20=C3=96ks=C3=BCz?= Date: Sun, 27 Dec 2020 23:58:10 +0300 Subject: [PATCH] Ajax document saving, socket seperation for documents, several bug fixes, listing users that editing file --- .vscode/settings.json | 3 + editor/dist/quill.bundle.js | 2 +- editor/dist/quill.bundle.js.map | 2 +- editor/package.json | 2 +- editor/quill.js | 50 +- .../Controllers/API/DocumentController.php | 21 + server/app/Http/Livewire/Document/Show.php | 7 +- server/app/Http/Livewire/Folder/Show.php | 7 +- server/public/editor/highlight.min.js | 1296 +++++++++++++ server/public/editor/quill.bundle.js | 760 ++++++++ server/public/editor/quill.bundle.js.map | 1 + server/public/editor/quill.css | 1631 +++++++++++++++++ server/public/js/app.js | 3 +- server/public/js/app.js.LICENSE.txt | 4 - server/public/js/ckeditor.js | 6 - server/public/js/ckeditor.js.map | 1 - server/resources/js/app.js | 96 - server/resources/views/layouts/app.blade.php | 2 +- .../views/livewire/breadcrumb.blade.php | 4 +- .../views/livewire/document/edit.blade.php | 183 +- server/routes/web.php | 7 +- socket/config.js | 9 - todo | 11 + 23 files changed, 3928 insertions(+), 180 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 server/app/Http/Controllers/API/DocumentController.php create mode 100644 server/public/editor/highlight.min.js create mode 100644 server/public/editor/quill.bundle.js create mode 100644 server/public/editor/quill.bundle.js.map create mode 100644 server/public/editor/quill.css delete mode 100644 server/public/js/app.js.LICENSE.txt delete mode 100644 server/public/js/ckeditor.js delete mode 100644 server/public/js/ckeditor.js.map delete mode 100644 socket/config.js create mode 100644 todo diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..afb940f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "discord.enabled": true +} \ No newline at end of file diff --git a/editor/dist/quill.bundle.js b/editor/dist/quill.bundle.js index 727b92b..3ae745f 100644 --- a/editor/dist/quill.bundle.js +++ b/editor/dist/quill.bundle.js @@ -756,5 +756,5 @@ var factory;window,factory=function(){return function(e){var t={};function n(r){ * @author Feross Aboukhadijeh * @license MIT */ -var r=n(34),o=n(35),i=n(36);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return W(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,n);case"utf8":case"utf-8":return P(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,s=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=n;ia&&(n=a-l),i=n;i>=0;i--){for(var _=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function P(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+_<=n)switch(_){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(l=(15&c)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,_=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=_}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,o){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(i,s),c=this.slice(r,o),u=e.slice(t,n),_=0;_o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return g(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return w(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function A(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function C(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function S(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function R(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||R(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,i){return i||R(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||C(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function W(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(33))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=c(e),s=r[0],a=r[1],l=new i(function(e,t,n){return 3*(t+n)/4-n}(0,s,a)),u=0,_=a>0?s-4:s;for(n=0;n<_;n+=4)t=o[e.charCodeAt(n)]<<18|o[e.charCodeAt(n+1)]<<12|o[e.charCodeAt(n+2)]<<6|o[e.charCodeAt(n+3)],l[u++]=t>>16&255,l[u++]=t>>8&255,l[u++]=255&t;2===a&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,l[u++]=255&t);1===a&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,l[u++]=t>>8&255,l[u++]=255&t);return l},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],s=0,a=n-o;sa?a:s+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var o,i,s=[],a=t;a>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,s,a=8*o-r-1,l=(1<>1,u=-7,_=n?o-1:0,d=n?-1:1,f=e[t+_];for(_+=d,i=f&(1<<-u)-1,f>>=-u,u+=a;u>0;i=256*i+e[t+_],_+=d,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+_],_+=d,u-=8);if(0===i)i=1-c;else{if(i===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=c}return(f?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var s,a,l,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,p=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+_>=1?d/l:d*Math.pow(2,1-_))*l>=2&&(s++,l/=2),s+_>=u?(a=0,s=u):s+_>=1?(a=(t*l-1)*Math.pow(2,o),s+=_):(a=t*Math.pow(2,_-1)*Math.pow(2,o),s=0));o>=8;e[n+f]=255&a,f+=p,a/=256,o-=8);for(s=s<0;e[n+f]=255&s,f+=p,s/=256,c-=8);e[n+f-p]|=128*h}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var l,c=[],u=!1,_=-1;function d(){u&&l&&(u=!1,l.length?c=l.concat(c):_=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(l=c,c=[];++_1)for(var n=1;nnew Set,i=e=>e[e.length-1],s=Array.from;class a{constructor(){this._observers=r.c()}on(e,t){r.e(this._observers,e,o).add(t)}once(e,t){this.on(e,(...n)=>{this.off(e,t),t(...n)})}off(e,t){const n=this._observers.get(e);void 0!==n&&(n.delete(t),0===n.size&&this._observers.delete(e))}emit(e,t){return s((this._observers.get(e)||r.c()).values()).forEach(e=>e(...t))}destroy(){this._observers=r.c()}}var l=n(3),c=n(0),u=n(1),_=n(15),d=n.n(_);d.a.performance;const f=d.a.cryptoRandomBuffer,p=(Math.random,()=>new Uint32Array(f(4))[0]);var h=n(5);const m=e=>new Error(e),b=()=>{throw m("Method unimplemented")},y=()=>{throw m("Unexpected case")};var g=n(2);Object.assign;const v=Object.keys,E=e=>v(e).length,x=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),w=(e,t)=>e===t||E(e)===E(t)&&((e,t)=>{for(const n in e)if(!t(e[n],n))return!1;return!0})(e,(e,n)=>(void 0!==e||x(t,n))&&t[n]===e),O=(e,t,n=0)=>{try{for(;n{if(null==e||null==t)return((e,t)=>e===t)(e,t);if(e.constructor!==t.constructor)return!1;if(e===t)return!0;switch(e.constructor){case ArrayBuffer:e=new Uint8Array(e),t=new Uint8Array(t);case Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let n=0;nnew D(e,t),T="undefined"!=typeof document?document:{},I=("undefined"!=typeof DOMParser&&new DOMParser,e=>r.d(e,(e,t)=>`${t}:${e};`).join(""));T.ELEMENT_NODE,T.TEXT_NODE,T.CDATA_SECTION_NODE,T.COMMENT_NODE,T.DOCUMENT_NODE,T.DOCUMENT_TYPE_NODE,T.DOCUMENT_FRAGMENT_NODE,JSON.stringify,JSON.parse;const C=e=>class{constructor(e){this._=e}destroy(){e(this._)}},S=(C(clearTimeout),C(clearInterval),C(e=>"undefined"!=typeof requestAnimationFrame&&cancelAnimationFrame(e)),C(e=>"undefined"!=typeof cancelIdleCallback&&cancelIdleCallback(e)),Date.now),L=A(),R=A(),j=A(),B=A(),q=A(),U=A(),N=A(),W=A(),K=A(),F={[L]:M("font-weight","bold"),[R]:M("font-weight","normal"),[j]:M("color","blue"),[q]:M("color","green"),[B]:M("color","grey"),[U]:M("color","red"),[N]:M("color","purple"),[W]:M("color","orange"),[K]:M("color","black")},$={[L]:"",[R]:"",[j]:"",[q]:"",[B]:"",[U]:"",[N]:"",[W]:"",[K]:""},H=P.c?e=>{const t=[],n=[];let r=0;for(;r0&&(t.push(""),n.push(t.join("")));r{const t=[],n=[],o=r.c();let i=[],s=0;for(;s0||e.length>0?(t.push("%c"+r),n.push(e)):t.push(r)}}}for(s>0&&(i=n,i.unshift(t.join("")));s{console.log(...H(e)),z.forEach(t=>t.print(e))},z=new Set;S();const V=e=>({[Symbol.iterator](){return this},next:e}),Q=(e,t)=>V(()=>{const{done:n,value:r}=e.next();return{done:n,value:n?void 0:t(r)}});class Y{constructor(e,t){this.clock=e,this.len=t}}class J{constructor(){this.clients=new Map}}const X=(e,t,n)=>t.clients.forEach((t,r)=>{const o=e.doc.store.clients.get(r);for(let r=0;r{const n=e.clients.get(t.client);return void 0!==n&&null!==((e,t)=>{let n=0,r=e.length-1;for(;n<=r;){const o=Object(l.c)((n+r)/2),i=e[o],s=i.clock;if(s<=t){if(t{e.clients.forEach(e=>{let t,n;for(e.sort((e,t)=>e.clock-t.clock),t=1,n=1;t{Object(r.e)(e.clients,t,()=>[]).push(new Y(n,o))},ne=()=>new J,re=e=>{const t=ne();return e.clients.forEach((e,n)=>{const r=[];for(let t=0;t0&&t.clients.set(n,r)}),t},oe=(e,t)=>{Object(c.m)(e.restEncoder,t.clients.size),t.clients.forEach((t,n)=>{e.resetDsCurVal(),Object(c.m)(e.restEncoder,n);const r=t.length;Object(c.m)(e.restEncoder,r);for(let n=0;n{const r=new J,o=Object(u.i)(e.restDecoder);for(let i=0;i0){const e=new de;oe(e,r),n.pendingDeleteReaders.push(new ce(Object(u.e)(e.toUint8Array())))}},se=p;class ae extends a{constructor({gc:e=!0,gcFilter:t=(()=>!0)}={}){super(),this.gc=e,this.gcFilter=t,this.clientID=se(),this.share=new Map,this.store=new ze,this._transaction=null,this._transactionCleanups=[]}transact(e,t=null){ct(this,e,t)}get(e,t=yt){const n=Object(r.e)(this.share,e,()=>{const e=new t;return e._integrate(this,null),e}),o=n.constructor;if(t!==yt&&o!==t){if(o===yt){const r=new t;r._map=n._map,n._map.forEach(e=>{for(;null!==e;e=e.left)e.parent=r}),r._start=n._start;for(let e=r._start;null!==e;e=e.right)e.parent=r;return r._length=n._length,this.share.set(e,r),r._integrate(this,null),r}throw new Error(`Type with the name ${e} has already been defined with a different constructor`)}return n}getArray(e=""){return this.get(e,It)}getText(e=""){return this.get(e,zt)}getMap(e=""){return this.get(e,St)}getXmlFragment(e=""){return this.get(e,Qt)}toJSON(){const e={};return this.share.forEach((t,n)=>{e[n]=t.toJSON()}),e}destroy(){this.emit("destroyed",[!0]),super.destroy()}on(e,t){super.on(e,t)}off(e,t){super.off(e,t)}}class le{constructor(e){this.restDecoder=e}resetDsCurVal(){}readDsClock(){return Object(u.i)(this.restDecoder)}readDsLen(){return Object(u.i)(this.restDecoder)}}class ce{constructor(e){this.dsCurrVal=0,this.restDecoder=e}resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=Object(u.i)(this.restDecoder),this.dsCurrVal}readDsLen(){const e=Object(u.i)(this.restDecoder)+1;return this.dsCurrVal+=e,e}}class ue extends ce{constructor(e){super(e),this.keys=[],Object(u.g)(e),this.keyClockDecoder=new u.a(Object(u.j)(e)),this.clientDecoder=new u.d(Object(u.j)(e)),this.leftClockDecoder=new u.a(Object(u.j)(e)),this.rightClockDecoder=new u.a(Object(u.j)(e)),this.infoDecoder=new u.b(Object(u.j)(e),u.g),this.stringDecoder=new u.c(Object(u.j)(e)),this.parentInfoDecoder=new u.b(Object(u.j)(e),u.g),this.typeRefDecoder=new u.d(Object(u.j)(e)),this.lenDecoder=new u.d(Object(u.j)(e))}readLeftID(){return new Ce(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new Ce(this.clientDecoder.read(),this.rightClockDecoder.read())}readClient(){return this.clientDecoder.read()}readInfo(){return this.infoDecoder.read()}readString(){return this.stringDecoder.read()}readParentInfo(){return 1===this.parentInfoDecoder.read()}readTypeRef(){return this.typeRefDecoder.read()}readLen(){return this.lenDecoder.read()}readAny(){return Object(u.f)(this.restDecoder)}readBuf(){return Object(u.j)(this.restDecoder)}readJSON(){return Object(u.f)(this.restDecoder)}readKey(){const e=this.keyClockDecoder.read();if(e{const r=new Map;n.forEach((e,n)=>{Qe(t,n)>e&&r.set(n,e)}),Ve(t).forEach((e,t)=>{n.has(t)||r.set(t,0)}),Object(c.m)(e.restEncoder,r.size),Array.from(r.entries()).sort((e,t)=>t[0]-e[0]).forEach(([n,r])=>{((e,t,n,r)=>{const o=Je(t,r);Object(c.m)(e.restEncoder,t.length-o),e.writeClient(n),Object(c.m)(e.restEncoder,r);const i=t[o];i.write(e,r-i.id.clock);for(let n=o+1;n{const o=new Map;var i;((e,t,n)=>{const r=Object(u.i)(e.restDecoder);for(let o=0;o{const n=e.pendingClientsStructRefs;t.forEach((e,t)=>{const r=n.get(t);if(void 0===r)n.set(t,{refs:e,i:0});else{const t=r.i>0?r.refs.slice(r.i):r.refs;for(let n=0;ne.id.clock-t.id.clock)}})})(n,o),((e,t)=>{const n=t.pendingStack,o=t.pendingClientsStructRefs,i=Array.from(o.keys()).sort((e,t)=>e-t);if(0===i.length)return;const s=()=>{let e=o.get(i[i.length-1]);for(;e.refs.length===e.i;){if(i.pop(),!(i.length>0))return t.pendingClientsStructRefs.clear(),null;e=o.get(i[i.length-1])}return e};let a=s();if(null===a&&0===n.length)return;let l=n.length>0?n.pop():a.refs[a.i++];const c=new Map;for(;;){const i=Object(r.e)(c,l.id.client,()=>Qe(t,l.id.client)),u=l.id.clocke.id.clock-t.id.clock),e.i=0;continue}}return void n.push(l)}const _=l.getMissing(e,t);if(null===_)if((0===u||u0)l=n.pop();else if(null!==a&&a.i{e.i===e.refs.length?i.delete(t):(e.refs.splice(0,e.i),e.i=0)}),((e,t)=>{const n=t.pendingDeleteReaders;t.pendingDeleteReaders=[];for(let r=0;rct(t,e=>{ge(r,e,t.store),ie(r,e,t.store)},n,!1),Ee=(e,t,n)=>((e,t,n,r=ue)=>{const o=Object(u.e)(t);ve(o,e,n,new r(o))})(e,t,n,be),xe=(e,t,n=new fe)=>(((e,t,n=new Map)=>{ye(e,t.store,n),oe(e,re(t.store))})(n,e,null==t?new Map:Oe(t)),n.toUint8Array()),we=e=>{const t=new Map,n=Object(u.i)(e.restDecoder);for(let r=0;rwe(new he(Object(u.e)(e))),ke=(e,t)=>(Object(c.m)(e.restEncoder,t.size),t.forEach((t,n)=>{Object(c.m)(e.restEncoder,n),Object(c.m)(e.restEncoder,t)}),e),Pe=(e,t=new de)=>(((e,t)=>{ke(e,Ve(t.store))})(t,e),t.toUint8Array());class Ae{constructor(){this.l=[]}}const De=()=>new Ae,Me=(e,t)=>e.l.push(t),Te=(e,t)=>{e.l=e.l.filter(e=>t!==e)},Ie=(e,t,n)=>O(e.l,[t,n]);class Ce{constructor(e,t){this.client=e,this.clock=t}}const Se=(e,t)=>e===t||null!==e&&null!==t&&e.client===t.client&&e.clock===t.clock,Le=(e,t)=>new Ce(e,t),Re=e=>{for(const[t,n]of e.doc.share.entries())if(n===e)return t;throw y()};class je{constructor(e,t,n){this.type=e,this.tname=t,this.item=n}}const Be=e=>new je(null==e.type?null:Le(e.type.client,e.type.clock),e.tname||null,null==e.item?null:Le(e.item.client,e.item.clock));class qe{constructor(e,t){this.type=e,this.index=t}}const Ue=(e,t)=>{let n=null,r=null;return null===e._item?r=Re(e):n=Le(e._item.id.client,e._item.id.clock),new je(n,r,t)},Ne=(e,t)=>{let n=e._start;for(;null!==n;){if(!n.deleted&&n.countable){if(n.length>t)return Ue(e,Le(n.id.client,n.id.clock+t));t-=n.length}n=n.right}return Ue(e,null)},We=(e,t)=>{const n=t.store,r=e.item,o=e.type,i=e.tname;let s=null,a=0;if(null!==r){if(Qe(n,r.client)<=r.clock)return null;const e=gn(n,r),t=e.item;if(!(t instanceof En))return null;if(s=t.parent,null===s._item||!s._item.deleted){a=t.deleted||!t.countable?0:e.diff;let n=t.left;for(;null!==n;)!n.deleted&&n.countable&&(a+=n.length),n=n.left}}else{if(null!==i)s=t.get(i);else{if(null===o)throw y();{if(Qe(n,o.client)<=o.clock)return null;const{item:e}=gn(n,o);if(!(e instanceof En&&e.content instanceof yn))return null;s=e.content.type}}a=s._length}return((e,t)=>new qe(e,t))(s,a)},Ke=(e,t)=>e===t||null!==e&&null!==t&&e.tname===t.tname&&Se(e.item,t.item)&&Se(e.type,t.type);class Fe{constructor(e,t){this.ds=e,this.sv=t}}const $e=(e,t)=>new Fe(e,t),He=($e(ne(),new Map),(e,t)=>void 0===t?!e.deleted:t.sv.has(e.id.client)&&(t.sv.get(e.id.client)||0)>e.id.clock&&!Z(t.ds,e.id)),Ge=(e,t)=>{const n=Object(r.e)(e.meta,Ge,o),i=e.doc.store;n.has(t)||(t.sv.forEach((t,n)=>{t{}),n.add(t))};class ze{constructor(){this.clients=new Map,this.pendingClientsStructRefs=new Map,this.pendingStack=[],this.pendingDeleteReaders=[]}}const Ve=e=>{const t=new Map;return e.clients.forEach((e,n)=>{const r=e[e.length-1];t.set(n,r.id.clock+r.length)}),t},Qe=(e,t)=>{const n=e.clients.get(t);if(void 0===n)return 0;const r=n[n.length-1];return r.id.clock+r.length},Ye=(e,t)=>{let n=e.clients.get(t.id.client);if(void 0===n)n=[],e.clients.set(t.id.client,n);else{const e=n[n.length-1];if(e.id.clock+e.length!==t.id.clock)throw y()}n.push(t)},Je=(e,t)=>{let n=0,r=e.length-1,o=e[r],i=o.id.clock;if(i===t)return r;let s=Object(l.c)(t/(i+o.length-1)*r);for(;n<=r;){if(o=e[s],i=o.id.clock,i<=t){if(t{const n=e.clients.get(t.client);return n[Je(n,t.clock)]},Ze=(e,t,n)=>{const r=Je(t,n),o=t[r];return o.id.clock{const n=e.doc.store.clients.get(t.client);return n[Ze(e,n,t.clock)]},tt=(e,t,n)=>{const r=t.clients.get(n.client),o=Je(r,n.clock),i=r[o];return n.clock!==i.id.clock+i.length-1&&i.constructor!==tn&&r.splice(o+1,0,vn(e,i,n.clock-i.id.clock+1)),i},nt=(e,t,n,r,o)=>{if(0===r)return;const i=n+r;let s,a=Ze(e,t,n);do{s=t[a++],i!(0===t.deleteSet.clients.size&&!Object(r.a)(t.afterState,(e,n)=>t.beforeState.get(n)!==e))&&(ee(t.deleteSet),((e,t)=>{ye(e,t.doc.store,t.beforeState)})(e,t),oe(e,t.deleteSet),!0),it=(e,t)=>{const n=e[t-1],r=e[t];n.deleted===r.deleted&&n.constructor===r.constructor&&n.mergeWith(r)&&(e.splice(t,1),r instanceof En&&null!==r.parentSub&&r.parent._map.get(r.parentSub)===r&&r.parent._map.set(r.parentSub,n))},st=(e,t,n)=>{for(const[r,o]of e.clients.entries()){const e=t.clients.get(r);for(let r=o.length-1;r>=0;r--){const i=o[r],s=i.clock+i.len;for(let r=Je(e,i.clock),o=e[r];r{e.clients.forEach((e,n)=>{const r=t.clients.get(n);for(let t=e.length-1;t>=0;t--){const n=e[t];for(let e=Object(l.g)(r.length-1,1+Je(r,n.clock+n.len-1)),t=r[e];e>0&&t.id.clock>=n.clock;t=r[--e])it(r,e)}})},lt=(e,t)=>{if(ta.push(()=>{null!==t._item&&t._item.deleted||t._callObserver(n,e)})),a.push(()=>{n.changedParentTypes.forEach((e,t)=>a.push(()=>{null!==t._item&&t._item.deleted||((e=e.filter(e=>null===e.target._item||!e.target._item.deleted)).forEach(e=>{e.currentTarget=t}),Ie(t._dEH,e,n))})),a.push(()=>r.emit("afterTransaction",[n,r]))}),O(a,[])}finally{r.gc&&st(i,o,r.gcFilter),at(i,o),n.afterState.forEach((e,t)=>{const r=n.beforeState.get(t)||0;if(r!==e){const e=o.clients.get(t),n=Object(l.f)(Je(e,r),1);for(let t=e.length-1;t>=n;t--)it(e,t)}});for(let e=0;e0&&it(r,i)}if(n.local||n.afterState.get(r.clientID)===n.beforeState.get(r.clientID)||(r.clientID=se(),G(W,L,"[yjs] ",R,U,"Changed the client-id because another client seems to be using it.")),r.emit("afterTransactionCleanup",[n,r]),r._observers.has("update")){const e=new me;ot(e,n)&&r.emit("update",[e.toUint8Array(),n.origin,r])}if(r._observers.has("updateV2")){const e=new fe;ot(e,n)&&r.emit("updateV2",[e.toUint8Array(),n.origin,r])}e.length<=t+1?(r._transactionCleanups=[],r.emit("afterAllTransactions",[r,e])):lt(e,t+1)}}},ct=(e,t,n=null,r=!0)=>{const o=e._transactionCleanups;let i=!1;null===e._transaction&&(i=!0,e._transaction=new rt(e,n,r),o.push(e._transaction),1===o.length&&e.emit("beforeAllTransactions",[e]),e.emit("beforeTransaction",[e._transaction,e]));try{t(e._transaction)}finally{i&&o[0]===e._transaction&<(o,0)}};class ut{constructor(e,t){this.target=e,this.currentTarget=e,this.transaction=t,this._changes=null}get path(){return _t(this.currentTarget,this.target)}deletes(e){return Z(this.transaction.deleteSet,e.id)}adds(e){return e.id.clock>=(this.transaction.beforeState.get(e.id.client)||0)}get changes(){let e=this._changes;if(null===e){const t=this.target,n=o(),r=o(),s=[],a=new Map;e={added:n,deleted:r,delta:s,keys:a};const l=this.transaction.changed.get(t);if(l.has(null)){let e=null;const o=()=>{e&&s.push(e)};for(let i=t._start;null!==i;i=i.right)i.deleted?this.deletes(i)&&!this.adds(i)&&(null!==e&&void 0!==e.delete||(o(),e={delete:0}),e.delete+=i.length,r.add(i)):this.adds(i)?(null!==e&&void 0!==e.insert||(o(),e={insert:[]}),e.insert=e.insert.concat(i.content.getContent()),n.add(i)):(null!==e&&void 0!==e.retain||(o(),e={retain:0}),e.retain+=i.length);null!==e&&void 0===e.retain&&o()}l.forEach(e=>{if(null!==e){const n=t._map.get(e);let r,o;if(this.adds(n)){let e=n.left;for(;null!==e&&this.adds(e);)e=e.left;if(this.deletes(n)){if(null===e||!this.deletes(e))return;r="delete",o=i(e.content.getContent())}else null!==e&&this.deletes(e)?(r="update",o=i(e.content.getContent())):(r="add",o=void 0)}else{if(!this.deletes(n))return;r="delete",o=i(n.content.getContent())}a.set(e,{action:r,oldValue:o})}}),this._changes=e}return e}}const _t=(e,t)=>{const n=[];for(;null!==t._item&&t!==e;){if(null!==t._item.parentSub)n.unshift(t._item.parentSub);else{let e=0,r=t._item.parent._start;for(;r!==t._item&&null!==r;)r.deleted||e++,r=r.right;n.unshift(e)}t=t._item.parent}return n};let dt=0;class ft{constructor(e,t){e.marker=!0,this.p=e,this.index=t,this.timestamp=dt++}}const pt=(e,t,n)=>{e.p.marker=!1,e.p=t,t.marker=!0,e.index=n,e.timestamp=dt++},ht=(e,t)=>{if(null===e._start||0===t||null===e._searchMarker)return null;const n=0===e._searchMarker.length?null:e._searchMarker.reduce((e,n)=>Object(l.a)(t-e.index){e.timestamp=dt++})(n));null!==r.right&&ot;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);for(;null!==r.left&&r.left.id.client===r.id.client&&r.left.id.clock+r.left.length===r.id.clock;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);return null!==n&&Object(l.a)(n.index-o){if(e.length>=80){const r=e.reduce((e,t)=>e.timestamp{for(let r=e.length-1;r>=0;r--){const o=e[r];if(n>0){let t=o.p;for(t.marker=!1;t&&(t.deleted||!t.countable);)t=t.left,t&&!t.deleted&&t.countable&&(o.index-=t.length);if(null===t||!0===t.marker){e.splice(r,1);continue}o.p=t,t.marker=!0}(t0&&t===o.index)&&(o.index=Object(l.f)(t,o.index+n))}},bt=(e,t,n)=>{const o=e,i=t.changedParentTypes;for(;Object(r.e)(i,e,()=>[]).push(n),null!==e._item;)e=e._item.parent;Ie(o._eH,n,t)};class yt{constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=De(),this._dEH=De(),this._searchMarker=null}_integrate(e,t){this.doc=e,this._item=t}_copy(){throw b()}_write(e){}get _first(){let e=this._start;for(;null!==e&&e.deleted;)e=e.right;return e}_callObserver(e,t){!e.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(e){Me(this._eH,e)}observeDeep(e){Me(this._dEH,e)}unobserve(e){Te(this._eH,e)}unobserveDeep(e){Te(this._dEH,e)}toJSON(){}}const gt=e=>{const t=[];let n=e._start;for(;null!==n;){if(n.countable&&!n.deleted){const e=n.content.getContent();for(let n=0;n{let n=0,r=e._start;for(;null!==r;){if(r.countable&&!r.deleted){const o=r.content.getContent();for(let r=0;r{const n=[];return vt(e,(r,o)=>{n.push(t(r,o,e))}),n},xt=e=>{let t=e._start,n=null,r=0;return{[Symbol.iterator](){return this},next:()=>{if(null===n){for(;null!==t&&t.deleted;)t=t.right;if(null===t)return{done:!0,value:void 0};n=t.content.getContent(),r=0,t=t.right}const e=n[r++];return n.length<=r&&(n=null),{done:!1,value:e}}}},wt=(e,t,n,r)=>{let o=n;const i=e.doc,s=i.clientID,a=i.store,l=null===n?t._start:n.right;let c=[];const u=()=>{c.length>0&&(o=new En(Le(s,Qe(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new ln(c)),o.integrate(e,0),c=[])};r.forEach(n=>{switch(n.constructor){case Number:case Object:case Boolean:case Array:case String:c.push(n);break;default:switch(u(),n.constructor){case Uint8Array:case ArrayBuffer:o=new En(Le(s,Qe(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new nn(new Uint8Array(n))),o.integrate(e,0);break;default:if(!(n instanceof yt))throw new Error("Unexpected content type in insert operation");o=new En(Le(s,Qe(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new yn(n)),o.integrate(e,0)}}}),u()},Ot=(e,t,n,r)=>{if(0===n)return t._searchMarker&&mt(t._searchMarker,n,r.length),wt(e,t,null,r);const o=n,i=ht(t,n);let s=t._start;for(null!==i&&(s=i.p,0===(n-=i.index)&&(s=s.prev,n+=s&&s.countable&&!s.deleted?s.length:0));null!==s;s=s.right)if(!s.deleted&&s.countable){if(n<=s.length){n{if(0===r)return;const o=n,i=r,s=ht(t,n);let a=t._start;for(null!==s&&(a=s.p,n-=s.index);null!==a&&n>0;a=a.right)!a.deleted&&a.countable&&(n0&&null!==a;)a.deleted||(r0)throw m("array length exceeded");t._searchMarker&&mt(t._searchMarker,o,-i+r)},Pt=(e,t,n)=>{const r=t._map.get(n);void 0!==r&&r.delete(e)},At=(e,t,n,r)=>{const o=t._map.get(n)||null,i=e.doc,s=i.clientID;let a;if(null==r)a=new ln([r]);else switch(r.constructor){case Number:case Object:case Boolean:case Array:case String:a=new ln([r]);break;case Uint8Array:a=new nn(r);break;default:if(!(r instanceof yt))throw new Error("Unexpected content type");a=new yn(r)}new En(Le(s,Qe(i.store,s)),o,o&&o.lastId,null,null,t,n,a).integrate(e,0)},Dt=(e,t)=>{const n=e._map.get(t);return void 0===n||n.deleted?void 0:n.content.getContent()[n.length-1]},Mt=e=>{return t=e.entries(),n=e=>!e[1].deleted,V(()=>{let e;do{e=t.next()}while(!e.done&&!n(e.value));return e});var t,n};class Tt extends ut{constructor(e,t){super(e,t),this._transaction=t}}class It extends yt{constructor(){super(),this._prelimContent=[],this._searchMarker=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new It}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}_callObserver(e,t){super._callObserver(e,t),bt(this,e,new Tt(this,e))}insert(e,t){null!==this.doc?ct(this.doc,n=>{Ot(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}push(e){this.insert(this.length,e)}unshift(e){this.insert(0,e)}delete(e,t=1){null!==this.doc?ct(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,t)}get(e){return((e,t)=>{const n=ht(e,t);let r=e._start;for(null!==n&&(r=n.p,t-=n.index);null!==r;r=r.right)if(!r.deleted&&r.countable){if(te instanceof yt?e.toJSON():e)}map(e){return Et(this,e)}forEach(e){vt(this,e)}[Symbol.iterator](){return xt(this)}_write(e){e.writeTypeRef(_n)}}class Ct extends ut{constructor(e,t,n){super(e,t),this.keysChanged=n}}class St extends yt{constructor(e){super(),this._prelimContent=null,this._prelimContent=void 0===e?new Map:new Map(e)}_integrate(e,t){super._integrate(e,t),this._prelimContent.forEach((e,t)=>{this.set(t,e)}),this._prelimContent=null}_copy(){return new St}_callObserver(e,t){bt(this,e,new Ct(this,e,t))}toJSON(){const e={};return this._map.forEach((t,n)=>{if(!t.deleted){const r=t.content.getContent()[t.length-1];e[n]=r instanceof yt?r.toJSON():r}}),e}get size(){return[...Mt(this._map)].length}keys(){return Q(Mt(this._map),e=>e[0])}values(){return Q(Mt(this._map),e=>e[1].content.getContent()[e[1].length-1])}entries(){return Q(Mt(this._map),e=>[e[0],e[1].content.getContent()[e[1].length-1]])}forEach(e){return this._map.forEach((t,n)=>{t.deleted||e(t.content.getContent()[t.length-1],n,this)}),{}}[Symbol.iterator](){return this.entries()}delete(e){null!==this.doc?ct(this.doc,t=>{Pt(t,this,e)}):this._prelimContent.delete(e)}set(e,t){return null!==this.doc?ct(this.doc,n=>{At(n,this,e,t)}):this._prelimContent.set(e,t),t}get(e){return Dt(this,e)}has(e){return((e,t)=>{const n=e._map.get(t);return void 0!==n&&!n.deleted})(this,e)}_write(e){e.writeTypeRef(dn)}}const Lt=(e,t)=>e===t||"object"==typeof e&&"object"==typeof t&&e&&t&&w(e,t);class Rt{constructor(e,t,n,r){this.left=e,this.right=t,this.index=n,this.currentAttributes=r}forward(){switch(null===this.right&&y(),this.right.content.constructor){case on:case cn:this.right.deleted||(this.index+=this.right.length);break;case sn:this.right.deleted||Ut(this.currentAttributes,this.right.content)}this.left=this.right,this.right=this.right.right}}const jt=(e,t,n)=>{for(;null!==t.right&&n>0;){switch(t.right.content.constructor){case on:case cn:t.right.deleted||(n{const r=new Map,o=ht(t,n);if(o){const t=new Rt(o.p.left,o.p,o.index,r);return jt(e,t,n-o.index)}{const o=new Rt(null,t._start,0,r);return jt(e,o,n)}},qt=(e,t,n,r)=>{for(;null!==n.right&&(!0===n.right.deleted||n.right.content.constructor===sn&&Lt(r.get(n.right.content.key),n.right.content.value));)n.right.deleted||r.delete(n.right.content.key),n.forward();const o=e.doc,i=o.clientID;let s=n.left;const a=n.right;r.forEach((n,r)=>{s=new En(Le(i,Qe(o.store,i)),s,s&&s.lastId,a,a&&a.id,t,null,new sn(r,n)),s.integrate(e,0)})},Ut=(e,t)=>{const{key:n,value:r}=t;null===r?e.delete(n):e.set(n,r)},Nt=(e,t)=>{for(;null!==e.right&&(e.right.deleted||e.right.content.constructor===sn&&Lt(t[e.right.content.key]||null,e.right.content.value));)e.forward()},Wt=(e,t,n,r)=>{const o=e.doc,i=o.clientID,s=new Map;for(const a in r){const l=r[a],c=n.currentAttributes.get(a)||null;if(!Lt(c,l)){s.set(a,c);const{left:r,right:u}=n;n.right=new En(Le(i,Qe(o.store,i)),r,r&&r.lastId,u,u&&u.id,t,null,new sn(a,l)),n.right.integrate(e,0),n.forward()}}return s},Kt=(e,t,n,r,o)=>{n.currentAttributes.forEach((e,t)=>{void 0===o[t]&&(o[t]=null)});const i=e.doc,s=i.clientID;Nt(n,o);const a=Wt(e,t,n,o),l=r.constructor===String?new cn(r):new on(r);let{left:c,right:u,index:_}=n;t._searchMarker&&mt(t._searchMarker,n.index,l.getLength()),u=new En(Le(s,Qe(i.store,s)),c,c&&c.lastId,u,u&&u.id,t,null,l),u.integrate(e,0),n.right=u,n.index=_,n.forward(),qt(e,t,n,a)},Ft=(e,t,n,r,o)=>{const i=e.doc,s=i.clientID;Nt(n,o);const a=Wt(e,t,n,o);for(;r>0&&null!==n.right;){if(!n.right.deleted)switch(n.right.content.constructor){case sn:{const{key:t,value:r}=n.right.content,i=o[t];void 0!==i&&(Lt(i,r)?a.delete(t):a.set(t,r),n.right.delete(e));break}case on:case cn:r0){let o="";for(;r>0;r--)o+="\n";n.right=new En(Le(s,Qe(i.store,s)),n.left,n.left&&n.left.lastId,n.right,n.right&&n.right.id,t,null,new cn(o)),n.right.integrate(e,0),n.forward()}qt(e,t,n,a)},$t=(e,t,n,r,o)=>{for(;n&&n.content.constructor!==cn&&n.content.constructor!==on;)n.deleted||n.content.constructor!==sn||Ut(o,n.content),n=n.right;let i=0;for(;t!==n;){if(!t.deleted){const n=t.content;switch(n.constructor){case sn:{const{key:s,value:a}=n;(o.get(s)||null)===a&&(r.get(s)||null)!==a||(t.delete(e),i++);break}}}t=t.right}return i},Ht=(e,t,n)=>{const o=n,i=Object(r.b)(t.currentAttributes),s=t.right;for(;n>0&&null!==t.right;){if(!1===t.right.deleted)switch(t.right.content.constructor){case on:case cn:n{const t=this._delta,n=new Map,r=new Map;let o=this.target._start,i=null;const s={};let a="",l=0,c=0;const u=()=>{if(null!==i){let e;switch(i){case"delete":e={delete:c},c=0;break;case"insert":e={insert:a},n.size>0&&(e.attributes={},n.forEach((t,n)=>{null!==t&&(e.attributes[n]=t)})),a="";break;case"retain":if(e={retain:l},Object.keys(s).length>0){e.attributes={};for(const t in s)e.attributes[t]=s[t]}l=0}t.push(e),i=null}};for(;null!==o;){switch(o.content.constructor){case on:this.adds(o)?this.deletes(o)||(u(),i="insert",a=o.content.embed,u()):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=1):o.deleted||("retain"!==i&&(u(),i="retain"),l+=1);break;case cn:this.adds(o)?this.deletes(o)||("insert"!==i&&(u(),i="insert"),a+=o.content.str):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=o.length):o.deleted||("retain"!==i&&(u(),i="retain"),l+=o.length);break;case sn:{const{key:t,value:a}=o.content;if(this.adds(o)){if(!this.deletes(o)){const l=n.get(t)||null;Lt(l,a)?o.delete(e):("retain"===i&&u(),Lt(a,r.get(t)||null)?delete s[t]:s[t]=a)}}else if(this.deletes(o)){r.set(t,a);const e=n.get(t)||null;Lt(e,a)||("retain"===i&&u(),s[t]=e)}else if(!o.deleted){r.set(t,a);const n=s[t];void 0!==n&&(Lt(n,a)?o.delete(e):("retain"===i&&u(),null===a?s[t]=a:delete s[t]))}o.deleted||("insert"===i&&u(),Ut(n,o.content));break}}o=o.right}for(u();t.length>0;){const e=t[t.length-1];if(void 0===e.retain||void 0!==e.attributes)break;t.pop()}})}return this._delta}}class zt extends yt{constructor(e){super(),this._pending=void 0!==e?[()=>this.insert(0,e)]:[],this._searchMarker=[]}get length(){return this._length}_integrate(e,t){super._integrate(e,t);try{this._pending.forEach(e=>e())}catch(e){console.error(e)}this._pending=null}_copy(){return new zt}_callObserver(e,t){super._callObserver(e,t);const n=new Gt(this,e),o=e.doc;if(!e.local){let t=!1;for(const[n,r]of e.afterState.entries()){const i=e.beforeState.get(n)||0;if(r!==i&&(nt(e,o.store.clients.get(n),i,r,e=>{e.deleted||e.content.constructor!==sn||(t=!0)}),t))break}t||X(e,e.deleteSet,e=>{e instanceof tn||t||e.parent===this&&e.content.constructor===sn&&(t=!0)}),ct(o,e=>{t?(e=>{let t=0;ct(e.doc,n=>{let o=e._start,i=e._start,s=Object(r.c)();const a=Object(r.b)(s);for(;i;){if(!1===i.deleted)switch(i.content.constructor){case sn:Ut(a,i.content);break;case on:case cn:t+=$t(n,o,i,s,a),s=Object(r.b)(a),o=i}i=i.right}})})(this):X(e,e.deleteSet,t=>{t instanceof tn||t.parent===this&&((e,t)=>{for(;t&&t.right&&(t.right.deleted||t.right.content.constructor!==cn&&t.right.content.constructor!==on);)t=t.right;const n=new Set;for(;t&&(t.deleted||t.content.constructor!==cn&&t.content.constructor!==on);){if(!t.deleted&&t.content.constructor===sn){const r=t.content.key;n.has(r)?t.delete(e):n.add(r)}t=t.left}})(e,t)})})}bt(this,e,n)}toString(){let e="",t=this._start;for(;null!==t;)!t.deleted&&t.countable&&t.content.constructor===cn&&(e+=t.content.str),t=t.right;return e}toJSON(){return this.toString()}applyDelta(e,{sanitize:t=!0}={}){null!==this.doc?ct(this.doc,n=>{const r=new Rt(null,this._start,0,new Map);for(let o=0;o0)&&Kt(n,this,r,s,i.attributes||{})}else void 0!==i.retain?Ft(n,this,r,i.retain,i.attributes||{}):void 0!==i.delete&&Ht(n,r,i.delete)}}):this._pending.push(()=>this.applyDelta(e))}toDelta(e,t,n){const r=[],o=new Map,i=this.doc;let s="",a=this._start;function l(){if(s.length>0){const e={};let t=!1;o.forEach((n,r)=>{t=!0,e[r]=n});const n={insert:s};t&&(n.attributes=e),r.push(n),s=""}}return ct(i,i=>{for(e&&Ge(i,e),t&&Ge(i,t);null!==a;){if(He(a,e)||void 0!==t&&He(a,t))switch(a.content.constructor){case cn:{const r=o.get("ychange");void 0===e||He(a,e)?void 0===t||He(a,t)?void 0!==r&&(l(),o.delete("ychange")):void 0!==r&&r.user===a.id.client&&"added"===r.state||(l(),o.set("ychange",n?n("added",a.id):{type:"added"})):void 0!==r&&r.user===a.id.client&&"removed"===r.state||(l(),o.set("ychange",n?n("removed",a.id):{type:"removed"})),s+=a.content.str;break}case on:{l();const e={insert:a.content.embed};if(o.size>0){const t={};e.attributes=t,o.forEach((e,n)=>{t[n]=e})}r.push(e);break}case sn:He(a,e)&&(l(),Ut(o,a.content))}a=a.right}l()},Ge),r}insert(e,t,n){if(t.length<=0)return;const r=this.doc;null!==r?ct(r,r=>{const o=Bt(r,this,e);n||(n={},o.currentAttributes.forEach((e,t)=>{n[t]=e})),Kt(r,this,o,t,n)}):this._pending.push(()=>this.insert(e,t,n))}insertEmbed(e,t,n={}){if(t.constructor!==Object)throw new Error("Embed must be an Object");const r=this.doc;null!==r?ct(r,r=>{const o=Bt(r,this,e);Kt(r,this,o,t,n)}):this._pending.push(()=>this.insertEmbed(e,t,n))}delete(e,t){if(0===t)return;const n=this.doc;null!==n?ct(n,n=>{Ht(n,Bt(n,this,e),t)}):this._pending.push(()=>this.delete(e,t))}format(e,t,n){if(0===t)return;const r=this.doc;null!==r?ct(r,r=>{const o=Bt(r,this,e);null!==o.right&&Ft(r,this,o,t,n)}):this._pending.push(()=>this.format(e,t,n))}_write(e){e.writeTypeRef(fn)}}class Vt{constructor(e,t=(()=>!0)){this._filter=t,this._root=e,this._currentNode=e._start,this._firstCall=!0}[Symbol.iterator](){return this}next(){let e=this._currentNode,t=e.content.type;if(null!==e&&(!this._firstCall||e.deleted||!this._filter(t)))do{if(t=e.content.type,e.deleted||t.constructor!==Yt&&t.constructor!==Qt||null===t._start)for(;null!==e;){if(null!==e.right){e=e.right;break}e=e.parent===this._root?null:e.parent._item}else e=t._start}while(null!==e&&(e.deleted||!this._filter(e.content.type)));return this._firstCall=!1,null===e?{value:void 0,done:!0}:(this._currentNode=e,{value:e.content.type,done:!1})}}class Qt extends yt{constructor(){super(),this._prelimContent=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new Qt}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}createTreeWalker(e){return new Vt(this,e)}querySelector(e){e=e.toUpperCase();const t=new Vt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e).next();return t.done?null:t.value}querySelectorAll(e){return e=e.toUpperCase(),Array.from(new Vt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e))}_callObserver(e,t){bt(this,e,new Jt(this,t,e))}toString(){return Et(this,e=>e.toString()).join("")}toJSON(){return this.toString()}toDOM(e=document,t={},n){const r=e.createDocumentFragment();return void 0!==n&&n._createAssociation(r,this),vt(this,o=>{r.insertBefore(o.toDOM(e,t,n),null)}),r}insert(e,t){null!==this.doc?ct(this.doc,n=>{Ot(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}delete(e,t=1){null!==this.doc?ct(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,t)}toArray(){return gt(this)}_write(e){e.writeTypeRef(hn)}}class Yt extends Qt{constructor(e="UNDEFINED"){super(),this.nodeName=e,this._prelimAttrs=new Map}_integrate(e,t){super._integrate(e,t),this._prelimAttrs.forEach((e,t)=>{this.setAttribute(t,e)}),this._prelimAttrs=null}_copy(){return new Yt(this.nodeName)}toString(){const e=this.getAttributes(),t=[],n=[];for(const t in e)n.push(t);n.sort();const r=n.length;for(let o=0;o0?" "+t.join(" "):""}>${super.toString()}`}removeAttribute(e){null!==this.doc?ct(this.doc,t=>{Pt(t,this,e)}):this._prelimAttrs.delete(e)}setAttribute(e,t){null!==this.doc?ct(this.doc,n=>{At(n,this,e,t)}):this._prelimAttrs.set(e,t)}getAttribute(e){return Dt(this,e)}getAttributes(e){return(e=>{const t={};return e._map.forEach((e,n)=>{e.deleted||(t[n]=e.content.getContent()[e.length-1])}),t})(this)}toDOM(e=document,t={},n){const r=e.createElement(this.nodeName),o=this.getAttributes();for(const e in o)r.setAttribute(e,o[e]);return vt(this,o=>{r.appendChild(o.toDOM(e,t,n))}),void 0!==n&&n._createAssociation(r,this),r}_write(e){e.writeTypeRef(pn),e.writeKey(this.nodeName)}}class Jt extends ut{constructor(e,t,n){super(e,n),this.childListChanged=!1,this.attributesChanged=new Set,t.forEach(e=>{null===e?this.childListChanged=!0:this.attributesChanged.add(e)})}}class Xt extends St{constructor(e){super(),this.hookName=e}_copy(){return new Xt(this.hookName)}toDOM(e=document,t={},n){const r=t[this.hookName];let o;return o=void 0!==r?r.createDom(this):document.createElement(this.hookName),o.setAttribute("data-yjs-hook",this.hookName),void 0!==n&&n._createAssociation(o,this),o}_write(e){e.writeTypeRef(mn),e.writeKey(this.hookName)}}class Zt extends zt{_copy(){return new Zt}toDOM(e=document,t,n){const r=e.createTextNode(this.toString());return void 0!==n&&n._createAssociation(r,this),r}toString(){return this.toDelta().map(e=>{const t=[];for(const n in e.attributes){const r=[];for(const t in e.attributes[n])r.push({key:t,value:e.attributes[n][t]});r.sort((e,t)=>e.keye.nodeName=0;e--)n+=``;return n}).join("")}toJSON(){return this.toString()}_write(e){e.writeTypeRef(bn)}}class en{constructor(e,t){this.id=e,this.length=t}get deleted(){throw b()}mergeWith(e){return!1}write(e,t,n){throw b()}integrate(e,t){throw b()}}class tn extends en{get deleted(){return!0}delete(){}mergeWith(e){return this.length+=e.length,!0}integrate(e,t){t>0&&(this.id.clock+=t,this.length-=t),Ye(e.doc.store,this)}write(e,t){e.writeInfo(0),e.writeLen(this.length-t)}getMissing(e,t){return null}}class nn{constructor(e){this.content=e}getLength(){return 1}getContent(){return[this.content]}isCountable(){return!0}copy(){return new nn(this.content)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeBuf(this.content)}getRef(){return 3}}class rn{constructor(e){this.len=e}getLength(){return this.len}getContent(){return[]}isCountable(){return!1}copy(){return new rn(this.len)}splice(e){const t=new rn(this.len-e);return this.len=e,t}mergeWith(e){return this.len+=e.len,!0}integrate(e,t){te(e.deleteSet,t.id.client,t.id.clock,this.len),t.markDeleted()}delete(e){}gc(e){}write(e,t){e.writeLen(this.len-t)}getRef(){return 1}}class on{constructor(e){this.embed=e}getLength(){return 1}getContent(){return[this.embed]}isCountable(){return!0}copy(){return new on(this.embed)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeJSON(this.embed)}getRef(){return 5}}class sn{constructor(e,t){this.key=e,this.value=t}getLength(){return 1}getContent(){return[]}isCountable(){return!1}copy(){return new sn(this.key,this.value)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){t.parent._searchMarker=null}delete(e){}gc(e){}write(e,t){e.writeKey(this.key),e.writeJSON(this.value)}getRef(){return 6}}class an{constructor(e){this.arr=e}getLength(){return this.arr.length}getContent(){return this.arr}isCountable(){return!0}copy(){return new an(this.arr)}splice(e){const t=new an(this.arr.slice(e));return this.arr=this.arr.slice(0,e),t}mergeWith(e){return this.arr=this.arr.concat(e.arr),!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){const n=this.arr.length;e.writeLen(n-t);for(let r=t;rnew It,e=>new St,e=>new zt,e=>new Yt(e.readKey()),e=>new Qt,e=>new Xt(e.readKey()),e=>new Zt],_n=0,dn=1,fn=2,pn=3,hn=4,mn=5,bn=6;class yn{constructor(e){this.type=e}getLength(){return 1}getContent(){return[this.type]}isCountable(){return!0}copy(){return new yn(this.type._copy())}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){this.type._integrate(e.doc,t)}delete(e){let t=this.type._start;for(;null!==t;)t.deleted?e._mergeStructs.push(t):t.delete(e),t=t.right;this.type._map.forEach(t=>{t.deleted?e._mergeStructs.push(t):t.delete(e)}),e.changed.delete(this.type)}gc(e){let t=this.type._start;for(;null!==t;)t.gc(e,!0),t=t.right;this.type._start=null,this.type._map.forEach(t=>{for(;null!==t;)t.gc(e,!0),t=t.left}),this.type._map=new Map}write(e,t){this.type._write(e)}getRef(){return 7}}const gn=(e,t)=>{let n,r=t,o=0;do{o>0&&(r=Le(r.client,r.clock+o)),n=Xe(e,r),o=r.clock-n.id.clock,r=n.redone}while(null!==r&&n instanceof En);return{item:n,diff:o}},vn=(e,t,n)=>{const{client:r,clock:o}=t.id,i=new En(Le(r,o+n),t,Le(r,o+n-1),t.right,t.rightOrigin,t.parent,t.parentSub,t.content.splice(n));return t.deleted&&i.markDeleted(),t.keep&&(i.keep=!0),null!==t.redone&&(i.redone=Le(t.redone.client,t.redone.clock+n)),t.right=i,null!==i.right&&(i.right.left=i),e._mergeStructs.push(i),null!==i.parentSub&&null===i.right&&i.parent._map.set(i.parentSub,i),t.length=n,i};class En extends en{constructor(e,t,n,r,o,i,s,a){super(e,a.getLength()),this.origin=n,this.left=t,this.right=r,this.rightOrigin=o,this.parent=i,this.parentSub=s,this.redone=null,this.content=a,this.info=this.content.isCountable()?g.b:0}set marker(e){(this.info&g.d)>0!==e&&(this.info^=g.d)}get marker(){return(this.info&g.d)>0}get keep(){return(this.info&g.a)>0}set keep(e){this.keep!==e&&(this.info^=g.a)}get countable(){return(this.info&g.b)>0}get deleted(){return(this.info&g.c)>0}set deleted(e){this.deleted!==e&&(this.info^=g.c)}markDeleted(){this.info|=g.c}getMissing(e,t){if(this.origin&&this.origin.client!==this.id.client&&this.origin.clock>=Qe(t,this.origin.client))return this.origin.client;if(this.rightOrigin&&this.rightOrigin.client!==this.id.client&&this.rightOrigin.clock>=Qe(t,this.rightOrigin.client))return this.rightOrigin.client;if(this.parent&&this.parent.constructor===Ce&&this.id.client!==this.parent.client&&this.parent.clock>=Qe(t,this.parent.client))return this.parent.client;if(this.origin&&(this.left=tt(e,t,this.origin),this.origin=this.left.lastId),this.rightOrigin&&(this.right=et(e,this.rightOrigin),this.rightOrigin=this.right.id),(this.left&&this.left.constructor===tn||this.right&&this.right.constructor===tn)&&(this.parent=null),this.parent){if(this.parent.constructor===Ce){const e=Xe(t,this.parent);e.constructor===tn?this.parent=null:this.parent=e.content.type}}else this.left&&this.left.constructor===En&&(this.parent=this.left.parent,this.parentSub=this.left.parentSub),this.right&&this.right.constructor===En&&(this.parent=this.right.parent,this.parentSub=this.right.parentSub);return null}integrate(e,t){if(t>0&&(this.id.clock+=t,this.left=tt(e,e.doc.store,Le(this.id.client,this.id.clock-1)),this.origin=this.left.lastId,this.content=this.content.splice(t),this.length-=t),this.parent){if(!this.left&&(!this.right||null!==this.right.left)||this.left&&this.left.right!==this.right){let t,n=this.left;if(null!==n)t=n.right;else if(null!==this.parentSub)for(t=this.parent._map.get(this.parentSub)||null;null!==t&&null!==t.left;)t=t.left;else t=this.parent._start;const r=new Set,o=new Set;for(;null!==t&&t!==this.right;){if(o.add(t),r.add(t),Se(this.origin,t.origin)){if(t.id.client{const i=t._item;(null===i||i.id.clock<(e.beforeState.get(i.id.client)||0)&&!i.deleted)&&Object(r.e)(e.changed,t,o).add(n)})(e,this.parent,this.parentSub),(null!==this.parent._item&&this.parent._item.deleted||null!==this.parentSub&&null!==this.right)&&this.delete(e)}else new tn(this.id,this.length).integrate(e,0)}get next(){let e=this.right;for(;null!==e&&e.deleted;)e=e.right;return e}get prev(){let e=this.left;for(;null!==e&&e.deleted;)e=e.left;return e}get lastId(){return 1===this.length?this.id:Le(this.id.client,this.id.clock+this.length-1)}mergeWith(e){return!!(Se(e.origin,this.lastId)&&this.right===e&&Se(this.rightOrigin,e.rightOrigin)&&this.id.client===e.id.client&&this.id.clock+this.length===e.id.clock&&this.deleted===e.deleted&&null===this.redone&&null===e.redone&&this.content.constructor===e.content.constructor&&this.content.mergeWith(e.content))&&(e.keep&&(this.keep=!0),this.right=e.right,null!==this.right&&(this.right.left=this),this.length+=e.length,!0)}delete(e){if(!this.deleted){const t=this.parent;this.countable&&null===this.parentSub&&(t._length-=this.length),this.markDeleted(),te(e.deleteSet,this.id.client,this.id.clock,this.length),Object(r.e)(e.changed,t,o).add(this.parentSub),this.content.delete(e)}}gc(e,t){if(!this.deleted)throw y();this.content.gc(e),t?((e,t,n)=>{const r=e.clients.get(t.id.client);r[Je(r,t.id.clock)]=n})(e,this,new tn(this.id,this.length)):this.content=new rn(this.length)}write(e,t){const n=t>0?Le(this.id.client,this.id.clock+t-1):this.origin,r=this.rightOrigin,o=this.parentSub,i=this.content.getRef()&g.i|(null===n?0:g.g)|(null===r?0:g.f)|(null===o?0:g.e);if(e.writeInfo(i),null!==n&&e.writeLeftID(n),null!==r&&e.writeRightID(r),null===n&&null===r){const t=this.parent,n=t._item;if(null===n){const n=Re(t);e.writeParentInfo(!0),e.writeString(n)}else e.writeParentInfo(!1),e.writeLeftID(n.id);null!==o&&e.writeString(o)}this.content.write(e,t)}}const xn=(e,t)=>wn[t&g.i](e),wn=[()=>{throw y()},e=>new rn(e.readLen()),e=>{const t=e.readLen(),n=[];for(let r=0;rnew nn(e.readBuf()),e=>new cn(e.readString()),e=>new on(e.readJSON()),e=>new sn(e.readString(),e.readJSON()),e=>new yn(un[e.readTypeRef()](e)),e=>{const t=e.readLen(),n=[];for(let r=0;rt.key===e&&null!==this.onmessage&&this.onmessage({data:h.d(t.newValue||"")}))}postMessage(e){On.a.setItem(this.room,h.e(h.b(e)))}}:BroadcastChannel,An=e=>r.e(kn,e,()=>{const t=new Set,n=new Pn(e);return n.onmessage=e=>t.forEach(t=>t(e.data)),{bc:n,subs:t}}),Dn=(e,t)=>{const n=An(e);n.bc.postMessage(t),n.subs.forEach(e=>e(t))},Mn=(e,t)=>{c.m(e,0);const n=(e=>Pe(e,new pe))(t);c.n(e,n)},Tn=(e,t,n)=>{c.m(e,1),c.n(e,((e,t)=>xe(e,t,new me))(t,n))},In=(e,t,n)=>{Ee(t,u.j(e),n)},Cn=In,Sn=(e,t,n,r)=>{const o=u.i(e);switch(o){case 0:((e,t,n)=>{Tn(t,n,u.j(e))})(e,t,n);break;case 1:In(e,n,r);break;case 2:Cn(e,n,r);break;default:throw new Error("Unknown message type")}return o};class Ln extends a{constructor(e){super(),this.doc=e,this.states=new Map,this.meta=new Map,this._checkInterval=setInterval(()=>{const t=S();null!==this.getLocalState()&&15e3<=t-this.meta.get(e.clientID).lastUpdated&&this.setLocalState(this.getLocalState());const n=[];this.meta.forEach((r,o)=>{o!==e.clientID&&3e4<=t-r.lastUpdated&&this.states.has(o)&&n.push(o)}),n.length>0&&Rn(this,n,"timeout")},l.c(3e3)),e.on("destroy",()=>{this.destroy()}),this.setLocalState({})}destroy(){super.destroy(),clearInterval(this._checkInterval)}getLocalState(){return this.states.get(this.doc.clientID)||null}setLocalState(e){const t=this.doc.clientID,n=this.meta.get(t),r=void 0===n?0:n.clock+1,o=this.states.get(t);null===e?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:r,lastUpdated:S()});const i=[],s=[],a=[],l=[];null===e?l.push(t):null==o?null!=e&&i.push(t):(s.push(t),k(o,e)||a.push(t)),(i.length>0||a.length>0||l.length>0)&&this.emit("change",[{added:i,updated:a,removed:l},"local"]),this.emit("update",[{added:i,updated:s,removed:l},"local"])}setLocalStateField(e,t){const n=this.getLocalState();null!==n&&(n[e]=t,this.setLocalState(n))}getStates(){return this.states}}const Rn=(e,t,n)=>{const r=[];for(let n=0;n0&&(e.emit("change",[{added:[],updated:[],removed:r},n]),e.emit("update",[{added:[],updated:[],removed:r},n]))},jn=(e,t,n=e.states)=>{const r=t.length,o=c.f();c.m(o,r);for(let i=0;i{let e=!0;return(t,n)=>{if(e){e=!1;try{t()}finally{e=!0}}else void 0!==n&&n()}},qn=(e,t)=>console.warn(`Permission denied to access ${e.url}.\n${t}`),Un=(e,t,n)=>{const r=u.e(t),o=c.f();switch(u.i(r)){case 0:{c.m(o,0);const t=Sn(r,o,e.doc,e);n&&1===t&&!e.synced&&(e.synced=!0);break}case 3:c.m(o,1),c.n(o,jn(e.awareness,Array.from(e.awareness.getStates().keys())));break;case 1:((e,t,n)=>{const r=u.e(t),o=S(),i=[],s=[],a=[],l=[],c=u.i(r);for(let t=0;t0||a.length>0||l.length>0)&&e.emit("change",[{added:i,updated:a,removed:l},n]),(i.length>0||s.length>0||l.length>0)&&e.emit("update",[{added:i,updated:s,removed:l},n])})(e.awareness,u.j(r),e);break;case 2:((e,t,n)=>{switch(u.i(e)){case 0:n(t,u.h(e))}})(r,e.doc,qn);break;default:return console.error("Unable to compute message"),o}return o},Nn=e=>{if(e.shouldConnect&&null===e.ws){const t=new e._WS(e.url);t.binaryType="arraybuffer",e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=n=>{e.wsLastMessageReceived=S();const r=Un(e,new Uint8Array(n.data),!0);c.g(r)>1&&t.send(c.h(r))},t.onclose=()=>{e.ws=null,e.wsconnecting=!1,e.wsconnected?(e.wsconnected=!1,e.synced=!1,Rn(e.awareness,Array.from(e.awareness.getStates().keys()),e),e.emit("status",[{status:"disconnected"}])):e.wsUnsuccessfulReconnects++,setTimeout(Nn,l.g(1200*l.e(e.wsUnsuccessfulReconnects+1),2500),e)},t.onopen=()=>{e.wsLastMessageReceived=S(),e.wsconnecting=!1,e.wsconnected=!0,e.wsUnsuccessfulReconnects=0,e.emit("status",[{status:"connected"}]);const n=c.f();if(c.m(n,0),Mn(n,e.doc),t.send(c.h(n)),null!==e.awareness.getLocalState()){const n=c.f();c.m(n,1),c.n(n,jn(e.awareness,[e.doc.clientID])),t.send(c.h(n))}}}},Wn=(e,t)=>{e.wsconnected&&e.ws.send(t),e.bcconnected&&e.mux(()=>{Dn(e.url,t)})};class Kn extends a{constructor(e,t,n,{connect:r=!0,awareness:o=new Ln(n),params:i={},WebSocketPolyfill:s=WebSocket,resyncInterval:a=-1}={}){for(super();"/"===e[e.length-1];)e=e.slice(0,e.length-1);const l=(e=>((e,t)=>{const n=[];for(const r in e)n.push(t(e[r],r));return n})(e,(e,t)=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`).join("&"))(i);this.bcChannel=e+"/"+t,this.url=e+"/"+t+(0===l.length?"":"?"+l),this.roomname=t,this.doc=n,this._WS=s,this._localAwarenessState={},this.awareness=o,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.wsUnsuccessfulReconnects=0,this.mux=Bn(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=r,this._resyncInterval=0,a>0&&(this._resyncInterval=setInterval(()=>{if(this.ws){this.synced||(alert("\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message.."),console.warn("Client was unsynced anyway"));const e=c.f();c.m(e,0),Mn(e,n),this.ws.send(c.h(e))}},a)),this._bcSubscriber=e=>{this.mux(()=>{const t=Un(this,new Uint8Array(e),!1);c.g(t)>1&&Dn(this.bcChannel,c.h(t))})},this._updateHandler=(e,t)=>{if(t!==this||null===t){const t=c.f();c.m(t,0),((e,t)=>{c.m(e,2),c.n(e,t)})(t,e),Wn(this,c.h(t))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:n},r)=>{const i=e.concat(t).concat(n),s=c.f();c.m(s,1),c.n(s,jn(o,i)),Wn(this,c.h(s))},window.addEventListener("beforeunload",()=>{Rn(this.awareness,[n.clientID],"window unload")}),o.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval(()=>{this.wsconnected&&3e4{const e=c.f();c.m(e,0),Mn(e,this.doc),Dn(this.bcChannel,c.h(e));const t=c.f();c.m(t,0),Tn(t,this.doc),Dn(this.bcChannel,c.h(t));const n=c.f();c.m(n,3),Dn(this.bcChannel,c.h(n));const r=c.f();c.m(r,1),c.n(r,jn(this.awareness,[this.doc.clientID])),Dn(this.bcChannel,c.h(r))})}disconnectBc(){const e=c.f();var t,n;c.m(e,1),c.n(e,jn(this.awareness,[this.doc.clientID],new Map)),Wn(this,c.h(e)),this.bcconnected&&(t=this.bcChannel,n=this._bcSubscriber,An(t).subs.delete(n),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),null!==this.ws&&this.ws.close()}connect(){this.shouldConnect=!0,this.wsconnected||null!==this.ws||(Nn(this),this.connectBc())}}const Fn=(e,t,n,r,o)=>{try{if(t&&t.cursor&&n!==r.clientID){const i=t.user||{},s=i.color||"#ffa500",a=i.name||"User: "+n;e.createCursor(n.toString(),a,s);const l=We(Be(t.cursor.anchor),r),c=We(Be(t.cursor.head),r);l&&c&&l.type===o&&e.moveCursor(n.toString(),{index:l.index,length:c.index-l.index})}else e.removeCursor(n.toString())}catch(e){console.error(e)}};class $n{constructor(e,t,n){const r=Bn(),o=e.doc;this.mux=r,this.type=e,this.doc=o,this.quill=t;const i=t.getModule("cursors")||null;this.quillCursors=i,this._negatedUsedFormats={},this.awareness=n,this._awarenessChange=({added:t,removed:r,updated:s})=>{const a=n.getStates();t.forEach(t=>{Fn(i,a.get(t),t,o,e)}),s.forEach(t=>{Fn(i,a.get(t),t,o,e)}),r.forEach(e=>{i.removeCursor(e.toString())})},this._typeObserver=e=>{r(()=>{const n=e.delta,r=[];for(let e=0;e{if(a&&a.ops){const t=a.ops;t.forEach(e=>{if(void 0!==e.attributes)for(let t in e.attributes)void 0===this._negatedUsedFormats[t]&&(this._negatedUsedFormats[t]=!1)}),r(()=>{e.applyDelta(t)})}if(n&&i){const r=t.getSelection(),s=n.getLocalState();if(null===r)null!==n.getLocalState()&&n.setLocalStateField("cursor",null);else{const t=Ne(e,r.index),o=Ne(e,r.index+r.length);s&&s.cursor&&Ke(t,s.cursor.anchor)&&Ke(o,s.cursor.head)||n.setLocalStateField("cursor",{anchor:t,head:o})}n.getStates().forEach((t,n)=>{Fn(i,t,n,o,e)})}},t.on("editor-change",this._quillObserver),r(()=>{t.setContents(e.toDelta())}),null!==i&&n&&(n.getStates().forEach((t,n)=>{Fn(i,t,n,o,e)}),n.on("change",this._awarenessChange))}destroy(){this.type.unobserve(this._typeObserver),this.quill.off(this._quillObserver),this.awareness&&this.awareness.off("change",this._awarenessChange)}}var Hn=n(7),Gn=n.n(Hn),zn=n(26),Vn=n.n(zn);function Qn(e){var t=e.getBoundingClientRect();return{width:t.width,height:t.height,top:t.top,right:t.right,bottom:t.bottom,left:t.left,x:t.left,y:t.top}}function Yn(e){if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Jn(e){var t=Yn(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Xn(e){return e instanceof Yn(e).Element||e instanceof Element}function Zn(e){return e instanceof Yn(e).HTMLElement||e instanceof HTMLElement}function er(e){return e?(e.nodeName||"").toLowerCase():null}function tr(e){return((Xn(e)?e.ownerDocument:e.document)||window.document).documentElement}function nr(e){return Qn(tr(e)).left+Jn(e).scrollLeft}function rr(e){return Yn(e).getComputedStyle(e)}function or(e){var t=rr(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function ir(e,t,n){void 0===n&&(n=!1);var r,o,i=tr(t),s=Qn(e),a=Zn(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==er(t)||or(i))&&(l=(r=t)!==Yn(r)&&Zn(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:Jn(r)),Zn(t)?((c=Qn(t)).x+=t.clientLeft,c.y+=t.clientTop):i&&(c.x=nr(i))),{x:s.left+l.scrollLeft-c.x,y:s.top+l.scrollTop-c.y,width:s.width,height:s.height}}function sr(e){return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}function ar(e){return"html"===er(e)?e:e.assignedSlot||e.parentNode||e.host||tr(e)}function lr(e,t){void 0===t&&(t=[]);var n=function e(t){return["html","body","#document"].indexOf(er(t))>=0?t.ownerDocument.body:Zn(t)&&or(t)?t:e(ar(t))}(e),r="body"===er(n),o=Yn(n),i=r?[o].concat(o.visualViewport||[],or(n)?n:[]):n,s=t.concat(i);return r?s:s.concat(lr(ar(i)))}function cr(e){return["table","td","th"].indexOf(er(e))>=0}function ur(e){if(!Zn(e)||"fixed"===rr(e).position)return null;var t=e.offsetParent;if(t){var n=tr(t);if("body"===er(t)&&"static"===rr(t).position&&"static"!==rr(n).position)return n}return t}function _r(e){for(var t=Yn(e),n=ur(e);n&&cr(n)&&"static"===rr(n).position;)n=ur(n);return n&&"body"===er(n)&&"static"===rr(n).position?t:n||function(e){for(var t=ar(e);Zn(t)&&["html","body"].indexOf(er(t))<0;){var n=rr(t);if("none"!==n.transform||"none"!==n.perspective||n.willChange&&"auto"!==n.willChange)return t;t=t.parentNode}return null}(e)||t}var dr="top",fr="bottom",pr="right",hr="left",mr=[dr,fr,pr,hr],br=mr.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),yr=[].concat(mr,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),gr=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function vr(e){var t=new Map,n=new Set,r=[];return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||function e(o){n.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(r){if(!n.has(r)){var o=t.get(r);o&&e(o)}})),r.push(o)}(e)})),r}var Er={placement:"bottom",modifiers:[],strategy:"absolute"};function xr(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function Dr(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?kr(o):null,s=o?Pr(o):null,a=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(i){case dr:t={x:a,y:n.y-r.height};break;case fr:t={x:a,y:n.y+n.height};break;case pr:t={x:n.x+n.width,y:l};break;case hr:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=i?Ar(i):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case"start":t[c]=Math.floor(t[c])-Math.floor(n[u]/2-r[u]/2);break;case"end":t[c]=Math.floor(t[c])+Math.ceil(n[u]/2-r[u]/2)}}return t}var Mr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Tr(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.offsets,s=e.position,a=e.gpuAcceleration,l=e.adaptive,c=function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:Math.round(t*r)/r||0,y:Math.round(n*r)/r||0}}(i),u=c.x,_=c.y,d=i.hasOwnProperty("x"),f=i.hasOwnProperty("y"),p=hr,h=dr,m=window;if(l){var b=_r(n);b===Yn(n)&&(b=tr(n)),o===dr&&(h=fr,_-=b.clientHeight-r.height,_*=a?1:-1),o===hr&&(p=pr,u-=b.clientWidth-r.width,u*=a?1:-1)}var y,g=Object.assign({position:s},l&&Mr);return a?Object.assign(Object.assign({},g),{},((y={})[h]=f?"0":"",y[p]=d?"0":"",y.transform=(m.devicePixelRatio||1)<2?"translate("+u+"px, "+_+"px)":"translate3d("+u+"px, "+_+"px, 0)",y)):Object.assign(Object.assign({},g),{},((t={})[h]=f?_+"px":"",t[p]=d?u+"px":"",t.transform="",t))}var Ir={left:"right",right:"left",bottom:"top",top:"bottom"};function Cr(e){return e.replace(/left|right|bottom|top/g,(function(e){return Ir[e]}))}var Sr={start:"end",end:"start"};function Lr(e){return e.replace(/start|end/g,(function(e){return Sr[e]}))}function Rr(e,t){var n,r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&((n=r)instanceof Yn(n).ShadowRoot||n instanceof ShadowRoot)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function jr(e){return Object.assign(Object.assign({},e),{},{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Br(e,t){return"viewport"===t?jr(function(e){var t=Yn(e),n=tr(e),r=t.visualViewport,o=n.clientWidth,i=n.clientHeight,s=0,a=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=r.offsetLeft,a=r.offsetTop)),{width:o,height:i,x:s+nr(e),y:a}}(e)):Zn(t)?function(e){var t=Qn(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):jr(function(e){var t=tr(e),n=Jn(e),r=e.ownerDocument.body,o=Math.max(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),i=Math.max(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-n.scrollLeft+nr(e),a=-n.scrollTop;return"rtl"===rr(r||t).direction&&(s+=Math.max(t.clientWidth,r?r.clientWidth:0)-o),{width:o,height:i,x:s,y:a}}(tr(e)))}function qr(e,t,n){var r="clippingParents"===t?function(e){var t=lr(ar(e)),n=["absolute","fixed"].indexOf(rr(e).position)>=0&&Zn(e)?_r(e):e;return Xn(n)?t.filter((function(e){return Xn(e)&&Rr(e,n)&&"body"!==er(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],s=o.reduce((function(t,n){var r=Br(e,n);return t.top=Math.max(r.top,t.top),t.right=Math.min(r.right,t.right),t.bottom=Math.min(r.bottom,t.bottom),t.left=Math.max(r.left,t.left),t}),Br(e,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Ur(e){return Object.assign(Object.assign({},{top:0,right:0,bottom:0,left:0}),e)}function Nr(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Wr(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,i=n.boundary,s=void 0===i?"clippingParents":i,a=n.rootBoundary,l=void 0===a?"viewport":a,c=n.elementContext,u=void 0===c?"popper":c,_=n.altBoundary,d=void 0!==_&&_,f=n.padding,p=void 0===f?0:f,h=Ur("number"!=typeof p?p:Nr(p,mr)),m="popper"===u?"reference":"popper",b=e.elements.reference,y=e.rects.popper,g=e.elements[d?m:u],v=qr(Xn(g)?g:g.contextElement||tr(e.elements.popper),s,l),E=Qn(b),x=Dr({reference:E,element:y,strategy:"absolute",placement:o}),w=jr(Object.assign(Object.assign({},y),x)),O="popper"===u?w:E,k={top:v.top-O.top+h.top,bottom:O.bottom-v.bottom+h.bottom,left:v.left-O.left+h.left,right:O.right-v.right+h.right},P=e.modifiersData.offset;if("popper"===u&&P){var A=P[o];Object.keys(k).forEach((function(e){var t=[pr,fr].indexOf(e)>=0?1:-1,n=[dr,fr].indexOf(e)>=0?"y":"x";k[e]+=A[n]*t}))}return k}function Kr(e,t,n){return Math.max(e,Math.min(t,n))}function Fr(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function $r(e){return[dr,pr,fr,hr].some((function(t){return e[t]>=0}))}var Hr=wr({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,s=r.resize,a=void 0===s||s,l=Yn(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&c.forEach((function(e){e.addEventListener("scroll",n.update,Or)})),a&&l.addEventListener("resize",n.update,Or),function(){i&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Or)})),a&&l.removeEventListener("resize",n.update,Or)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Dr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,s=void 0===i||i,a={placement:kr(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign(Object.assign({},t.styles.popper),Tr(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign(Object.assign({},t.styles.arrow),Tr(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];Zn(o)&&er(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Zn(r)&&er(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,s=yr.reduce((function(e,n){return e[n]=function(e,t,n){var r=kr(e),o=[hr,dr].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign(Object.assign({},t),{},{placement:e})):n,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[hr,pr].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,i),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,_=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,p=void 0===f||f,h=n.allowedAutoPlacements,m=t.options.placement,b=kr(m),y=l||(b===m||!p?[Cr(m)]:function(e){if("auto"===kr(e))return[];var t=Cr(e);return[Lr(e),t,Lr(t)]}(m)),g=[m].concat(y).reduce((function(e,n){return e.concat("auto"===kr(n)?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?yr:l,u=Pr(r),_=u?a?br:br.filter((function(e){return Pr(e)===u})):mr,d=_.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=_);var f=d.reduce((function(t,n){return t[n]=Wr(e,{placement:n,boundary:o,rootBoundary:i,padding:s})[kr(n)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:n,boundary:u,rootBoundary:_,padding:c,flipVariations:p,allowedAutoPlacements:h}):n)}),[]),v=t.rects.reference,E=t.rects.popper,x=new Map,w=!0,O=g[0],k=0;k=0,T=M?"width":"height",I=Wr(t,{placement:P,boundary:u,rootBoundary:_,altBoundary:d,padding:c}),C=M?D?pr:hr:D?fr:dr;v[T]>E[T]&&(C=Cr(C));var S=Cr(C),L=[];if(i&&L.push(I[A]<=0),a&&L.push(I[C]<=0,I[S]<=0),L.every((function(e){return e}))){O=P,w=!1;break}x.set(P,L)}if(w)for(var R=function(e){var t=g.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return O=t,"break"},j=p?3:1;j>0;j--){if("break"===R(j))break}t.placement!==O&&(t.modifiersData[r]._skip=!0,t.placement=O,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,_=n.padding,d=n.tether,f=void 0===d||d,p=n.tetherOffset,h=void 0===p?0:p,m=Wr(t,{boundary:l,rootBoundary:c,padding:_,altBoundary:u}),b=kr(t.placement),y=Pr(t.placement),g=!y,v=Ar(b),E="x"===v?"y":"x",x=t.modifiersData.popperOffsets,w=t.rects.reference,O=t.rects.popper,k="function"==typeof h?h(Object.assign(Object.assign({},t.rects),{},{placement:t.placement})):h,P={x:0,y:0};if(x){if(i){var A="y"===v?dr:hr,D="y"===v?fr:pr,M="y"===v?"height":"width",T=x[v],I=x[v]+m[A],C=x[v]-m[D],S=f?-O[M]/2:0,L="start"===y?w[M]:O[M],R="start"===y?-O[M]:-w[M],j=t.elements.arrow,B=f&&j?sr(j):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=q[A],N=q[D],W=Kr(0,w[M],B[M]),K=g?w[M]/2-S-W-U-k:L-W-U-k,F=g?-w[M]/2+S+W+N+k:R+W+N+k,$=t.elements.arrow&&_r(t.elements.arrow),H=$?"y"===v?$.clientTop||0:$.clientLeft||0:0,G=t.modifiersData.offset?t.modifiersData.offset[t.placement][v]:0,z=x[v]+K-G-H,V=x[v]+F-G,Q=Kr(f?Math.min(I,z):I,T,f?Math.max(C,V):C);x[v]=Q,P[v]=Q-T}if(a){var Y="x"===v?dr:hr,J="x"===v?fr:pr,X=x[E],Z=Kr(X+m[Y],X,X-m[J]);x[E]=Z,P[E]=Z-X}t.modifiersData[r]=P}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=n.elements.arrow,i=n.modifiersData.popperOffsets,s=kr(n.placement),a=Ar(s),l=[hr,pr].indexOf(s)>=0?"height":"width";if(o&&i){var c=n.modifiersData[r+"#persistent"].padding,u=sr(o),_="y"===a?dr:hr,d="y"===a?fr:pr,f=n.rects.reference[l]+n.rects.reference[a]-i[a]-n.rects.popper[l],p=i[a]-n.rects.reference[a],h=_r(o),m=h?"y"===a?h.clientHeight||0:h.clientWidth||0:0,b=f/2-p/2,y=c[_],g=m-u[l]-c[d],v=m/2-u[l]/2+b,E=Kr(y,v,g),x=a;n.modifiersData[r]=((t={})[x]=E,t.centerOffset=E-v,t)}},effect:function(e){var t=e.state,n=e.options,r=e.name,o=n.element,i=void 0===o?"[data-popper-arrow]":o,s=n.padding,a=void 0===s?0:s;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Rr(t.elements.popper,i)&&(t.elements.arrow=i,t.modifiersData[r+"#persistent"]={padding:Ur("number"!=typeof a?a:Nr(a,mr))})},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Wr(t,{elementContext:"reference"}),a=Wr(t,{altBoundary:!0}),l=Fr(s,r),c=Fr(a,o,i),u=$r(l),_=$r(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:_},t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-reference-hidden":u,"data-popper-escaped":_})}}]}),Gr={passive:!0,capture:!0};function zr(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function Vr(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function Qr(e,t){return"function"==typeof e?e.apply(void 0,t):e}function Yr(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function Jr(e){return[].concat(e)}function Xr(e,t){-1===e.indexOf(t)&&e.push(t)}function Zr(e){return e.split("-")[0]}function eo(e){return[].slice.call(e)}function to(){return document.createElement("div")}function no(e){return["Element","Fragment"].some((function(t){return Vr(e,t)}))}function ro(e){return Vr(e,"MouseEvent")}function oo(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function io(e){return no(e)?[e]:function(e){return Vr(e,"NodeList")}(e)?eo(e):Array.isArray(e)?e:eo(document.querySelectorAll(e))}function so(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function ao(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function lo(e){var t=Jr(e)[0];return t&&t.ownerDocument||document}function co(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}var uo={isTouch:!1},_o=0;function fo(){uo.isTouch||(uo.isTouch=!0,window.performance&&document.addEventListener("mousemove",po))}function po(){var e=performance.now();e-_o<20&&(uo.isTouch=!1,document.removeEventListener("mousemove",po)),_o=e}function ho(){var e=document.activeElement;if(oo(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var mo="undefined"!=typeof window&&"undefined"!=typeof document?navigator.userAgent:"",bo=/MSIE |Trident\//.test(mo);var yo={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},go=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},yo,{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),vo=Object.keys(go);function Eo(e){var t=(e.plugins||[]).reduce((function(t,n){var r=n.name,o=n.defaultValue;return r&&(t[r]=void 0!==e[r]?e[r]:o),t}),{});return Object.assign({},e,{},t)}function xo(e,t){var n=Object.assign({},t,{content:Qr(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Eo(Object.assign({},go,{plugins:t}))):vo).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},go.aria,{},n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function wo(e,t){e.innerHTML=t}function Oo(e){var t=to();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",no(e)?t.appendChild(e):wo(t,e)),t}function ko(e,t){no(t.content)?(wo(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?wo(e,t.content):e.textContent=t.content)}function Po(e){var t=e.firstElementChild,n=eo(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function Ao(e){var t=to(),n=to();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=to();function o(n,r){var o=Po(t),i=o.box,s=o.content,a=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||ko(s,e.props),r.arrow?a?n.arrow!==r.arrow&&(i.removeChild(a),i.appendChild(Oo(r.arrow))):i.appendChild(Oo(r.arrow)):a&&i.removeChild(a)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),ko(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}Ao.$$tippy=!0;var Do=1,Mo=[],To=[];function Io(e,t){var n,r,o,i,s,a,l,c,u,_=xo(e,Object.assign({},go,{},Eo((n=t,Object.keys(n).reduce((function(e,t){return void 0!==n[t]&&(e[t]=n[t]),e}),{}))))),d=!1,f=!1,p=!1,h=!1,m=[],b=Yr(V,_.interactiveDebounce),y=Do++,g=(u=_.plugins).filter((function(e,t){return u.indexOf(e)===t})),v={id:y,reference:e,popper:to(),popperInstance:null,props:_,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:g,clearDelayTimeouts:function(){clearTimeout(r),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;L("onBeforeUpdate",[v,t]),G();var n=v.props,r=xo(e,Object.assign({},v.props,{},t,{ignoreAttributes:!0}));v.props=r,H(),n.interactiveDebounce!==r.interactiveDebounce&&(B(),b=Yr(V,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?Jr(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");j(),S(),w&&w(n,r);v.popperInstance&&(X(),ee().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));L("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=uo.isTouch&&!v.props.touch,o=zr(v.props.duration,0,go.duration);if(e||t||n||r)return;if(M().hasAttribute("disabled"))return;if(L("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,D()&&(x.style.visibility="visible");S(),W(),v.state.isMounted||(x.style.transition="none");if(D()){var i=I(),s=i.box,a=i.content;so([s,a],0)}l=function(){if(v.state.isVisible&&!h){if(h=!0,x.offsetHeight,x.style.transition=v.props.moveTransition,D()&&v.props.animation){var e=I(),t=e.box,n=e.content;so([t,n],o),ao([t,n],"visible")}R(),j(),Xr(To,v),v.state.isMounted=!0,L("onMount",[v]),v.props.animation&&D()&&function(e,t){F(e,t)}(o,(function(){v.state.isShown=!0,L("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=M();e=v.props.interactive&&t===go.appendTo||"parent"===t?n.parentNode:Qr(t,[n]);e.contains(x)||e.appendChild(x);X(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=zr(v.props.duration,1,go.duration);if(e||t||n)return;if(L("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,h=!1,d=!1,D()&&(x.style.visibility="hidden");if(B(),K(),S(),D()){var o=I(),i=o.box,s=o.content;v.props.animation&&(so([i,s],r),ao([i,s],"hidden"))}R(),j(),v.props.animation?D()&&function(e,t){F(e,(function(){!v.state.isVisible&&x.parentNode&&x.parentNode.contains(x)&&t()}))}(r,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;T().addEventListener("mousemove",b),Xr(Mo,b),b(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;Z(),ee().forEach((function(e){e._tippy.unmount()})),x.parentNode&&x.parentNode.removeChild(x);To=To.filter((function(e){return e!==v})),v.state.isMounted=!1,L("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),G(),delete e._tippy,v.state.isDestroyed=!0,L("onDestroy",[v])}};if(!_.render)return v;var E=_.render(v),x=E.popper,w=E.onUpdate;x.setAttribute("data-tippy-root",""),x.id="tippy-"+v.id,v.popper=x,e._tippy=v,x._tippy=v;var O=g.map((function(e){return e.fn(v)})),k=e.hasAttribute("aria-expanded");return H(),j(),S(),L("onCreate",[v]),_.showOnCreate&&te(),x.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),x.addEventListener("mouseleave",(function(e){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&(T().addEventListener("mousemove",b),b(e))})),v;function P(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function A(){return"hold"===P()[0]}function D(){var e;return!!(null==(e=v.props.render)?void 0:e.$$tippy)}function M(){return c||e}function T(){var e=M().parentNode;return e?lo(e):document}function I(){return Po(x)}function C(e){return v.state.isMounted&&!v.state.isVisible||uo.isTouch||s&&"focus"===s.type?0:zr(v.props.delay,e?0:1,go.delay)}function S(){x.style.pointerEvents=v.props.interactive&&v.state.isVisible?"":"none",x.style.zIndex=""+v.props.zIndex}function L(e,t,n){var r;(void 0===n&&(n=!0),O.forEach((function(n){n[e]&&n[e].apply(void 0,t)})),n)&&(r=v.props)[e].apply(r,t)}function R(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,r=x.id;Jr(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+r:r);else{var o=t&&t.replace(r,"").trim();o?e.setAttribute(n,o):e.removeAttribute(n)}}))}}function j(){!k&&v.props.aria.expanded&&Jr(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===M()?"true":"false"):e.removeAttribute("aria-expanded")}))}function B(){T().removeEventListener("mousemove",b),Mo=Mo.filter((function(e){return e!==b}))}function q(e){if(!(uo.isTouch&&(p||"mousedown"===e.type)||v.props.interactive&&x.contains(e.target))){if(M().contains(e.target)){if(uo.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else L("onClickOutside",[v,e]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||K())}}function U(){p=!0}function N(){p=!1}function W(){var e=T();e.addEventListener("mousedown",q,!0),e.addEventListener("touchend",q,Gr),e.addEventListener("touchstart",N,Gr),e.addEventListener("touchmove",U,Gr)}function K(){var e=T();e.removeEventListener("mousedown",q,!0),e.removeEventListener("touchend",q,Gr),e.removeEventListener("touchstart",N,Gr),e.removeEventListener("touchmove",U,Gr)}function F(e,t){var n=I().box;function r(e){e.target===n&&(co(n,"remove",r),t())}if(0===e)return t();co(n,"remove",a),co(n,"add",r),a=r}function $(t,n,r){void 0===r&&(r=!1),Jr(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),m.push({node:e,eventType:t,handler:n,options:r})}))}function H(){var e;A()&&($("touchstart",z,{passive:!0}),$("touchend",Q,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch($(e,z),e){case"mouseenter":$("mouseleave",Q);break;case"focus":$(bo?"focusout":"blur",Y);break;case"focusin":$("focusout",Y)}}))}function G(){m.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),m=[]}function z(e){var t,n=!1;if(v.state.isEnabled&&!J(e)&&!f){var r="focus"===(null==(t=s)?void 0:t.type);s=e,c=e.currentTarget,j(),!v.state.isVisible&&ro(e)&&Mo.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||d)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:te(e),"click"===e.type&&(d=!n),n&&!r&&ne(e)}}function V(e){var t=e.target,n=M().contains(t)||x.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,s=Zr(o.placement),a=o.modifiersData.offset;if(!a)return!0;var l="bottom"===s?a.top.y:0,c="top"===s?a.bottom.y:0,u="right"===s?a.left.x:0,_="left"===s?a.right.x:0,d=t.top-r+l>i,f=r-t.bottom-c>i,p=t.left-n+u>i,h=n-t.right-_>i;return d||f||p||h}))}(ee().concat(x).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:_}:null})).filter(Boolean),e)&&(B(),ne(e))}function Q(e){J(e)||v.props.trigger.indexOf("click")>=0&&d||(v.props.interactive?v.hideWithInteractivity(e):ne(e))}function Y(e){v.props.trigger.indexOf("focusin")<0&&e.target!==M()||v.props.interactive&&e.relatedTarget&&x.contains(e.relatedTarget)||ne(e)}function J(e){return!!uo.isTouch&&A()!==e.type.indexOf("touch")>=0}function X(){Z();var t=v.props,n=t.popperOptions,r=t.placement,o=t.offset,i=t.getReferenceClientRect,s=t.moveTransition,a=D()?Po(x).arrow:null,c=i?{getBoundingClientRect:i,contextElement:i.contextElement||M()}:e,u=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(D()){var n=I().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];D()&&a&&u.push({name:"arrow",options:{element:a,padding:3}}),u.push.apply(u,(null==n?void 0:n.modifiers)||[]),v.popperInstance=Hr(c,x,Object.assign({},n,{placement:r,onFirstUpdate:l,modifiers:u}))}function Z(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function ee(){return eo(x.querySelectorAll("[data-tippy-root]"))}function te(e){v.clearDelayTimeouts(),e&&L("onTrigger",[v,e]),W();var t=C(!0),n=P(),o=n[0],i=n[1];uo.isTouch&&"hold"===o&&i&&(t=i),t?r=setTimeout((function(){v.show()}),t):v.show()}function ne(e){if(v.clearDelayTimeouts(),L("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&d)){var t=C(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else K()}}function Co(e,t){void 0===t&&(t={});var n=go.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",fo,Gr),window.addEventListener("blur",ho);var r=Object.assign({},t,{plugins:n}),o=io(e).reduce((function(e,t){var n=t&&Io(t,r);return n&&e.push(n),e}),[]);return no(e)?o[0]:o}Co.defaultProps=go,Co.setDefaultProps=function(e){Object.keys(e).forEach((function(t){go[t]=e[t]}))},Co.currentInput=uo;Co.setDefaultProps({render:Ao});var So=Co,Lo=function(){function e(){}return e.prototype.getAllStyles=function(e){return window.getComputedStyle(e)},e.prototype.getStyle=function(e,t){return this.getAllStyles(e)[t]},e.prototype.isStaticPositioned=function(e){return"static"===(this.getStyle(e,"position")||"static")},e.prototype.offsetParent=function(e){for(var t=e.offsetParent||document.documentElement;t&&t!==document.documentElement&&this.isStaticPositioned(t);)t=t.offsetParent;return t||document.documentElement},e.prototype.position=function(e,t){var n;void 0===t&&(t=!0);var r={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(e,"position"))n={top:(n=e.getBoundingClientRect()).top,bottom:n.bottom,left:n.left,right:n.right,height:n.height,width:n.width};else{var o=this.offsetParent(e);n=this.offset(e,!1),o!==document.documentElement&&(r=this.offset(o,!1)),r.top+=o.clientTop,r.left+=o.clientLeft}return n.top-=r.top,n.bottom-=r.top,n.left-=r.left,n.right-=r.left,t&&(n.top=Math.round(n.top),n.bottom=Math.round(n.bottom),n.left=Math.round(n.left),n.right=Math.round(n.right)),n},e.prototype.offset=function(e,t){void 0===t&&(t=!0);var n=e.getBoundingClientRect(),r=window.pageYOffset-document.documentElement.clientTop,o=window.pageXOffset-document.documentElement.clientLeft,i={height:n.height||e.offsetHeight,width:n.width||e.offsetWidth,top:n.top+r,bottom:n.bottom+r,left:n.left+o,right:n.right+o};return t&&(i.height=Math.round(i.height),i.width=Math.round(i.width),i.top=Math.round(i.top),i.bottom=Math.round(i.bottom),i.left=Math.round(i.left),i.right=Math.round(i.right)),i},e.prototype.positionElements=function(e,t,n,r){var o=n.split("-"),i=o[0],s=void 0===i?"top":i,a=o[1],l=void 0===a?"center":a,c=r?this.offset(e,!1):this.position(e,!1),u=this.getAllStyles(t),_=parseFloat(u.marginTop),d=parseFloat(u.marginBottom),f=parseFloat(u.marginLeft),p=parseFloat(u.marginRight),h=0,m=0;switch(s){case"top":h=c.top-(t.offsetHeight+_+d);break;case"bottom":h=c.top+c.height;break;case"left":m=c.left-(t.offsetWidth+f+p);break;case"right":m=c.left+c.width}switch(l){case"top":h=c.top;break;case"bottom":h=c.top+c.height-t.offsetHeight;break;case"left":m=c.left;break;case"right":m=c.left+c.width-t.offsetWidth;break;case"center":"top"===s||"bottom"===s?m=c.left+c.width/2-t.offsetWidth/2:h=c.top+c.height/2-t.offsetHeight/2}t.style.transform="translate("+Math.round(m)+"px, "+Math.round(h)+"px)";var b=t.getBoundingClientRect(),y=document.documentElement,g=window.innerHeight||y.clientHeight,v=window.innerWidth||y.clientWidth;return b.left>=0&&b.top>=0&&b.right<=v&&b.bottom<=g},e}(),Ro=/\s+/,jo=new Lo;var Bo,qo,Uo=function(){return(Uo=Object.assign||function(e){for(var t,n=1,r=arguments.length;n',this.DEFAULTS={maxRowCount:-1},this.menuItems=[{title:"Sağa sütun ekle",icon:'',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.table.insertRowAbove()}},{title:"Yukarı satır ekle",icon:'',handler:function(){n.table.insertRowBelow()}},{title:"Sütunu sil",icon:'',handler:function(){n.table.deleteColumn()}},{title:"Satırı sil",icon:'',handler:function(){n.table.deleteRow()}},{title:"Tabloyu sil",icon:'',handler:function(){n.table.deleteTable()}}],this.editorChangeHandler=function(e,t,r,o){e===Bo.SELECTION_CHANGE&&n.detectButton(t)},this.contextMenuHandler=function(e){if(!n.isTable())return!0;e.preventDefault(),n.showMenu()},this.toggleClickHandler=function(e){n.toggleMenu(),e.preventDefault(),e.stopPropagation()},this.docClickHandler=function(){return n.hideMenu},this.quill=e,this.options=Uo(Uo({},this.DEFAULTS),t),this.table=e.getModule("table"),this.table?(this.toggle=e.addContainer("ql-table-toggle"),this.toggle.classList.add("ql-table-toggle_hidden"),this.toggle.innerHTML=this.TOGGLE_TEMPLATE,this.toggle.addEventListener("click",this.toggleClickHandler),this.quill.on(Bo.EDITOR_CHANGE,this.editorChangeHandler),this.quill.root.addEventListener("contextmenu",this.contextMenuHandler)):console.error('"table" module not found')}return e.prototype.isTable=function(e){return e||(e=this.quill.getSelection()),!!e&&!(!this.quill.getFormat(e.index).table||e.length)},e.prototype.getColCount=function(e){if(void 0===e&&(e=null),e||(e=this.quill.getSelection()),!e)return 0;var t=this.table.getTable(e)[0];return t?t.rows().reduce((function(e,t){return Math.max(t.children.length,e)}),0):0},e.prototype.showMenu=function(){var e=this;this.hideMenu(),this.menu=this.quill.addContainer("ql-table-menu"),this.menuItems.forEach((function(t){e.menu.appendChild(e.createMenuItem(t))})),function(e,t,n,r,o){var i=Array.isArray(n)?n:n.split(Ro),s=["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right","left-top","left-bottom","right-top","right-bottom"],a=t.classList,l=function(e){var t=e.split("-"),n=t[0],r=t[1],i=[];return o&&(i.push(o+"-"+n),r&&i.push(o+"-"+n+"-"+r),i.forEach((function(e){a.add(e)}))),i};o&&s.forEach((function(e){a.remove(o+"-"+e)}));var c=i.findIndex((function(e){return"auto"===e}));c>=0&&s.forEach((function(e){null==i.find((function(t){return-1!==t.search("^"+e)}))&&i.splice(c++,1,e)}));var u,_=t.style;_.position="absolute",_.top="0",_.left="0",_["will-change"]="transform";for(var d=!1,f=0,p=i;f{this.quill.getSelection()||setTimeout(()=>this.insert(e),0)})}insert(e){const t=(this.quill.getSelection()||{}).index||this.quill.getLength();this.quill.insertEmbed(t,"image",e,"user")}readFiles(e,t){[].forEach.call(e,e=>{if(!e.type.match(/^image\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\.microsoft\.icon)/i))return;const n=new FileReader;n.onload=e=>{t(e.target.result)};const r=e.getAsFile?e.getAsFile():e;r instanceof Blob&&n.readAsDataURL(r)})}}),Gn.a.register("modules/magicUrl",Fo.a),Gn.a.register("modules/cursors",Vn.a),Gn.a.register({"modules/tableUI":Wo},!0),window.addEventListener("load",()=>{const e=new ae;var t=new Kn("ws://localhost:9000","quill",e);const n=e.getText("quill");let r=new Gn.a("#full-container .editor",{bounds:"#full-container .editor",modules:{cursors:!0,syntax:!0,toolbar:{container:".toolbar"},table:!0,tableUI:!0,magicUrl:!0,imageDrop:!0,blotFormatter:{}},theme:"snow"});new $n(n,r,t.awareness);t.awareness.setLocalStateField("user",{name:divergent_name,color:divergent_color}),So(".ql-bold",{content:"Kalın"}),So(".ql-italic",{content:"Eğik"}),So(".ql-underline",{content:"Altı Çizili"}),So(".ql-strike",{content:"Üstü Çizili"}),So(".ql-blockquote",{content:"Alıntı"}),So(".ql-code-block",{content:"Kod Bloğu"}),So('[value="ordered"]',{content:"Sıralı Liste"}),So('[value="bullet"]',{content:"Liste"}),So('[value="+1"]',{content:"İçe Adım"}),So('[value="-1"]',{content:"Dışa Adım"}),So(".ql-link",{content:"Link"}),So(".ql-image",{content:"Resim"}),So(".ql-clean",{content:"Biçimlendirmeyi Temizle"})})}]); +var r=n(34),o=n(35),i=n(36);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return W(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,n);case"utf8":case"utf-8":return P(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,s=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=n;ia&&(n=a-l),i=n;i>=0;i--){for(var _=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function P(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+_<=n)switch(_){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(l=(15&c)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,_=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=_}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,o){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(i,s),c=this.slice(r,o),u=e.slice(t,n),_=0;_o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return g(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return w(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function A(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function C(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function S(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function R(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||R(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,i){return i||R(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||C(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function W(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(33))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=c(e),s=r[0],a=r[1],l=new i(function(e,t,n){return 3*(t+n)/4-n}(0,s,a)),u=0,_=a>0?s-4:s;for(n=0;n<_;n+=4)t=o[e.charCodeAt(n)]<<18|o[e.charCodeAt(n+1)]<<12|o[e.charCodeAt(n+2)]<<6|o[e.charCodeAt(n+3)],l[u++]=t>>16&255,l[u++]=t>>8&255,l[u++]=255&t;2===a&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,l[u++]=255&t);1===a&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,l[u++]=t>>8&255,l[u++]=255&t);return l},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],s=0,a=n-o;sa?a:s+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var o,i,s=[],a=t;a>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,s,a=8*o-r-1,l=(1<>1,u=-7,_=n?o-1:0,d=n?-1:1,f=e[t+_];for(_+=d,i=f&(1<<-u)-1,f>>=-u,u+=a;u>0;i=256*i+e[t+_],_+=d,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+_],_+=d,u-=8);if(0===i)i=1-c;else{if(i===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=c}return(f?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var s,a,l,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,p=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+_>=1?d/l:d*Math.pow(2,1-_))*l>=2&&(s++,l/=2),s+_>=u?(a=0,s=u):s+_>=1?(a=(t*l-1)*Math.pow(2,o),s+=_):(a=t*Math.pow(2,_-1)*Math.pow(2,o),s=0));o>=8;e[n+f]=255&a,f+=p,a/=256,o-=8);for(s=s<0;e[n+f]=255&s,f+=p,s/=256,c-=8);e[n+f-p]|=128*h}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var l,c=[],u=!1,_=-1;function d(){u&&l&&(u=!1,l.length?c=l.concat(c):_=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(l=c,c=[];++_1)for(var n=1;nnew Set,i=e=>e[e.length-1],s=Array.from;class a{constructor(){this._observers=r.c()}on(e,t){r.e(this._observers,e,o).add(t)}once(e,t){this.on(e,(...n)=>{this.off(e,t),t(...n)})}off(e,t){const n=this._observers.get(e);void 0!==n&&(n.delete(t),0===n.size&&this._observers.delete(e))}emit(e,t){return s((this._observers.get(e)||r.c()).values()).forEach(e=>e(...t))}destroy(){this._observers=r.c()}}var l=n(3),c=n(0),u=n(1),_=n(15),d=n.n(_);d.a.performance;const f=d.a.cryptoRandomBuffer,p=(Math.random,()=>new Uint32Array(f(4))[0]);var h=n(5);const m=e=>new Error(e),b=()=>{throw m("Method unimplemented")},y=()=>{throw m("Unexpected case")};var g=n(2);Object.assign;const v=Object.keys,E=e=>v(e).length,x=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),w=(e,t)=>e===t||E(e)===E(t)&&((e,t)=>{for(const n in e)if(!t(e[n],n))return!1;return!0})(e,(e,n)=>(void 0!==e||x(t,n))&&t[n]===e),O=(e,t,n=0)=>{try{for(;n{if(null==e||null==t)return((e,t)=>e===t)(e,t);if(e.constructor!==t.constructor)return!1;if(e===t)return!0;switch(e.constructor){case ArrayBuffer:e=new Uint8Array(e),t=new Uint8Array(t);case Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let n=0;nnew D(e,t),T="undefined"!=typeof document?document:{},I=("undefined"!=typeof DOMParser&&new DOMParser,e=>r.d(e,(e,t)=>`${t}:${e};`).join(""));T.ELEMENT_NODE,T.TEXT_NODE,T.CDATA_SECTION_NODE,T.COMMENT_NODE,T.DOCUMENT_NODE,T.DOCUMENT_TYPE_NODE,T.DOCUMENT_FRAGMENT_NODE,JSON.stringify,JSON.parse;const C=e=>class{constructor(e){this._=e}destroy(){e(this._)}},S=(C(clearTimeout),C(clearInterval),C(e=>"undefined"!=typeof requestAnimationFrame&&cancelAnimationFrame(e)),C(e=>"undefined"!=typeof cancelIdleCallback&&cancelIdleCallback(e)),Date.now),L=A(),R=A(),j=A(),B=A(),q=A(),U=A(),N=A(),W=A(),K=A(),F={[L]:M("font-weight","bold"),[R]:M("font-weight","normal"),[j]:M("color","blue"),[q]:M("color","green"),[B]:M("color","grey"),[U]:M("color","red"),[N]:M("color","purple"),[W]:M("color","orange"),[K]:M("color","black")},H={[L]:"",[R]:"",[j]:"",[q]:"",[B]:"",[U]:"",[N]:"",[W]:"",[K]:""},G=P.c?e=>{const t=[],n=[];let r=0;for(;r0&&(t.push(""),n.push(t.join("")));r{const t=[],n=[],o=r.c();let i=[],s=0;for(;s0||e.length>0?(t.push("%c"+r),n.push(e)):t.push(r)}}}for(s>0&&(i=n,i.unshift(t.join("")));s{console.log(...G(e)),V.forEach(t=>t.print(e))},V=new Set;S();const Q=e=>({[Symbol.iterator](){return this},next:e}),Y=(e,t)=>Q(()=>{const{done:n,value:r}=e.next();return{done:n,value:n?void 0:t(r)}});class J{constructor(e,t){this.clock=e,this.len=t}}class X{constructor(){this.clients=new Map}}const Z=(e,t,n)=>t.clients.forEach((t,r)=>{const o=e.doc.store.clients.get(r);for(let r=0;r{const n=e.clients.get(t.client);return void 0!==n&&null!==((e,t)=>{let n=0,r=e.length-1;for(;n<=r;){const o=Object(l.c)((n+r)/2),i=e[o],s=i.clock;if(s<=t){if(t{e.clients.forEach(e=>{let t,n;for(e.sort((e,t)=>e.clock-t.clock),t=1,n=1;t{Object(r.e)(e.clients,t,()=>[]).push(new J(n,o))},re=()=>new X,oe=e=>{const t=re();return e.clients.forEach((e,n)=>{const r=[];for(let t=0;t0&&t.clients.set(n,r)}),t},ie=(e,t)=>{Object(c.m)(e.restEncoder,t.clients.size),t.clients.forEach((t,n)=>{e.resetDsCurVal(),Object(c.m)(e.restEncoder,n);const r=t.length;Object(c.m)(e.restEncoder,r);for(let n=0;n{const r=new X,o=Object(u.i)(e.restDecoder);for(let i=0;i0){const e=new fe;ie(e,r),n.pendingDeleteReaders.push(new ue(Object(u.e)(e.toUint8Array())))}},ae=p;class le extends a{constructor({gc:e=!0,gcFilter:t=(()=>!0)}={}){super(),this.gc=e,this.gcFilter=t,this.clientID=ae(),this.share=new Map,this.store=new Ve,this._transaction=null,this._transactionCleanups=[]}transact(e,t=null){ut(this,e,t)}get(e,t=gt){const n=Object(r.e)(this.share,e,()=>{const e=new t;return e._integrate(this,null),e}),o=n.constructor;if(t!==gt&&o!==t){if(o===gt){const r=new t;r._map=n._map,n._map.forEach(e=>{for(;null!==e;e=e.left)e.parent=r}),r._start=n._start;for(let e=r._start;null!==e;e=e.right)e.parent=r;return r._length=n._length,this.share.set(e,r),r._integrate(this,null),r}throw new Error(`Type with the name ${e} has already been defined with a different constructor`)}return n}getArray(e=""){return this.get(e,Ct)}getText(e=""){return this.get(e,Vt)}getMap(e=""){return this.get(e,Lt)}getXmlFragment(e=""){return this.get(e,Yt)}toJSON(){const e={};return this.share.forEach((t,n)=>{e[n]=t.toJSON()}),e}destroy(){this.emit("destroyed",[!0]),super.destroy()}on(e,t){super.on(e,t)}off(e,t){super.off(e,t)}}class ce{constructor(e){this.restDecoder=e}resetDsCurVal(){}readDsClock(){return Object(u.i)(this.restDecoder)}readDsLen(){return Object(u.i)(this.restDecoder)}}class ue{constructor(e){this.dsCurrVal=0,this.restDecoder=e}resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=Object(u.i)(this.restDecoder),this.dsCurrVal}readDsLen(){const e=Object(u.i)(this.restDecoder)+1;return this.dsCurrVal+=e,e}}class _e extends ue{constructor(e){super(e),this.keys=[],Object(u.g)(e),this.keyClockDecoder=new u.a(Object(u.j)(e)),this.clientDecoder=new u.d(Object(u.j)(e)),this.leftClockDecoder=new u.a(Object(u.j)(e)),this.rightClockDecoder=new u.a(Object(u.j)(e)),this.infoDecoder=new u.b(Object(u.j)(e),u.g),this.stringDecoder=new u.c(Object(u.j)(e)),this.parentInfoDecoder=new u.b(Object(u.j)(e),u.g),this.typeRefDecoder=new u.d(Object(u.j)(e)),this.lenDecoder=new u.d(Object(u.j)(e))}readLeftID(){return new Se(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new Se(this.clientDecoder.read(),this.rightClockDecoder.read())}readClient(){return this.clientDecoder.read()}readInfo(){return this.infoDecoder.read()}readString(){return this.stringDecoder.read()}readParentInfo(){return 1===this.parentInfoDecoder.read()}readTypeRef(){return this.typeRefDecoder.read()}readLen(){return this.lenDecoder.read()}readAny(){return Object(u.f)(this.restDecoder)}readBuf(){return Object(u.j)(this.restDecoder)}readJSON(){return Object(u.f)(this.restDecoder)}readKey(){const e=this.keyClockDecoder.read();if(e{const r=new Map;n.forEach((e,n)=>{Ye(t,n)>e&&r.set(n,e)}),Qe(t).forEach((e,t)=>{n.has(t)||r.set(t,0)}),Object(c.m)(e.restEncoder,r.size),Array.from(r.entries()).sort((e,t)=>t[0]-e[0]).forEach(([n,r])=>{((e,t,n,r)=>{const o=Xe(t,r);Object(c.m)(e.restEncoder,t.length-o),e.writeClient(n),Object(c.m)(e.restEncoder,r);const i=t[o];i.write(e,r-i.id.clock);for(let n=o+1;n{const o=new Map;var i;((e,t,n)=>{const r=Object(u.i)(e.restDecoder);for(let o=0;o{const n=e.pendingClientsStructRefs;t.forEach((e,t)=>{const r=n.get(t);if(void 0===r)n.set(t,{refs:e,i:0});else{const t=r.i>0?r.refs.slice(r.i):r.refs;for(let n=0;ne.id.clock-t.id.clock)}})})(n,o),((e,t)=>{const n=t.pendingStack,o=t.pendingClientsStructRefs,i=Array.from(o.keys()).sort((e,t)=>e-t);if(0===i.length)return;const s=()=>{let e=o.get(i[i.length-1]);for(;e.refs.length===e.i;){if(i.pop(),!(i.length>0))return t.pendingClientsStructRefs.clear(),null;e=o.get(i[i.length-1])}return e};let a=s();if(null===a&&0===n.length)return;let l=n.length>0?n.pop():a.refs[a.i++];const c=new Map;for(;;){const i=Object(r.e)(c,l.id.client,()=>Ye(t,l.id.client)),u=l.id.clocke.id.clock-t.id.clock),e.i=0;continue}}return void n.push(l)}const _=l.getMissing(e,t);if(null===_)if((0===u||u0)l=n.pop();else if(null!==a&&a.i{e.i===e.refs.length?i.delete(t):(e.refs.splice(0,e.i),e.i=0)}),((e,t)=>{const n=t.pendingDeleteReaders;t.pendingDeleteReaders=[];for(let r=0;rut(t,e=>{ve(r,e,t.store),se(r,e,t.store)},n,!1),xe=(e,t,n)=>((e,t,n,r=_e)=>{const o=Object(u.e)(t);Ee(o,e,n,new r(o))})(e,t,n,ye),we=(e,t,n=new pe)=>(((e,t,n=new Map)=>{ge(e,t.store,n),ie(e,oe(t.store))})(n,e,null==t?new Map:ke(t)),n.toUint8Array()),Oe=e=>{const t=new Map,n=Object(u.i)(e.restDecoder);for(let r=0;rOe(new me(Object(u.e)(e))),Pe=(e,t)=>(Object(c.m)(e.restEncoder,t.size),t.forEach((t,n)=>{Object(c.m)(e.restEncoder,n),Object(c.m)(e.restEncoder,t)}),e),Ae=(e,t=new fe)=>(((e,t)=>{Pe(e,Qe(t.store))})(t,e),t.toUint8Array());class De{constructor(){this.l=[]}}const Me=()=>new De,Te=(e,t)=>e.l.push(t),Ie=(e,t)=>{e.l=e.l.filter(e=>t!==e)},Ce=(e,t,n)=>O(e.l,[t,n]);class Se{constructor(e,t){this.client=e,this.clock=t}}const Le=(e,t)=>e===t||null!==e&&null!==t&&e.client===t.client&&e.clock===t.clock,Re=(e,t)=>new Se(e,t),je=e=>{for(const[t,n]of e.doc.share.entries())if(n===e)return t;throw y()};class Be{constructor(e,t,n){this.type=e,this.tname=t,this.item=n}}const qe=e=>new Be(null==e.type?null:Re(e.type.client,e.type.clock),e.tname||null,null==e.item?null:Re(e.item.client,e.item.clock));class Ue{constructor(e,t){this.type=e,this.index=t}}const Ne=(e,t)=>{let n=null,r=null;return null===e._item?r=je(e):n=Re(e._item.id.client,e._item.id.clock),new Be(n,r,t)},We=(e,t)=>{let n=e._start;for(;null!==n;){if(!n.deleted&&n.countable){if(n.length>t)return Ne(e,Re(n.id.client,n.id.clock+t));t-=n.length}n=n.right}return Ne(e,null)},Ke=(e,t)=>{const n=t.store,r=e.item,o=e.type,i=e.tname;let s=null,a=0;if(null!==r){if(Ye(n,r.client)<=r.clock)return null;const e=vn(n,r),t=e.item;if(!(t instanceof xn))return null;if(s=t.parent,null===s._item||!s._item.deleted){a=t.deleted||!t.countable?0:e.diff;let n=t.left;for(;null!==n;)!n.deleted&&n.countable&&(a+=n.length),n=n.left}}else{if(null!==i)s=t.get(i);else{if(null===o)throw y();{if(Ye(n,o.client)<=o.clock)return null;const{item:e}=vn(n,o);if(!(e instanceof xn&&e.content instanceof gn))return null;s=e.content.type}}a=s._length}return((e,t)=>new Ue(e,t))(s,a)},Fe=(e,t)=>e===t||null!==e&&null!==t&&e.tname===t.tname&&Le(e.item,t.item)&&Le(e.type,t.type);class $e{constructor(e,t){this.ds=e,this.sv=t}}const He=(e,t)=>new $e(e,t),Ge=(He(re(),new Map),(e,t)=>void 0===t?!e.deleted:t.sv.has(e.id.client)&&(t.sv.get(e.id.client)||0)>e.id.clock&&!ee(t.ds,e.id)),ze=(e,t)=>{const n=Object(r.e)(e.meta,ze,o),i=e.doc.store;n.has(t)||(t.sv.forEach((t,n)=>{t{}),n.add(t))};class Ve{constructor(){this.clients=new Map,this.pendingClientsStructRefs=new Map,this.pendingStack=[],this.pendingDeleteReaders=[]}}const Qe=e=>{const t=new Map;return e.clients.forEach((e,n)=>{const r=e[e.length-1];t.set(n,r.id.clock+r.length)}),t},Ye=(e,t)=>{const n=e.clients.get(t);if(void 0===n)return 0;const r=n[n.length-1];return r.id.clock+r.length},Je=(e,t)=>{let n=e.clients.get(t.id.client);if(void 0===n)n=[],e.clients.set(t.id.client,n);else{const e=n[n.length-1];if(e.id.clock+e.length!==t.id.clock)throw y()}n.push(t)},Xe=(e,t)=>{let n=0,r=e.length-1,o=e[r],i=o.id.clock;if(i===t)return r;let s=Object(l.c)(t/(i+o.length-1)*r);for(;n<=r;){if(o=e[s],i=o.id.clock,i<=t){if(t{const n=e.clients.get(t.client);return n[Xe(n,t.clock)]},et=(e,t,n)=>{const r=Xe(t,n),o=t[r];return o.id.clock{const n=e.doc.store.clients.get(t.client);return n[et(e,n,t.clock)]},nt=(e,t,n)=>{const r=t.clients.get(n.client),o=Xe(r,n.clock),i=r[o];return n.clock!==i.id.clock+i.length-1&&i.constructor!==nn&&r.splice(o+1,0,En(e,i,n.clock-i.id.clock+1)),i},rt=(e,t,n,r,o)=>{if(0===r)return;const i=n+r;let s,a=et(e,t,n);do{s=t[a++],i!(0===t.deleteSet.clients.size&&!Object(r.a)(t.afterState,(e,n)=>t.beforeState.get(n)!==e))&&(te(t.deleteSet),((e,t)=>{ge(e,t.doc.store,t.beforeState)})(e,t),ie(e,t.deleteSet),!0),st=(e,t)=>{const n=e[t-1],r=e[t];n.deleted===r.deleted&&n.constructor===r.constructor&&n.mergeWith(r)&&(e.splice(t,1),r instanceof xn&&null!==r.parentSub&&r.parent._map.get(r.parentSub)===r&&r.parent._map.set(r.parentSub,n))},at=(e,t,n)=>{for(const[r,o]of e.clients.entries()){const e=t.clients.get(r);for(let r=o.length-1;r>=0;r--){const i=o[r],s=i.clock+i.len;for(let r=Xe(e,i.clock),o=e[r];r{e.clients.forEach((e,n)=>{const r=t.clients.get(n);for(let t=e.length-1;t>=0;t--){const n=e[t];for(let e=Object(l.g)(r.length-1,1+Xe(r,n.clock+n.len-1)),t=r[e];e>0&&t.id.clock>=n.clock;t=r[--e])st(r,e)}})},ct=(e,t)=>{if(ta.push(()=>{null!==t._item&&t._item.deleted||t._callObserver(n,e)})),a.push(()=>{n.changedParentTypes.forEach((e,t)=>a.push(()=>{null!==t._item&&t._item.deleted||((e=e.filter(e=>null===e.target._item||!e.target._item.deleted)).forEach(e=>{e.currentTarget=t}),Ce(t._dEH,e,n))})),a.push(()=>r.emit("afterTransaction",[n,r]))}),O(a,[])}finally{r.gc&&at(i,o,r.gcFilter),lt(i,o),n.afterState.forEach((e,t)=>{const r=n.beforeState.get(t)||0;if(r!==e){const e=o.clients.get(t),n=Object(l.f)(Xe(e,r),1);for(let t=e.length-1;t>=n;t--)st(e,t)}});for(let e=0;e0&&st(r,i)}if(n.local||n.afterState.get(r.clientID)===n.beforeState.get(r.clientID)||(r.clientID=ae(),z(W,L,"[yjs] ",R,U,"Changed the client-id because another client seems to be using it.")),r.emit("afterTransactionCleanup",[n,r]),r._observers.has("update")){const e=new be;it(e,n)&&r.emit("update",[e.toUint8Array(),n.origin,r])}if(r._observers.has("updateV2")){const e=new pe;it(e,n)&&r.emit("updateV2",[e.toUint8Array(),n.origin,r])}e.length<=t+1?(r._transactionCleanups=[],r.emit("afterAllTransactions",[r,e])):ct(e,t+1)}}},ut=(e,t,n=null,r=!0)=>{const o=e._transactionCleanups;let i=!1;null===e._transaction&&(i=!0,e._transaction=new ot(e,n,r),o.push(e._transaction),1===o.length&&e.emit("beforeAllTransactions",[e]),e.emit("beforeTransaction",[e._transaction,e]));try{t(e._transaction)}finally{i&&o[0]===e._transaction&&ct(o,0)}};class _t{constructor(e,t){this.target=e,this.currentTarget=e,this.transaction=t,this._changes=null}get path(){return dt(this.currentTarget,this.target)}deletes(e){return ee(this.transaction.deleteSet,e.id)}adds(e){return e.id.clock>=(this.transaction.beforeState.get(e.id.client)||0)}get changes(){let e=this._changes;if(null===e){const t=this.target,n=o(),r=o(),s=[],a=new Map;e={added:n,deleted:r,delta:s,keys:a};const l=this.transaction.changed.get(t);if(l.has(null)){let e=null;const o=()=>{e&&s.push(e)};for(let i=t._start;null!==i;i=i.right)i.deleted?this.deletes(i)&&!this.adds(i)&&(null!==e&&void 0!==e.delete||(o(),e={delete:0}),e.delete+=i.length,r.add(i)):this.adds(i)?(null!==e&&void 0!==e.insert||(o(),e={insert:[]}),e.insert=e.insert.concat(i.content.getContent()),n.add(i)):(null!==e&&void 0!==e.retain||(o(),e={retain:0}),e.retain+=i.length);null!==e&&void 0===e.retain&&o()}l.forEach(e=>{if(null!==e){const n=t._map.get(e);let r,o;if(this.adds(n)){let e=n.left;for(;null!==e&&this.adds(e);)e=e.left;if(this.deletes(n)){if(null===e||!this.deletes(e))return;r="delete",o=i(e.content.getContent())}else null!==e&&this.deletes(e)?(r="update",o=i(e.content.getContent())):(r="add",o=void 0)}else{if(!this.deletes(n))return;r="delete",o=i(n.content.getContent())}a.set(e,{action:r,oldValue:o})}}),this._changes=e}return e}}const dt=(e,t)=>{const n=[];for(;null!==t._item&&t!==e;){if(null!==t._item.parentSub)n.unshift(t._item.parentSub);else{let e=0,r=t._item.parent._start;for(;r!==t._item&&null!==r;)r.deleted||e++,r=r.right;n.unshift(e)}t=t._item.parent}return n};let ft=0;class pt{constructor(e,t){e.marker=!0,this.p=e,this.index=t,this.timestamp=ft++}}const ht=(e,t,n)=>{e.p.marker=!1,e.p=t,t.marker=!0,e.index=n,e.timestamp=ft++},mt=(e,t)=>{if(null===e._start||0===t||null===e._searchMarker)return null;const n=0===e._searchMarker.length?null:e._searchMarker.reduce((e,n)=>Object(l.a)(t-e.index){e.timestamp=ft++})(n));null!==r.right&&ot;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);for(;null!==r.left&&r.left.id.client===r.id.client&&r.left.id.clock+r.left.length===r.id.clock;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);return null!==n&&Object(l.a)(n.index-o){if(e.length>=80){const r=e.reduce((e,t)=>e.timestamp{for(let r=e.length-1;r>=0;r--){const o=e[r];if(n>0){let t=o.p;for(t.marker=!1;t&&(t.deleted||!t.countable);)t=t.left,t&&!t.deleted&&t.countable&&(o.index-=t.length);if(null===t||!0===t.marker){e.splice(r,1);continue}o.p=t,t.marker=!0}(t0&&t===o.index)&&(o.index=Object(l.f)(t,o.index+n))}},yt=(e,t,n)=>{const o=e,i=t.changedParentTypes;for(;Object(r.e)(i,e,()=>[]).push(n),null!==e._item;)e=e._item.parent;Ce(o._eH,n,t)};class gt{constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=Me(),this._dEH=Me(),this._searchMarker=null}_integrate(e,t){this.doc=e,this._item=t}_copy(){throw b()}_write(e){}get _first(){let e=this._start;for(;null!==e&&e.deleted;)e=e.right;return e}_callObserver(e,t){!e.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(e){Te(this._eH,e)}observeDeep(e){Te(this._dEH,e)}unobserve(e){Ie(this._eH,e)}unobserveDeep(e){Ie(this._dEH,e)}toJSON(){}}const vt=e=>{const t=[];let n=e._start;for(;null!==n;){if(n.countable&&!n.deleted){const e=n.content.getContent();for(let n=0;n{let n=0,r=e._start;for(;null!==r;){if(r.countable&&!r.deleted){const o=r.content.getContent();for(let r=0;r{const n=[];return Et(e,(r,o)=>{n.push(t(r,o,e))}),n},wt=e=>{let t=e._start,n=null,r=0;return{[Symbol.iterator](){return this},next:()=>{if(null===n){for(;null!==t&&t.deleted;)t=t.right;if(null===t)return{done:!0,value:void 0};n=t.content.getContent(),r=0,t=t.right}const e=n[r++];return n.length<=r&&(n=null),{done:!1,value:e}}}},Ot=(e,t,n,r)=>{let o=n;const i=e.doc,s=i.clientID,a=i.store,l=null===n?t._start:n.right;let c=[];const u=()=>{c.length>0&&(o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new cn(c)),o.integrate(e,0),c=[])};r.forEach(n=>{switch(n.constructor){case Number:case Object:case Boolean:case Array:case String:c.push(n);break;default:switch(u(),n.constructor){case Uint8Array:case ArrayBuffer:o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new rn(new Uint8Array(n))),o.integrate(e,0);break;default:if(!(n instanceof gt))throw new Error("Unexpected content type in insert operation");o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new gn(n)),o.integrate(e,0)}}}),u()},kt=(e,t,n,r)=>{if(0===n)return t._searchMarker&&bt(t._searchMarker,n,r.length),Ot(e,t,null,r);const o=n,i=mt(t,n);let s=t._start;for(null!==i&&(s=i.p,0===(n-=i.index)&&(s=s.prev,n+=s&&s.countable&&!s.deleted?s.length:0));null!==s;s=s.right)if(!s.deleted&&s.countable){if(n<=s.length){n{if(0===r)return;const o=n,i=r,s=mt(t,n);let a=t._start;for(null!==s&&(a=s.p,n-=s.index);null!==a&&n>0;a=a.right)!a.deleted&&a.countable&&(n0&&null!==a;)a.deleted||(r0)throw m("array length exceeded");t._searchMarker&&bt(t._searchMarker,o,-i+r)},At=(e,t,n)=>{const r=t._map.get(n);void 0!==r&&r.delete(e)},Dt=(e,t,n,r)=>{const o=t._map.get(n)||null,i=e.doc,s=i.clientID;let a;if(null==r)a=new cn([r]);else switch(r.constructor){case Number:case Object:case Boolean:case Array:case String:a=new cn([r]);break;case Uint8Array:a=new rn(r);break;default:if(!(r instanceof gt))throw new Error("Unexpected content type");a=new gn(r)}new xn(Re(s,Ye(i.store,s)),o,o&&o.lastId,null,null,t,n,a).integrate(e,0)},Mt=(e,t)=>{const n=e._map.get(t);return void 0===n||n.deleted?void 0:n.content.getContent()[n.length-1]},Tt=e=>{return t=e.entries(),n=e=>!e[1].deleted,Q(()=>{let e;do{e=t.next()}while(!e.done&&!n(e.value));return e});var t,n};class It extends _t{constructor(e,t){super(e,t),this._transaction=t}}class Ct extends gt{constructor(){super(),this._prelimContent=[],this._searchMarker=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new Ct}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}_callObserver(e,t){super._callObserver(e,t),yt(this,e,new It(this,e))}insert(e,t){null!==this.doc?ut(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}push(e){this.insert(this.length,e)}unshift(e){this.insert(0,e)}delete(e,t=1){null!==this.doc?ut(this.doc,n=>{Pt(n,this,e,t)}):this._prelimContent.splice(e,t)}get(e){return((e,t)=>{const n=mt(e,t);let r=e._start;for(null!==n&&(r=n.p,t-=n.index);null!==r;r=r.right)if(!r.deleted&&r.countable){if(te instanceof gt?e.toJSON():e)}map(e){return xt(this,e)}forEach(e){Et(this,e)}[Symbol.iterator](){return wt(this)}_write(e){e.writeTypeRef(dn)}}class St extends _t{constructor(e,t,n){super(e,t),this.keysChanged=n}}class Lt extends gt{constructor(e){super(),this._prelimContent=null,this._prelimContent=void 0===e?new Map:new Map(e)}_integrate(e,t){super._integrate(e,t),this._prelimContent.forEach((e,t)=>{this.set(t,e)}),this._prelimContent=null}_copy(){return new Lt}_callObserver(e,t){yt(this,e,new St(this,e,t))}toJSON(){const e={};return this._map.forEach((t,n)=>{if(!t.deleted){const r=t.content.getContent()[t.length-1];e[n]=r instanceof gt?r.toJSON():r}}),e}get size(){return[...Tt(this._map)].length}keys(){return Y(Tt(this._map),e=>e[0])}values(){return Y(Tt(this._map),e=>e[1].content.getContent()[e[1].length-1])}entries(){return Y(Tt(this._map),e=>[e[0],e[1].content.getContent()[e[1].length-1]])}forEach(e){return this._map.forEach((t,n)=>{t.deleted||e(t.content.getContent()[t.length-1],n,this)}),{}}[Symbol.iterator](){return this.entries()}delete(e){null!==this.doc?ut(this.doc,t=>{At(t,this,e)}):this._prelimContent.delete(e)}set(e,t){return null!==this.doc?ut(this.doc,n=>{Dt(n,this,e,t)}):this._prelimContent.set(e,t),t}get(e){return Mt(this,e)}has(e){return((e,t)=>{const n=e._map.get(t);return void 0!==n&&!n.deleted})(this,e)}_write(e){e.writeTypeRef(fn)}}const Rt=(e,t)=>e===t||"object"==typeof e&&"object"==typeof t&&e&&t&&w(e,t);class jt{constructor(e,t,n,r){this.left=e,this.right=t,this.index=n,this.currentAttributes=r}forward(){switch(null===this.right&&y(),this.right.content.constructor){case sn:case un:this.right.deleted||(this.index+=this.right.length);break;case an:this.right.deleted||Nt(this.currentAttributes,this.right.content)}this.left=this.right,this.right=this.right.right}}const Bt=(e,t,n)=>{for(;null!==t.right&&n>0;){switch(t.right.content.constructor){case sn:case un:t.right.deleted||(n{const r=new Map,o=mt(t,n);if(o){const t=new jt(o.p.left,o.p,o.index,r);return Bt(e,t,n-o.index)}{const o=new jt(null,t._start,0,r);return Bt(e,o,n)}},Ut=(e,t,n,r)=>{for(;null!==n.right&&(!0===n.right.deleted||n.right.content.constructor===an&&Rt(r.get(n.right.content.key),n.right.content.value));)n.right.deleted||r.delete(n.right.content.key),n.forward();const o=e.doc,i=o.clientID;let s=n.left;const a=n.right;r.forEach((n,r)=>{s=new xn(Re(i,Ye(o.store,i)),s,s&&s.lastId,a,a&&a.id,t,null,new an(r,n)),s.integrate(e,0)})},Nt=(e,t)=>{const{key:n,value:r}=t;null===r?e.delete(n):e.set(n,r)},Wt=(e,t)=>{for(;null!==e.right&&(e.right.deleted||e.right.content.constructor===an&&Rt(t[e.right.content.key]||null,e.right.content.value));)e.forward()},Kt=(e,t,n,r)=>{const o=e.doc,i=o.clientID,s=new Map;for(const a in r){const l=r[a],c=n.currentAttributes.get(a)||null;if(!Rt(c,l)){s.set(a,c);const{left:r,right:u}=n;n.right=new xn(Re(i,Ye(o.store,i)),r,r&&r.lastId,u,u&&u.id,t,null,new an(a,l)),n.right.integrate(e,0),n.forward()}}return s},Ft=(e,t,n,r,o)=>{n.currentAttributes.forEach((e,t)=>{void 0===o[t]&&(o[t]=null)});const i=e.doc,s=i.clientID;Wt(n,o);const a=Kt(e,t,n,o),l=r.constructor===String?new un(r):new sn(r);let{left:c,right:u,index:_}=n;t._searchMarker&&bt(t._searchMarker,n.index,l.getLength()),u=new xn(Re(s,Ye(i.store,s)),c,c&&c.lastId,u,u&&u.id,t,null,l),u.integrate(e,0),n.right=u,n.index=_,n.forward(),Ut(e,t,n,a)},$t=(e,t,n,r,o)=>{const i=e.doc,s=i.clientID;Wt(n,o);const a=Kt(e,t,n,o);for(;r>0&&null!==n.right;){if(!n.right.deleted)switch(n.right.content.constructor){case an:{const{key:t,value:r}=n.right.content,i=o[t];void 0!==i&&(Rt(i,r)?a.delete(t):a.set(t,r),n.right.delete(e));break}case sn:case un:r0){let o="";for(;r>0;r--)o+="\n";n.right=new xn(Re(s,Ye(i.store,s)),n.left,n.left&&n.left.lastId,n.right,n.right&&n.right.id,t,null,new un(o)),n.right.integrate(e,0),n.forward()}Ut(e,t,n,a)},Ht=(e,t,n,r,o)=>{for(;n&&n.content.constructor!==un&&n.content.constructor!==sn;)n.deleted||n.content.constructor!==an||Nt(o,n.content),n=n.right;let i=0;for(;t!==n;){if(!t.deleted){const n=t.content;switch(n.constructor){case an:{const{key:s,value:a}=n;(o.get(s)||null)===a&&(r.get(s)||null)!==a||(t.delete(e),i++);break}}}t=t.right}return i},Gt=(e,t,n)=>{const o=n,i=Object(r.b)(t.currentAttributes),s=t.right;for(;n>0&&null!==t.right;){if(!1===t.right.deleted)switch(t.right.content.constructor){case sn:case un:n{const t=this._delta,n=new Map,r=new Map;let o=this.target._start,i=null;const s={};let a="",l=0,c=0;const u=()=>{if(null!==i){let e;switch(i){case"delete":e={delete:c},c=0;break;case"insert":e={insert:a},n.size>0&&(e.attributes={},n.forEach((t,n)=>{null!==t&&(e.attributes[n]=t)})),a="";break;case"retain":if(e={retain:l},Object.keys(s).length>0){e.attributes={};for(const t in s)e.attributes[t]=s[t]}l=0}t.push(e),i=null}};for(;null!==o;){switch(o.content.constructor){case sn:this.adds(o)?this.deletes(o)||(u(),i="insert",a=o.content.embed,u()):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=1):o.deleted||("retain"!==i&&(u(),i="retain"),l+=1);break;case un:this.adds(o)?this.deletes(o)||("insert"!==i&&(u(),i="insert"),a+=o.content.str):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=o.length):o.deleted||("retain"!==i&&(u(),i="retain"),l+=o.length);break;case an:{const{key:t,value:a}=o.content;if(this.adds(o)){if(!this.deletes(o)){const l=n.get(t)||null;Rt(l,a)?o.delete(e):("retain"===i&&u(),Rt(a,r.get(t)||null)?delete s[t]:s[t]=a)}}else if(this.deletes(o)){r.set(t,a);const e=n.get(t)||null;Rt(e,a)||("retain"===i&&u(),s[t]=e)}else if(!o.deleted){r.set(t,a);const n=s[t];void 0!==n&&(Rt(n,a)?o.delete(e):("retain"===i&&u(),null===a?s[t]=a:delete s[t]))}o.deleted||("insert"===i&&u(),Nt(n,o.content));break}}o=o.right}for(u();t.length>0;){const e=t[t.length-1];if(void 0===e.retain||void 0!==e.attributes)break;t.pop()}})}return this._delta}}class Vt extends gt{constructor(e){super(),this._pending=void 0!==e?[()=>this.insert(0,e)]:[],this._searchMarker=[]}get length(){return this._length}_integrate(e,t){super._integrate(e,t);try{this._pending.forEach(e=>e())}catch(e){console.error(e)}this._pending=null}_copy(){return new Vt}_callObserver(e,t){super._callObserver(e,t);const n=new zt(this,e),o=e.doc;if(!e.local){let t=!1;for(const[n,r]of e.afterState.entries()){const i=e.beforeState.get(n)||0;if(r!==i&&(rt(e,o.store.clients.get(n),i,r,e=>{e.deleted||e.content.constructor!==an||(t=!0)}),t))break}t||Z(e,e.deleteSet,e=>{e instanceof nn||t||e.parent===this&&e.content.constructor===an&&(t=!0)}),ut(o,e=>{t?(e=>{let t=0;ut(e.doc,n=>{let o=e._start,i=e._start,s=Object(r.c)();const a=Object(r.b)(s);for(;i;){if(!1===i.deleted)switch(i.content.constructor){case an:Nt(a,i.content);break;case sn:case un:t+=Ht(n,o,i,s,a),s=Object(r.b)(a),o=i}i=i.right}})})(this):Z(e,e.deleteSet,t=>{t instanceof nn||t.parent===this&&((e,t)=>{for(;t&&t.right&&(t.right.deleted||t.right.content.constructor!==un&&t.right.content.constructor!==sn);)t=t.right;const n=new Set;for(;t&&(t.deleted||t.content.constructor!==un&&t.content.constructor!==sn);){if(!t.deleted&&t.content.constructor===an){const r=t.content.key;n.has(r)?t.delete(e):n.add(r)}t=t.left}})(e,t)})})}yt(this,e,n)}toString(){let e="",t=this._start;for(;null!==t;)!t.deleted&&t.countable&&t.content.constructor===un&&(e+=t.content.str),t=t.right;return e}toJSON(){return this.toString()}applyDelta(e,{sanitize:t=!0}={}){null!==this.doc?ut(this.doc,n=>{const r=new jt(null,this._start,0,new Map);for(let o=0;o0)&&Ft(n,this,r,s,i.attributes||{})}else void 0!==i.retain?$t(n,this,r,i.retain,i.attributes||{}):void 0!==i.delete&&Gt(n,r,i.delete)}}):this._pending.push(()=>this.applyDelta(e))}toDelta(e,t,n){const r=[],o=new Map,i=this.doc;let s="",a=this._start;function l(){if(s.length>0){const e={};let t=!1;o.forEach((n,r)=>{t=!0,e[r]=n});const n={insert:s};t&&(n.attributes=e),r.push(n),s=""}}return ut(i,i=>{for(e&&ze(i,e),t&&ze(i,t);null!==a;){if(Ge(a,e)||void 0!==t&&Ge(a,t))switch(a.content.constructor){case un:{const r=o.get("ychange");void 0===e||Ge(a,e)?void 0===t||Ge(a,t)?void 0!==r&&(l(),o.delete("ychange")):void 0!==r&&r.user===a.id.client&&"added"===r.state||(l(),o.set("ychange",n?n("added",a.id):{type:"added"})):void 0!==r&&r.user===a.id.client&&"removed"===r.state||(l(),o.set("ychange",n?n("removed",a.id):{type:"removed"})),s+=a.content.str;break}case sn:{l();const e={insert:a.content.embed};if(o.size>0){const t={};e.attributes=t,o.forEach((e,n)=>{t[n]=e})}r.push(e);break}case an:Ge(a,e)&&(l(),Nt(o,a.content))}a=a.right}l()},ze),r}insert(e,t,n){if(t.length<=0)return;const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);n||(n={},o.currentAttributes.forEach((e,t)=>{n[t]=e})),Ft(r,this,o,t,n)}):this._pending.push(()=>this.insert(e,t,n))}insertEmbed(e,t,n={}){if(t.constructor!==Object)throw new Error("Embed must be an Object");const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);Ft(r,this,o,t,n)}):this._pending.push(()=>this.insertEmbed(e,t,n))}delete(e,t){if(0===t)return;const n=this.doc;null!==n?ut(n,n=>{Gt(n,qt(n,this,e),t)}):this._pending.push(()=>this.delete(e,t))}format(e,t,n){if(0===t)return;const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);null!==o.right&&$t(r,this,o,t,n)}):this._pending.push(()=>this.format(e,t,n))}_write(e){e.writeTypeRef(pn)}}class Qt{constructor(e,t=(()=>!0)){this._filter=t,this._root=e,this._currentNode=e._start,this._firstCall=!0}[Symbol.iterator](){return this}next(){let e=this._currentNode,t=e.content.type;if(null!==e&&(!this._firstCall||e.deleted||!this._filter(t)))do{if(t=e.content.type,e.deleted||t.constructor!==Jt&&t.constructor!==Yt||null===t._start)for(;null!==e;){if(null!==e.right){e=e.right;break}e=e.parent===this._root?null:e.parent._item}else e=t._start}while(null!==e&&(e.deleted||!this._filter(e.content.type)));return this._firstCall=!1,null===e?{value:void 0,done:!0}:(this._currentNode=e,{value:e.content.type,done:!1})}}class Yt extends gt{constructor(){super(),this._prelimContent=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new Yt}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}createTreeWalker(e){return new Qt(this,e)}querySelector(e){e=e.toUpperCase();const t=new Qt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e).next();return t.done?null:t.value}querySelectorAll(e){return e=e.toUpperCase(),Array.from(new Qt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e))}_callObserver(e,t){yt(this,e,new Xt(this,t,e))}toString(){return xt(this,e=>e.toString()).join("")}toJSON(){return this.toString()}toDOM(e=document,t={},n){const r=e.createDocumentFragment();return void 0!==n&&n._createAssociation(r,this),Et(this,o=>{r.insertBefore(o.toDOM(e,t,n),null)}),r}insert(e,t){null!==this.doc?ut(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}delete(e,t=1){null!==this.doc?ut(this.doc,n=>{Pt(n,this,e,t)}):this._prelimContent.splice(e,t)}toArray(){return vt(this)}_write(e){e.writeTypeRef(mn)}}class Jt extends Yt{constructor(e="UNDEFINED"){super(),this.nodeName=e,this._prelimAttrs=new Map}_integrate(e,t){super._integrate(e,t),this._prelimAttrs.forEach((e,t)=>{this.setAttribute(t,e)}),this._prelimAttrs=null}_copy(){return new Jt(this.nodeName)}toString(){const e=this.getAttributes(),t=[],n=[];for(const t in e)n.push(t);n.sort();const r=n.length;for(let o=0;o0?" "+t.join(" "):""}>${super.toString()}`}removeAttribute(e){null!==this.doc?ut(this.doc,t=>{At(t,this,e)}):this._prelimAttrs.delete(e)}setAttribute(e,t){null!==this.doc?ut(this.doc,n=>{Dt(n,this,e,t)}):this._prelimAttrs.set(e,t)}getAttribute(e){return Mt(this,e)}getAttributes(e){return(e=>{const t={};return e._map.forEach((e,n)=>{e.deleted||(t[n]=e.content.getContent()[e.length-1])}),t})(this)}toDOM(e=document,t={},n){const r=e.createElement(this.nodeName),o=this.getAttributes();for(const e in o)r.setAttribute(e,o[e]);return Et(this,o=>{r.appendChild(o.toDOM(e,t,n))}),void 0!==n&&n._createAssociation(r,this),r}_write(e){e.writeTypeRef(hn),e.writeKey(this.nodeName)}}class Xt extends _t{constructor(e,t,n){super(e,n),this.childListChanged=!1,this.attributesChanged=new Set,t.forEach(e=>{null===e?this.childListChanged=!0:this.attributesChanged.add(e)})}}class Zt extends Lt{constructor(e){super(),this.hookName=e}_copy(){return new Zt(this.hookName)}toDOM(e=document,t={},n){const r=t[this.hookName];let o;return o=void 0!==r?r.createDom(this):document.createElement(this.hookName),o.setAttribute("data-yjs-hook",this.hookName),void 0!==n&&n._createAssociation(o,this),o}_write(e){e.writeTypeRef(bn),e.writeKey(this.hookName)}}class en extends Vt{_copy(){return new en}toDOM(e=document,t,n){const r=e.createTextNode(this.toString());return void 0!==n&&n._createAssociation(r,this),r}toString(){return this.toDelta().map(e=>{const t=[];for(const n in e.attributes){const r=[];for(const t in e.attributes[n])r.push({key:t,value:e.attributes[n][t]});r.sort((e,t)=>e.keye.nodeName=0;e--)n+=``;return n}).join("")}toJSON(){return this.toString()}_write(e){e.writeTypeRef(yn)}}class tn{constructor(e,t){this.id=e,this.length=t}get deleted(){throw b()}mergeWith(e){return!1}write(e,t,n){throw b()}integrate(e,t){throw b()}}class nn extends tn{get deleted(){return!0}delete(){}mergeWith(e){return this.length+=e.length,!0}integrate(e,t){t>0&&(this.id.clock+=t,this.length-=t),Je(e.doc.store,this)}write(e,t){e.writeInfo(0),e.writeLen(this.length-t)}getMissing(e,t){return null}}class rn{constructor(e){this.content=e}getLength(){return 1}getContent(){return[this.content]}isCountable(){return!0}copy(){return new rn(this.content)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeBuf(this.content)}getRef(){return 3}}class on{constructor(e){this.len=e}getLength(){return this.len}getContent(){return[]}isCountable(){return!1}copy(){return new on(this.len)}splice(e){const t=new on(this.len-e);return this.len=e,t}mergeWith(e){return this.len+=e.len,!0}integrate(e,t){ne(e.deleteSet,t.id.client,t.id.clock,this.len),t.markDeleted()}delete(e){}gc(e){}write(e,t){e.writeLen(this.len-t)}getRef(){return 1}}class sn{constructor(e){this.embed=e}getLength(){return 1}getContent(){return[this.embed]}isCountable(){return!0}copy(){return new sn(this.embed)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeJSON(this.embed)}getRef(){return 5}}class an{constructor(e,t){this.key=e,this.value=t}getLength(){return 1}getContent(){return[]}isCountable(){return!1}copy(){return new an(this.key,this.value)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){t.parent._searchMarker=null}delete(e){}gc(e){}write(e,t){e.writeKey(this.key),e.writeJSON(this.value)}getRef(){return 6}}class ln{constructor(e){this.arr=e}getLength(){return this.arr.length}getContent(){return this.arr}isCountable(){return!0}copy(){return new ln(this.arr)}splice(e){const t=new ln(this.arr.slice(e));return this.arr=this.arr.slice(0,e),t}mergeWith(e){return this.arr=this.arr.concat(e.arr),!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){const n=this.arr.length;e.writeLen(n-t);for(let r=t;rnew Ct,e=>new Lt,e=>new Vt,e=>new Jt(e.readKey()),e=>new Yt,e=>new Zt(e.readKey()),e=>new en],dn=0,fn=1,pn=2,hn=3,mn=4,bn=5,yn=6;class gn{constructor(e){this.type=e}getLength(){return 1}getContent(){return[this.type]}isCountable(){return!0}copy(){return new gn(this.type._copy())}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){this.type._integrate(e.doc,t)}delete(e){let t=this.type._start;for(;null!==t;)t.deleted?e._mergeStructs.push(t):t.delete(e),t=t.right;this.type._map.forEach(t=>{t.deleted?e._mergeStructs.push(t):t.delete(e)}),e.changed.delete(this.type)}gc(e){let t=this.type._start;for(;null!==t;)t.gc(e,!0),t=t.right;this.type._start=null,this.type._map.forEach(t=>{for(;null!==t;)t.gc(e,!0),t=t.left}),this.type._map=new Map}write(e,t){this.type._write(e)}getRef(){return 7}}const vn=(e,t)=>{let n,r=t,o=0;do{o>0&&(r=Re(r.client,r.clock+o)),n=Ze(e,r),o=r.clock-n.id.clock,r=n.redone}while(null!==r&&n instanceof xn);return{item:n,diff:o}},En=(e,t,n)=>{const{client:r,clock:o}=t.id,i=new xn(Re(r,o+n),t,Re(r,o+n-1),t.right,t.rightOrigin,t.parent,t.parentSub,t.content.splice(n));return t.deleted&&i.markDeleted(),t.keep&&(i.keep=!0),null!==t.redone&&(i.redone=Re(t.redone.client,t.redone.clock+n)),t.right=i,null!==i.right&&(i.right.left=i),e._mergeStructs.push(i),null!==i.parentSub&&null===i.right&&i.parent._map.set(i.parentSub,i),t.length=n,i};class xn extends tn{constructor(e,t,n,r,o,i,s,a){super(e,a.getLength()),this.origin=n,this.left=t,this.right=r,this.rightOrigin=o,this.parent=i,this.parentSub=s,this.redone=null,this.content=a,this.info=this.content.isCountable()?g.b:0}set marker(e){(this.info&g.d)>0!==e&&(this.info^=g.d)}get marker(){return(this.info&g.d)>0}get keep(){return(this.info&g.a)>0}set keep(e){this.keep!==e&&(this.info^=g.a)}get countable(){return(this.info&g.b)>0}get deleted(){return(this.info&g.c)>0}set deleted(e){this.deleted!==e&&(this.info^=g.c)}markDeleted(){this.info|=g.c}getMissing(e,t){if(this.origin&&this.origin.client!==this.id.client&&this.origin.clock>=Ye(t,this.origin.client))return this.origin.client;if(this.rightOrigin&&this.rightOrigin.client!==this.id.client&&this.rightOrigin.clock>=Ye(t,this.rightOrigin.client))return this.rightOrigin.client;if(this.parent&&this.parent.constructor===Se&&this.id.client!==this.parent.client&&this.parent.clock>=Ye(t,this.parent.client))return this.parent.client;if(this.origin&&(this.left=nt(e,t,this.origin),this.origin=this.left.lastId),this.rightOrigin&&(this.right=tt(e,this.rightOrigin),this.rightOrigin=this.right.id),(this.left&&this.left.constructor===nn||this.right&&this.right.constructor===nn)&&(this.parent=null),this.parent){if(this.parent.constructor===Se){const e=Ze(t,this.parent);e.constructor===nn?this.parent=null:this.parent=e.content.type}}else this.left&&this.left.constructor===xn&&(this.parent=this.left.parent,this.parentSub=this.left.parentSub),this.right&&this.right.constructor===xn&&(this.parent=this.right.parent,this.parentSub=this.right.parentSub);return null}integrate(e,t){if(t>0&&(this.id.clock+=t,this.left=nt(e,e.doc.store,Re(this.id.client,this.id.clock-1)),this.origin=this.left.lastId,this.content=this.content.splice(t),this.length-=t),this.parent){if(!this.left&&(!this.right||null!==this.right.left)||this.left&&this.left.right!==this.right){let t,n=this.left;if(null!==n)t=n.right;else if(null!==this.parentSub)for(t=this.parent._map.get(this.parentSub)||null;null!==t&&null!==t.left;)t=t.left;else t=this.parent._start;const r=new Set,o=new Set;for(;null!==t&&t!==this.right;){if(o.add(t),r.add(t),Le(this.origin,t.origin)){if(t.id.client{const i=t._item;(null===i||i.id.clock<(e.beforeState.get(i.id.client)||0)&&!i.deleted)&&Object(r.e)(e.changed,t,o).add(n)})(e,this.parent,this.parentSub),(null!==this.parent._item&&this.parent._item.deleted||null!==this.parentSub&&null!==this.right)&&this.delete(e)}else new nn(this.id,this.length).integrate(e,0)}get next(){let e=this.right;for(;null!==e&&e.deleted;)e=e.right;return e}get prev(){let e=this.left;for(;null!==e&&e.deleted;)e=e.left;return e}get lastId(){return 1===this.length?this.id:Re(this.id.client,this.id.clock+this.length-1)}mergeWith(e){return!!(Le(e.origin,this.lastId)&&this.right===e&&Le(this.rightOrigin,e.rightOrigin)&&this.id.client===e.id.client&&this.id.clock+this.length===e.id.clock&&this.deleted===e.deleted&&null===this.redone&&null===e.redone&&this.content.constructor===e.content.constructor&&this.content.mergeWith(e.content))&&(e.keep&&(this.keep=!0),this.right=e.right,null!==this.right&&(this.right.left=this),this.length+=e.length,!0)}delete(e){if(!this.deleted){const t=this.parent;this.countable&&null===this.parentSub&&(t._length-=this.length),this.markDeleted(),ne(e.deleteSet,this.id.client,this.id.clock,this.length),Object(r.e)(e.changed,t,o).add(this.parentSub),this.content.delete(e)}}gc(e,t){if(!this.deleted)throw y();this.content.gc(e),t?((e,t,n)=>{const r=e.clients.get(t.id.client);r[Xe(r,t.id.clock)]=n})(e,this,new nn(this.id,this.length)):this.content=new on(this.length)}write(e,t){const n=t>0?Re(this.id.client,this.id.clock+t-1):this.origin,r=this.rightOrigin,o=this.parentSub,i=this.content.getRef()&g.i|(null===n?0:g.g)|(null===r?0:g.f)|(null===o?0:g.e);if(e.writeInfo(i),null!==n&&e.writeLeftID(n),null!==r&&e.writeRightID(r),null===n&&null===r){const t=this.parent,n=t._item;if(null===n){const n=je(t);e.writeParentInfo(!0),e.writeString(n)}else e.writeParentInfo(!1),e.writeLeftID(n.id);null!==o&&e.writeString(o)}this.content.write(e,t)}}const wn=(e,t)=>On[t&g.i](e),On=[()=>{throw y()},e=>new on(e.readLen()),e=>{const t=e.readLen(),n=[];for(let r=0;rnew rn(e.readBuf()),e=>new un(e.readString()),e=>new sn(e.readJSON()),e=>new an(e.readString(),e.readJSON()),e=>new gn(_n[e.readTypeRef()](e)),e=>{const t=e.readLen(),n=[];for(let r=0;rt.key===e&&null!==this.onmessage&&this.onmessage({data:h.d(t.newValue||"")}))}postMessage(e){kn.a.setItem(this.room,h.e(h.b(e)))}}:BroadcastChannel,Dn=e=>r.e(Pn,e,()=>{const t=new Set,n=new An(e);return n.onmessage=e=>t.forEach(t=>t(e.data)),{bc:n,subs:t}}),Mn=(e,t)=>{const n=Dn(e);n.bc.postMessage(t),n.subs.forEach(e=>e(t))},Tn=(e,t)=>{c.m(e,0);const n=(e=>Ae(e,new he))(t);c.n(e,n)},In=(e,t,n)=>{c.m(e,1),c.n(e,((e,t)=>we(e,t,new be))(t,n))},Cn=(e,t,n)=>{xe(t,u.j(e),n)},Sn=Cn,Ln=(e,t,n,r)=>{const o=u.i(e);switch(o){case 0:((e,t,n)=>{In(t,n,u.j(e))})(e,t,n);break;case 1:Cn(e,n,r);break;case 2:Sn(e,n,r);break;default:throw new Error("Unknown message type")}return o};class Rn extends a{constructor(e){super(),this.doc=e,this.states=new Map,this.meta=new Map,this._checkInterval=setInterval(()=>{const t=S();null!==this.getLocalState()&&15e3<=t-this.meta.get(e.clientID).lastUpdated&&this.setLocalState(this.getLocalState());const n=[];this.meta.forEach((r,o)=>{o!==e.clientID&&3e4<=t-r.lastUpdated&&this.states.has(o)&&n.push(o)}),n.length>0&&jn(this,n,"timeout")},l.c(3e3)),e.on("destroy",()=>{this.destroy()}),this.setLocalState({})}destroy(){super.destroy(),clearInterval(this._checkInterval)}getLocalState(){return this.states.get(this.doc.clientID)||null}setLocalState(e){const t=this.doc.clientID,n=this.meta.get(t),r=void 0===n?0:n.clock+1,o=this.states.get(t);null===e?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:r,lastUpdated:S()});const i=[],s=[],a=[],l=[];null===e?l.push(t):null==o?null!=e&&i.push(t):(s.push(t),k(o,e)||a.push(t)),(i.length>0||a.length>0||l.length>0)&&this.emit("change",[{added:i,updated:a,removed:l},"local"]),this.emit("update",[{added:i,updated:s,removed:l},"local"])}setLocalStateField(e,t){const n=this.getLocalState();null!==n&&(n[e]=t,this.setLocalState(n))}getStates(){return this.states}}const jn=(e,t,n)=>{const r=[];for(let n=0;n0&&(e.emit("change",[{added:[],updated:[],removed:r},n]),e.emit("update",[{added:[],updated:[],removed:r},n]))},Bn=(e,t,n=e.states)=>{const r=t.length,o=c.f();c.m(o,r);for(let i=0;i{let e=!0;return(t,n)=>{if(e){e=!1;try{t()}finally{e=!0}}else void 0!==n&&n()}},Un=(e,t)=>console.warn(`Permission denied to access ${e.url}.\n${t}`),Nn=(e,t,n)=>{const r=u.e(t),o=c.f();switch(u.i(r)){case 0:{c.m(o,0);const t=Ln(r,o,e.doc,e);n&&1===t&&!e.synced&&(e.synced=!0);break}case 3:c.m(o,1),c.n(o,Bn(e.awareness,Array.from(e.awareness.getStates().keys())));break;case 1:((e,t,n)=>{const r=u.e(t),o=S(),i=[],s=[],a=[],l=[],c=u.i(r);for(let t=0;t0||a.length>0||l.length>0)&&e.emit("change",[{added:i,updated:a,removed:l},n]),(i.length>0||s.length>0||l.length>0)&&e.emit("update",[{added:i,updated:s,removed:l},n])})(e.awareness,u.j(r),e);break;case 2:((e,t,n)=>{switch(u.i(e)){case 0:n(t,u.h(e))}})(r,e.doc,Un);break;default:return console.error("Unable to compute message"),o}return o},Wn=e=>{if(e.shouldConnect&&null===e.ws){const t=new e._WS(e.url);t.binaryType="arraybuffer",e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=n=>{e.wsLastMessageReceived=S();const r=Nn(e,new Uint8Array(n.data),!0);c.g(r)>1&&t.send(c.h(r))},t.onclose=()=>{e.ws=null,e.wsconnecting=!1,e.wsconnected?(e.wsconnected=!1,e.synced=!1,jn(e.awareness,Array.from(e.awareness.getStates().keys()),e),e.emit("status",[{status:"disconnected"}])):e.wsUnsuccessfulReconnects++,setTimeout(Wn,l.g(1200*l.e(e.wsUnsuccessfulReconnects+1),2500),e)},t.onopen=()=>{e.wsLastMessageReceived=S(),e.wsconnecting=!1,e.wsconnected=!0,e.wsUnsuccessfulReconnects=0,e.emit("status",[{status:"connected"}]);const n=c.f();if(c.m(n,0),Tn(n,e.doc),t.send(c.h(n)),null!==e.awareness.getLocalState()){const n=c.f();c.m(n,1),c.n(n,Bn(e.awareness,[e.doc.clientID])),t.send(c.h(n))}}}},Kn=(e,t)=>{e.wsconnected&&e.ws.send(t),e.bcconnected&&e.mux(()=>{Mn(e.url,t)})};class Fn extends a{constructor(e,t,n,{connect:r=!0,awareness:o=new Rn(n),params:i={},WebSocketPolyfill:s=WebSocket,resyncInterval:a=-1}={}){for(super();"/"===e[e.length-1];)e=e.slice(0,e.length-1);const l=(e=>((e,t)=>{const n=[];for(const r in e)n.push(t(e[r],r));return n})(e,(e,t)=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`).join("&"))(i);this.bcChannel=e+"/"+t,this.url=e+"/"+t+(0===l.length?"":"?"+l),this.roomname=t,this.doc=n,this._WS=s,this._localAwarenessState={},this.awareness=o,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.wsUnsuccessfulReconnects=0,this.mux=qn(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=r,this._resyncInterval=0,a>0&&(this._resyncInterval=setInterval(()=>{if(this.ws){this.synced||(alert("\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message.."),console.warn("Client was unsynced anyway"));const e=c.f();c.m(e,0),Tn(e,n),this.ws.send(c.h(e))}},a)),this._bcSubscriber=e=>{this.mux(()=>{const t=Nn(this,new Uint8Array(e),!1);c.g(t)>1&&Mn(this.bcChannel,c.h(t))})},this._updateHandler=(e,t)=>{if(t!==this||null===t){const t=c.f();c.m(t,0),((e,t)=>{c.m(e,2),c.n(e,t)})(t,e),Kn(this,c.h(t))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:n},r)=>{const i=e.concat(t).concat(n),s=c.f();c.m(s,1),c.n(s,Bn(o,i)),Kn(this,c.h(s))},window.addEventListener("beforeunload",()=>{jn(this.awareness,[n.clientID],"window unload")}),o.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval(()=>{this.wsconnected&&3e4{const e=c.f();c.m(e,0),Tn(e,this.doc),Mn(this.bcChannel,c.h(e));const t=c.f();c.m(t,0),In(t,this.doc),Mn(this.bcChannel,c.h(t));const n=c.f();c.m(n,3),Mn(this.bcChannel,c.h(n));const r=c.f();c.m(r,1),c.n(r,Bn(this.awareness,[this.doc.clientID])),Mn(this.bcChannel,c.h(r))})}disconnectBc(){const e=c.f();var t,n;c.m(e,1),c.n(e,Bn(this.awareness,[this.doc.clientID],new Map)),Kn(this,c.h(e)),this.bcconnected&&(t=this.bcChannel,n=this._bcSubscriber,Dn(t).subs.delete(n),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),null!==this.ws&&this.ws.close()}connect(){this.shouldConnect=!0,this.wsconnected||null!==this.ws||(Wn(this),this.connectBc())}}const $n=(e,t,n,r,o)=>{try{if(t&&t.cursor&&n!==r.clientID){const i=t.user||{},s=i.color||"#ffa500",a=i.name||"User: "+n;e.createCursor(n.toString(),a,s);const l=Ke(qe(t.cursor.anchor),r),c=Ke(qe(t.cursor.head),r);l&&c&&l.type===o&&e.moveCursor(n.toString(),{index:l.index,length:c.index-l.index})}else e.removeCursor(n.toString())}catch(e){console.error(e)}};class Hn{constructor(e,t,n){const r=qn(),o=e.doc;this.mux=r,this.type=e,this.doc=o,this.quill=t;const i=t.getModule("cursors")||null;this.quillCursors=i,this._negatedUsedFormats={},this.awareness=n,this._awarenessChange=({added:t,removed:r,updated:s})=>{const a=n.getStates();t.forEach(t=>{$n(i,a.get(t),t,o,e)}),s.forEach(t=>{$n(i,a.get(t),t,o,e)}),r.forEach(e=>{i.removeCursor(e.toString())})},this._typeObserver=e=>{r(()=>{const n=e.delta,r=[];for(let e=0;e{if(a&&a.ops){const t=a.ops;t.forEach(e=>{if(void 0!==e.attributes)for(let t in e.attributes)void 0===this._negatedUsedFormats[t]&&(this._negatedUsedFormats[t]=!1)}),r(()=>{e.applyDelta(t)})}if(n&&i){const r=t.getSelection(),s=n.getLocalState();if(null===r)null!==n.getLocalState()&&n.setLocalStateField("cursor",null);else{const t=We(e,r.index),o=We(e,r.index+r.length);s&&s.cursor&&Fe(t,s.cursor.anchor)&&Fe(o,s.cursor.head)||n.setLocalStateField("cursor",{anchor:t,head:o})}n.getStates().forEach((t,n)=>{$n(i,t,n,o,e)})}},t.on("editor-change",this._quillObserver),r(()=>{t.setContents(e.toDelta())}),null!==i&&n&&(n.getStates().forEach((t,n)=>{$n(i,t,n,o,e)}),n.on("change",this._awarenessChange))}destroy(){this.type.unobserve(this._typeObserver),this.quill.off(this._quillObserver),this.awareness&&this.awareness.off("change",this._awarenessChange)}}var Gn=n(7),zn=n.n(Gn),Vn=n(26),Qn=n.n(Vn);function Yn(e){var t=e.getBoundingClientRect();return{width:t.width,height:t.height,top:t.top,right:t.right,bottom:t.bottom,left:t.left,x:t.left,y:t.top}}function Jn(e){if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Xn(e){var t=Jn(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Zn(e){return e instanceof Jn(e).Element||e instanceof Element}function er(e){return e instanceof Jn(e).HTMLElement||e instanceof HTMLElement}function tr(e){return e?(e.nodeName||"").toLowerCase():null}function nr(e){return((Zn(e)?e.ownerDocument:e.document)||window.document).documentElement}function rr(e){return Yn(nr(e)).left+Xn(e).scrollLeft}function or(e){return Jn(e).getComputedStyle(e)}function ir(e){var t=or(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function sr(e,t,n){void 0===n&&(n=!1);var r,o,i=nr(t),s=Yn(e),a=er(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==tr(t)||ir(i))&&(l=(r=t)!==Jn(r)&&er(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:Xn(r)),er(t)?((c=Yn(t)).x+=t.clientLeft,c.y+=t.clientTop):i&&(c.x=rr(i))),{x:s.left+l.scrollLeft-c.x,y:s.top+l.scrollTop-c.y,width:s.width,height:s.height}}function ar(e){return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}function lr(e){return"html"===tr(e)?e:e.assignedSlot||e.parentNode||e.host||nr(e)}function cr(e,t){void 0===t&&(t=[]);var n=function e(t){return["html","body","#document"].indexOf(tr(t))>=0?t.ownerDocument.body:er(t)&&ir(t)?t:e(lr(t))}(e),r="body"===tr(n),o=Jn(n),i=r?[o].concat(o.visualViewport||[],ir(n)?n:[]):n,s=t.concat(i);return r?s:s.concat(cr(lr(i)))}function ur(e){return["table","td","th"].indexOf(tr(e))>=0}function _r(e){if(!er(e)||"fixed"===or(e).position)return null;var t=e.offsetParent;if(t){var n=nr(t);if("body"===tr(t)&&"static"===or(t).position&&"static"!==or(n).position)return n}return t}function dr(e){for(var t=Jn(e),n=_r(e);n&&ur(n)&&"static"===or(n).position;)n=_r(n);return n&&"body"===tr(n)&&"static"===or(n).position?t:n||function(e){for(var t=lr(e);er(t)&&["html","body"].indexOf(tr(t))<0;){var n=or(t);if("none"!==n.transform||"none"!==n.perspective||n.willChange&&"auto"!==n.willChange)return t;t=t.parentNode}return null}(e)||t}var fr="top",pr="bottom",hr="right",mr="left",br=[fr,pr,hr,mr],yr=br.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),gr=[].concat(br,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),vr=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Er(e){var t=new Map,n=new Set,r=[];return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||function e(o){n.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(r){if(!n.has(r)){var o=t.get(r);o&&e(o)}})),r.push(o)}(e)})),r}var xr={placement:"bottom",modifiers:[],strategy:"absolute"};function wr(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function Mr(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?Pr(o):null,s=o?Ar(o):null,a=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(i){case fr:t={x:a,y:n.y-r.height};break;case pr:t={x:a,y:n.y+n.height};break;case hr:t={x:n.x+n.width,y:l};break;case mr:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=i?Dr(i):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case"start":t[c]=Math.floor(t[c])-Math.floor(n[u]/2-r[u]/2);break;case"end":t[c]=Math.floor(t[c])+Math.ceil(n[u]/2-r[u]/2)}}return t}var Tr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ir(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.offsets,s=e.position,a=e.gpuAcceleration,l=e.adaptive,c=function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:Math.round(t*r)/r||0,y:Math.round(n*r)/r||0}}(i),u=c.x,_=c.y,d=i.hasOwnProperty("x"),f=i.hasOwnProperty("y"),p=mr,h=fr,m=window;if(l){var b=dr(n);b===Jn(n)&&(b=nr(n)),o===fr&&(h=pr,_-=b.clientHeight-r.height,_*=a?1:-1),o===mr&&(p=hr,u-=b.clientWidth-r.width,u*=a?1:-1)}var y,g=Object.assign({position:s},l&&Tr);return a?Object.assign(Object.assign({},g),{},((y={})[h]=f?"0":"",y[p]=d?"0":"",y.transform=(m.devicePixelRatio||1)<2?"translate("+u+"px, "+_+"px)":"translate3d("+u+"px, "+_+"px, 0)",y)):Object.assign(Object.assign({},g),{},((t={})[h]=f?_+"px":"",t[p]=d?u+"px":"",t.transform="",t))}var Cr={left:"right",right:"left",bottom:"top",top:"bottom"};function Sr(e){return e.replace(/left|right|bottom|top/g,(function(e){return Cr[e]}))}var Lr={start:"end",end:"start"};function Rr(e){return e.replace(/start|end/g,(function(e){return Lr[e]}))}function jr(e,t){var n,r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&((n=r)instanceof Jn(n).ShadowRoot||n instanceof ShadowRoot)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function Br(e){return Object.assign(Object.assign({},e),{},{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function qr(e,t){return"viewport"===t?Br(function(e){var t=Jn(e),n=nr(e),r=t.visualViewport,o=n.clientWidth,i=n.clientHeight,s=0,a=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=r.offsetLeft,a=r.offsetTop)),{width:o,height:i,x:s+rr(e),y:a}}(e)):er(t)?function(e){var t=Yn(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):Br(function(e){var t=nr(e),n=Xn(e),r=e.ownerDocument.body,o=Math.max(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),i=Math.max(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-n.scrollLeft+rr(e),a=-n.scrollTop;return"rtl"===or(r||t).direction&&(s+=Math.max(t.clientWidth,r?r.clientWidth:0)-o),{width:o,height:i,x:s,y:a}}(nr(e)))}function Ur(e,t,n){var r="clippingParents"===t?function(e){var t=cr(lr(e)),n=["absolute","fixed"].indexOf(or(e).position)>=0&&er(e)?dr(e):e;return Zn(n)?t.filter((function(e){return Zn(e)&&jr(e,n)&&"body"!==tr(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],s=o.reduce((function(t,n){var r=qr(e,n);return t.top=Math.max(r.top,t.top),t.right=Math.min(r.right,t.right),t.bottom=Math.min(r.bottom,t.bottom),t.left=Math.max(r.left,t.left),t}),qr(e,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Nr(e){return Object.assign(Object.assign({},{top:0,right:0,bottom:0,left:0}),e)}function Wr(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Kr(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,i=n.boundary,s=void 0===i?"clippingParents":i,a=n.rootBoundary,l=void 0===a?"viewport":a,c=n.elementContext,u=void 0===c?"popper":c,_=n.altBoundary,d=void 0!==_&&_,f=n.padding,p=void 0===f?0:f,h=Nr("number"!=typeof p?p:Wr(p,br)),m="popper"===u?"reference":"popper",b=e.elements.reference,y=e.rects.popper,g=e.elements[d?m:u],v=Ur(Zn(g)?g:g.contextElement||nr(e.elements.popper),s,l),E=Yn(b),x=Mr({reference:E,element:y,strategy:"absolute",placement:o}),w=Br(Object.assign(Object.assign({},y),x)),O="popper"===u?w:E,k={top:v.top-O.top+h.top,bottom:O.bottom-v.bottom+h.bottom,left:v.left-O.left+h.left,right:O.right-v.right+h.right},P=e.modifiersData.offset;if("popper"===u&&P){var A=P[o];Object.keys(k).forEach((function(e){var t=[hr,pr].indexOf(e)>=0?1:-1,n=[fr,pr].indexOf(e)>=0?"y":"x";k[e]+=A[n]*t}))}return k}function Fr(e,t,n){return Math.max(e,Math.min(t,n))}function $r(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Hr(e){return[fr,hr,pr,mr].some((function(t){return e[t]>=0}))}var Gr=Or({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,s=r.resize,a=void 0===s||s,l=Jn(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&c.forEach((function(e){e.addEventListener("scroll",n.update,kr)})),a&&l.addEventListener("resize",n.update,kr),function(){i&&c.forEach((function(e){e.removeEventListener("scroll",n.update,kr)})),a&&l.removeEventListener("resize",n.update,kr)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Mr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,s=void 0===i||i,a={placement:Pr(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign(Object.assign({},t.styles.popper),Ir(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign(Object.assign({},t.styles.arrow),Ir(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];er(o)&&tr(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});er(r)&&tr(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,s=gr.reduce((function(e,n){return e[n]=function(e,t,n){var r=Pr(e),o=[mr,fr].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign(Object.assign({},t),{},{placement:e})):n,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[mr,hr].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,i),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,_=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,p=void 0===f||f,h=n.allowedAutoPlacements,m=t.options.placement,b=Pr(m),y=l||(b===m||!p?[Sr(m)]:function(e){if("auto"===Pr(e))return[];var t=Sr(e);return[Rr(e),t,Rr(t)]}(m)),g=[m].concat(y).reduce((function(e,n){return e.concat("auto"===Pr(n)?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?gr:l,u=Ar(r),_=u?a?yr:yr.filter((function(e){return Ar(e)===u})):br,d=_.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=_);var f=d.reduce((function(t,n){return t[n]=Kr(e,{placement:n,boundary:o,rootBoundary:i,padding:s})[Pr(n)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:n,boundary:u,rootBoundary:_,padding:c,flipVariations:p,allowedAutoPlacements:h}):n)}),[]),v=t.rects.reference,E=t.rects.popper,x=new Map,w=!0,O=g[0],k=0;k=0,T=M?"width":"height",I=Kr(t,{placement:P,boundary:u,rootBoundary:_,altBoundary:d,padding:c}),C=M?D?hr:mr:D?pr:fr;v[T]>E[T]&&(C=Sr(C));var S=Sr(C),L=[];if(i&&L.push(I[A]<=0),a&&L.push(I[C]<=0,I[S]<=0),L.every((function(e){return e}))){O=P,w=!1;break}x.set(P,L)}if(w)for(var R=function(e){var t=g.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return O=t,"break"},j=p?3:1;j>0;j--){if("break"===R(j))break}t.placement!==O&&(t.modifiersData[r]._skip=!0,t.placement=O,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,_=n.padding,d=n.tether,f=void 0===d||d,p=n.tetherOffset,h=void 0===p?0:p,m=Kr(t,{boundary:l,rootBoundary:c,padding:_,altBoundary:u}),b=Pr(t.placement),y=Ar(t.placement),g=!y,v=Dr(b),E="x"===v?"y":"x",x=t.modifiersData.popperOffsets,w=t.rects.reference,O=t.rects.popper,k="function"==typeof h?h(Object.assign(Object.assign({},t.rects),{},{placement:t.placement})):h,P={x:0,y:0};if(x){if(i){var A="y"===v?fr:mr,D="y"===v?pr:hr,M="y"===v?"height":"width",T=x[v],I=x[v]+m[A],C=x[v]-m[D],S=f?-O[M]/2:0,L="start"===y?w[M]:O[M],R="start"===y?-O[M]:-w[M],j=t.elements.arrow,B=f&&j?ar(j):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=q[A],N=q[D],W=Fr(0,w[M],B[M]),K=g?w[M]/2-S-W-U-k:L-W-U-k,F=g?-w[M]/2+S+W+N+k:R+W+N+k,$=t.elements.arrow&&dr(t.elements.arrow),H=$?"y"===v?$.clientTop||0:$.clientLeft||0:0,G=t.modifiersData.offset?t.modifiersData.offset[t.placement][v]:0,z=x[v]+K-G-H,V=x[v]+F-G,Q=Fr(f?Math.min(I,z):I,T,f?Math.max(C,V):C);x[v]=Q,P[v]=Q-T}if(a){var Y="x"===v?fr:mr,J="x"===v?pr:hr,X=x[E],Z=Fr(X+m[Y],X,X-m[J]);x[E]=Z,P[E]=Z-X}t.modifiersData[r]=P}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=n.elements.arrow,i=n.modifiersData.popperOffsets,s=Pr(n.placement),a=Dr(s),l=[mr,hr].indexOf(s)>=0?"height":"width";if(o&&i){var c=n.modifiersData[r+"#persistent"].padding,u=ar(o),_="y"===a?fr:mr,d="y"===a?pr:hr,f=n.rects.reference[l]+n.rects.reference[a]-i[a]-n.rects.popper[l],p=i[a]-n.rects.reference[a],h=dr(o),m=h?"y"===a?h.clientHeight||0:h.clientWidth||0:0,b=f/2-p/2,y=c[_],g=m-u[l]-c[d],v=m/2-u[l]/2+b,E=Fr(y,v,g),x=a;n.modifiersData[r]=((t={})[x]=E,t.centerOffset=E-v,t)}},effect:function(e){var t=e.state,n=e.options,r=e.name,o=n.element,i=void 0===o?"[data-popper-arrow]":o,s=n.padding,a=void 0===s?0:s;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&jr(t.elements.popper,i)&&(t.elements.arrow=i,t.modifiersData[r+"#persistent"]={padding:Nr("number"!=typeof a?a:Wr(a,br))})},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Kr(t,{elementContext:"reference"}),a=Kr(t,{altBoundary:!0}),l=$r(s,r),c=$r(a,o,i),u=Hr(l),_=Hr(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:_},t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-reference-hidden":u,"data-popper-escaped":_})}}]}),zr={passive:!0,capture:!0};function Vr(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function Qr(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function Yr(e,t){return"function"==typeof e?e.apply(void 0,t):e}function Jr(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function Xr(e){return[].concat(e)}function Zr(e,t){-1===e.indexOf(t)&&e.push(t)}function eo(e){return e.split("-")[0]}function to(e){return[].slice.call(e)}function no(){return document.createElement("div")}function ro(e){return["Element","Fragment"].some((function(t){return Qr(e,t)}))}function oo(e){return Qr(e,"MouseEvent")}function io(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function so(e){return ro(e)?[e]:function(e){return Qr(e,"NodeList")}(e)?to(e):Array.isArray(e)?e:to(document.querySelectorAll(e))}function ao(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function lo(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function co(e){var t=Xr(e)[0];return t&&t.ownerDocument||document}function uo(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}var _o={isTouch:!1},fo=0;function po(){_o.isTouch||(_o.isTouch=!0,window.performance&&document.addEventListener("mousemove",ho))}function ho(){var e=performance.now();e-fo<20&&(_o.isTouch=!1,document.removeEventListener("mousemove",ho)),fo=e}function mo(){var e=document.activeElement;if(io(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var bo="undefined"!=typeof window&&"undefined"!=typeof document?navigator.userAgent:"",yo=/MSIE |Trident\//.test(bo);var go={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},vo=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},go,{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Eo=Object.keys(vo);function xo(e){var t=(e.plugins||[]).reduce((function(t,n){var r=n.name,o=n.defaultValue;return r&&(t[r]=void 0!==e[r]?e[r]:o),t}),{});return Object.assign({},e,{},t)}function wo(e,t){var n=Object.assign({},t,{content:Yr(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(xo(Object.assign({},vo,{plugins:t}))):Eo).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},vo.aria,{},n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Oo(e,t){e.innerHTML=t}function ko(e){var t=no();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",ro(e)?t.appendChild(e):Oo(t,e)),t}function Po(e,t){ro(t.content)?(Oo(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Oo(e,t.content):e.textContent=t.content)}function Ao(e){var t=e.firstElementChild,n=to(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function Do(e){var t=no(),n=no();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=no();function o(n,r){var o=Ao(t),i=o.box,s=o.content,a=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||Po(s,e.props),r.arrow?a?n.arrow!==r.arrow&&(i.removeChild(a),i.appendChild(ko(r.arrow))):i.appendChild(ko(r.arrow)):a&&i.removeChild(a)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),Po(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}Do.$$tippy=!0;var Mo=1,To=[],Io=[];function Co(e,t){var n,r,o,i,s,a,l,c,u,_=wo(e,Object.assign({},vo,{},xo((n=t,Object.keys(n).reduce((function(e,t){return void 0!==n[t]&&(e[t]=n[t]),e}),{}))))),d=!1,f=!1,p=!1,h=!1,m=[],b=Jr(V,_.interactiveDebounce),y=Mo++,g=(u=_.plugins).filter((function(e,t){return u.indexOf(e)===t})),v={id:y,reference:e,popper:no(),popperInstance:null,props:_,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:g,clearDelayTimeouts:function(){clearTimeout(r),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;L("onBeforeUpdate",[v,t]),G();var n=v.props,r=wo(e,Object.assign({},v.props,{},t,{ignoreAttributes:!0}));v.props=r,H(),n.interactiveDebounce!==r.interactiveDebounce&&(B(),b=Jr(V,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?Xr(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");j(),S(),w&&w(n,r);v.popperInstance&&(X(),ee().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));L("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=_o.isTouch&&!v.props.touch,o=Vr(v.props.duration,0,vo.duration);if(e||t||n||r)return;if(M().hasAttribute("disabled"))return;if(L("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,D()&&(x.style.visibility="visible");S(),W(),v.state.isMounted||(x.style.transition="none");if(D()){var i=I(),s=i.box,a=i.content;ao([s,a],0)}l=function(){if(v.state.isVisible&&!h){if(h=!0,x.offsetHeight,x.style.transition=v.props.moveTransition,D()&&v.props.animation){var e=I(),t=e.box,n=e.content;ao([t,n],o),lo([t,n],"visible")}R(),j(),Zr(Io,v),v.state.isMounted=!0,L("onMount",[v]),v.props.animation&&D()&&function(e,t){F(e,t)}(o,(function(){v.state.isShown=!0,L("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=M();e=v.props.interactive&&t===vo.appendTo||"parent"===t?n.parentNode:Yr(t,[n]);e.contains(x)||e.appendChild(x);X(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=Vr(v.props.duration,1,vo.duration);if(e||t||n)return;if(L("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,h=!1,d=!1,D()&&(x.style.visibility="hidden");if(B(),K(),S(),D()){var o=I(),i=o.box,s=o.content;v.props.animation&&(ao([i,s],r),lo([i,s],"hidden"))}R(),j(),v.props.animation?D()&&function(e,t){F(e,(function(){!v.state.isVisible&&x.parentNode&&x.parentNode.contains(x)&&t()}))}(r,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;T().addEventListener("mousemove",b),Zr(To,b),b(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;Z(),ee().forEach((function(e){e._tippy.unmount()})),x.parentNode&&x.parentNode.removeChild(x);Io=Io.filter((function(e){return e!==v})),v.state.isMounted=!1,L("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),G(),delete e._tippy,v.state.isDestroyed=!0,L("onDestroy",[v])}};if(!_.render)return v;var E=_.render(v),x=E.popper,w=E.onUpdate;x.setAttribute("data-tippy-root",""),x.id="tippy-"+v.id,v.popper=x,e._tippy=v,x._tippy=v;var O=g.map((function(e){return e.fn(v)})),k=e.hasAttribute("aria-expanded");return H(),j(),S(),L("onCreate",[v]),_.showOnCreate&&te(),x.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),x.addEventListener("mouseleave",(function(e){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&(T().addEventListener("mousemove",b),b(e))})),v;function P(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function A(){return"hold"===P()[0]}function D(){var e;return!!(null==(e=v.props.render)?void 0:e.$$tippy)}function M(){return c||e}function T(){var e=M().parentNode;return e?co(e):document}function I(){return Ao(x)}function C(e){return v.state.isMounted&&!v.state.isVisible||_o.isTouch||s&&"focus"===s.type?0:Vr(v.props.delay,e?0:1,vo.delay)}function S(){x.style.pointerEvents=v.props.interactive&&v.state.isVisible?"":"none",x.style.zIndex=""+v.props.zIndex}function L(e,t,n){var r;(void 0===n&&(n=!0),O.forEach((function(n){n[e]&&n[e].apply(void 0,t)})),n)&&(r=v.props)[e].apply(r,t)}function R(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,r=x.id;Xr(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+r:r);else{var o=t&&t.replace(r,"").trim();o?e.setAttribute(n,o):e.removeAttribute(n)}}))}}function j(){!k&&v.props.aria.expanded&&Xr(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===M()?"true":"false"):e.removeAttribute("aria-expanded")}))}function B(){T().removeEventListener("mousemove",b),To=To.filter((function(e){return e!==b}))}function q(e){if(!(_o.isTouch&&(p||"mousedown"===e.type)||v.props.interactive&&x.contains(e.target))){if(M().contains(e.target)){if(_o.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else L("onClickOutside",[v,e]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||K())}}function U(){p=!0}function N(){p=!1}function W(){var e=T();e.addEventListener("mousedown",q,!0),e.addEventListener("touchend",q,zr),e.addEventListener("touchstart",N,zr),e.addEventListener("touchmove",U,zr)}function K(){var e=T();e.removeEventListener("mousedown",q,!0),e.removeEventListener("touchend",q,zr),e.removeEventListener("touchstart",N,zr),e.removeEventListener("touchmove",U,zr)}function F(e,t){var n=I().box;function r(e){e.target===n&&(uo(n,"remove",r),t())}if(0===e)return t();uo(n,"remove",a),uo(n,"add",r),a=r}function $(t,n,r){void 0===r&&(r=!1),Xr(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),m.push({node:e,eventType:t,handler:n,options:r})}))}function H(){var e;A()&&($("touchstart",z,{passive:!0}),$("touchend",Q,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch($(e,z),e){case"mouseenter":$("mouseleave",Q);break;case"focus":$(yo?"focusout":"blur",Y);break;case"focusin":$("focusout",Y)}}))}function G(){m.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),m=[]}function z(e){var t,n=!1;if(v.state.isEnabled&&!J(e)&&!f){var r="focus"===(null==(t=s)?void 0:t.type);s=e,c=e.currentTarget,j(),!v.state.isVisible&&oo(e)&&To.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||d)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:te(e),"click"===e.type&&(d=!n),n&&!r&&ne(e)}}function V(e){var t=e.target,n=M().contains(t)||x.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,s=eo(o.placement),a=o.modifiersData.offset;if(!a)return!0;var l="bottom"===s?a.top.y:0,c="top"===s?a.bottom.y:0,u="right"===s?a.left.x:0,_="left"===s?a.right.x:0,d=t.top-r+l>i,f=r-t.bottom-c>i,p=t.left-n+u>i,h=n-t.right-_>i;return d||f||p||h}))}(ee().concat(x).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:_}:null})).filter(Boolean),e)&&(B(),ne(e))}function Q(e){J(e)||v.props.trigger.indexOf("click")>=0&&d||(v.props.interactive?v.hideWithInteractivity(e):ne(e))}function Y(e){v.props.trigger.indexOf("focusin")<0&&e.target!==M()||v.props.interactive&&e.relatedTarget&&x.contains(e.relatedTarget)||ne(e)}function J(e){return!!_o.isTouch&&A()!==e.type.indexOf("touch")>=0}function X(){Z();var t=v.props,n=t.popperOptions,r=t.placement,o=t.offset,i=t.getReferenceClientRect,s=t.moveTransition,a=D()?Ao(x).arrow:null,c=i?{getBoundingClientRect:i,contextElement:i.contextElement||M()}:e,u=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(D()){var n=I().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];D()&&a&&u.push({name:"arrow",options:{element:a,padding:3}}),u.push.apply(u,(null==n?void 0:n.modifiers)||[]),v.popperInstance=Gr(c,x,Object.assign({},n,{placement:r,onFirstUpdate:l,modifiers:u}))}function Z(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function ee(){return to(x.querySelectorAll("[data-tippy-root]"))}function te(e){v.clearDelayTimeouts(),e&&L("onTrigger",[v,e]),W();var t=C(!0),n=P(),o=n[0],i=n[1];_o.isTouch&&"hold"===o&&i&&(t=i),t?r=setTimeout((function(){v.show()}),t):v.show()}function ne(e){if(v.clearDelayTimeouts(),L("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&d)){var t=C(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else K()}}function So(e,t){void 0===t&&(t={});var n=vo.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",po,zr),window.addEventListener("blur",mo);var r=Object.assign({},t,{plugins:n}),o=so(e).reduce((function(e,t){var n=t&&Co(t,r);return n&&e.push(n),e}),[]);return ro(e)?o[0]:o}So.defaultProps=vo,So.setDefaultProps=function(e){Object.keys(e).forEach((function(t){vo[t]=e[t]}))},So.currentInput=_o;So.setDefaultProps({render:Do});var Lo=So,Ro=function(){function e(){}return e.prototype.getAllStyles=function(e){return window.getComputedStyle(e)},e.prototype.getStyle=function(e,t){return this.getAllStyles(e)[t]},e.prototype.isStaticPositioned=function(e){return"static"===(this.getStyle(e,"position")||"static")},e.prototype.offsetParent=function(e){for(var t=e.offsetParent||document.documentElement;t&&t!==document.documentElement&&this.isStaticPositioned(t);)t=t.offsetParent;return t||document.documentElement},e.prototype.position=function(e,t){var n;void 0===t&&(t=!0);var r={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(e,"position"))n={top:(n=e.getBoundingClientRect()).top,bottom:n.bottom,left:n.left,right:n.right,height:n.height,width:n.width};else{var o=this.offsetParent(e);n=this.offset(e,!1),o!==document.documentElement&&(r=this.offset(o,!1)),r.top+=o.clientTop,r.left+=o.clientLeft}return n.top-=r.top,n.bottom-=r.top,n.left-=r.left,n.right-=r.left,t&&(n.top=Math.round(n.top),n.bottom=Math.round(n.bottom),n.left=Math.round(n.left),n.right=Math.round(n.right)),n},e.prototype.offset=function(e,t){void 0===t&&(t=!0);var n=e.getBoundingClientRect(),r=window.pageYOffset-document.documentElement.clientTop,o=window.pageXOffset-document.documentElement.clientLeft,i={height:n.height||e.offsetHeight,width:n.width||e.offsetWidth,top:n.top+r,bottom:n.bottom+r,left:n.left+o,right:n.right+o};return t&&(i.height=Math.round(i.height),i.width=Math.round(i.width),i.top=Math.round(i.top),i.bottom=Math.round(i.bottom),i.left=Math.round(i.left),i.right=Math.round(i.right)),i},e.prototype.positionElements=function(e,t,n,r){var o=n.split("-"),i=o[0],s=void 0===i?"top":i,a=o[1],l=void 0===a?"center":a,c=r?this.offset(e,!1):this.position(e,!1),u=this.getAllStyles(t),_=parseFloat(u.marginTop),d=parseFloat(u.marginBottom),f=parseFloat(u.marginLeft),p=parseFloat(u.marginRight),h=0,m=0;switch(s){case"top":h=c.top-(t.offsetHeight+_+d);break;case"bottom":h=c.top+c.height;break;case"left":m=c.left-(t.offsetWidth+f+p);break;case"right":m=c.left+c.width}switch(l){case"top":h=c.top;break;case"bottom":h=c.top+c.height-t.offsetHeight;break;case"left":m=c.left;break;case"right":m=c.left+c.width-t.offsetWidth;break;case"center":"top"===s||"bottom"===s?m=c.left+c.width/2-t.offsetWidth/2:h=c.top+c.height/2-t.offsetHeight/2}t.style.transform="translate("+Math.round(m)+"px, "+Math.round(h)+"px)";var b=t.getBoundingClientRect(),y=document.documentElement,g=window.innerHeight||y.clientHeight,v=window.innerWidth||y.clientWidth;return b.left>=0&&b.top>=0&&b.right<=v&&b.bottom<=g},e}(),jo=/\s+/,Bo=new Ro;var qo,Uo,No=function(){return(No=Object.assign||function(e){for(var t,n=1,r=arguments.length;n',this.DEFAULTS={maxRowCount:-1},this.menuItems=[{title:"Sağa sütun ekle",icon:'',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.table.insertRowAbove()}},{title:"Yukarı satır ekle",icon:'',handler:function(){n.table.insertRowBelow()}},{title:"Sütunu sil",icon:'',handler:function(){n.table.deleteColumn()}},{title:"Satırı sil",icon:'',handler:function(){n.table.deleteRow()}},{title:"Tabloyu sil",icon:'',handler:function(){n.table.deleteTable()}}],this.editorChangeHandler=function(e,t,r,o){e===qo.SELECTION_CHANGE&&n.detectButton(t)},this.contextMenuHandler=function(e){if(!n.isTable())return!0;e.preventDefault(),n.showMenu()},this.toggleClickHandler=function(e){n.toggleMenu(),e.preventDefault(),e.stopPropagation()},this.docClickHandler=function(){return n.hideMenu},this.quill=e,this.options=No(No({},this.DEFAULTS),t),this.table=e.getModule("table"),this.table?(this.toggle=e.addContainer("ql-table-toggle"),this.toggle.classList.add("ql-table-toggle_hidden"),this.toggle.innerHTML=this.TOGGLE_TEMPLATE,this.toggle.addEventListener("click",this.toggleClickHandler),this.quill.on(qo.EDITOR_CHANGE,this.editorChangeHandler),this.quill.root.addEventListener("contextmenu",this.contextMenuHandler)):console.error('"table" module not found')}return e.prototype.isTable=function(e){return e||(e=this.quill.getSelection()),!!e&&!(!this.quill.getFormat(e.index).table||e.length)},e.prototype.getColCount=function(e){if(void 0===e&&(e=null),e||(e=this.quill.getSelection()),!e)return 0;var t=this.table.getTable(e)[0];return t?t.rows().reduce((function(e,t){return Math.max(t.children.length,e)}),0):0},e.prototype.showMenu=function(){var e=this;this.hideMenu(),this.menu=this.quill.addContainer("ql-table-menu"),this.menuItems.forEach((function(t){e.menu.appendChild(e.createMenuItem(t))})),function(e,t,n,r,o){var i=Array.isArray(n)?n:n.split(jo),s=["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right","left-top","left-bottom","right-top","right-bottom"],a=t.classList,l=function(e){var t=e.split("-"),n=t[0],r=t[1],i=[];return o&&(i.push(o+"-"+n),r&&i.push(o+"-"+n+"-"+r),i.forEach((function(e){a.add(e)}))),i};o&&s.forEach((function(e){a.remove(o+"-"+e)}));var c=i.findIndex((function(e){return"auto"===e}));c>=0&&s.forEach((function(e){null==i.find((function(t){return-1!==t.search("^"+e)}))&&i.splice(c++,1,e)}));var u,_=t.style;_.position="absolute",_.top="0",_.left="0",_["will-change"]="transform";for(var d=!1,f=0,p=i;f{this.quill.getSelection()||setTimeout(()=>this.insert(e),0)})}insert(e){const t=(this.quill.getSelection()||{}).index||this.quill.getLength();this.quill.insertEmbed(t,"image",e,"user")}readFiles(e,t){[].forEach.call(e,e=>{if(!e.type.match(/^image\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\.microsoft\.icon)/i))return;const n=new FileReader;n.onload=e=>{t(e.target.result)};const r=e.getAsFile?e.getAsFile():e;r instanceof Blob&&n.readAsDataURL(r)})}}),zn.a.register("modules/magicUrl",$o.a),zn.a.register("modules/cursors",Qn.a),zn.a.register({"modules/tableUI":Ko},!0),window.addEventListener("load",()=>{const e=new le;var t=new Fn("ws://localhost:9000",documentUUID,e);const n=e.getText(documentUUID);let r=new zn.a("#full-container .editor",{bounds:"#full-container .editor",modules:{cursors:!0,syntax:!0,toolbar:{container:".toolbar"},table:!0,tableUI:!0,magicUrl:!0,imageDrop:!0,blotFormatter:{}},theme:"snow"});editorInstance=r,providerInstance=t;new Hn(n,r,t.awareness);t.awareness.setLocalStateField("user",{name:divergent_name,color:divergent_color}),Lo(".ql-bold",{content:"Kalın"}),Lo(".ql-italic",{content:"Eğik"}),Lo(".ql-underline",{content:"Altı Çizili"}),Lo(".ql-strike",{content:"Üstü Çizili"}),Lo(".ql-blockquote",{content:"Alıntı"}),Lo(".ql-code-block",{content:"Kod Bloğu"}),Lo('[value="ordered"]',{content:"Sıralı Liste"}),Lo('[value="bullet"]',{content:"Liste"}),Lo('[value="+1"]',{content:"İçe Adım"}),Lo('[value="-1"]',{content:"Dışa Adım"}),Lo(".ql-link",{content:"Link"}),Lo(".ql-image",{content:"Resim"}),Lo(".ql-clean",{content:"Biçimlendirmeyi Temizle"});let o=()=>{$.ajax(saveRoute,{type:"POST",data:{_token:csrfToken,data:$(".ql-editor").html()},success:function(e,t,n){},error:function(e,t,n){clearInterval(i),console.log("Error"+n)}})},i=setInterval(()=>{o()},9999999),s=!1;$(".editor").keypress((function(){s||(clearInterval(i),i=setInterval(()=>{o()},8e3),s=!0)}))})}]); //# sourceMappingURL=quill.bundle.js.map \ No newline at end of file diff --git a/editor/dist/quill.bundle.js.map b/editor/dist/quill.bundle.js.map index 95a53d7..43921c0 100644 --- a/editor/dist/quill.bundle.js.map +++ b/editor/dist/quill.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/lib0/number.js","webpack:///./node_modules/lib0/encoding.js","webpack:///./node_modules/lib0/decoding.js","webpack:///./node_modules/lib0/binary.js","webpack:///./node_modules/lib0/math.js","webpack:///./node_modules/lib0/map.js","webpack:///./node_modules/lib0/buffer.js","webpack:///./node_modules/quill-blot-formatter/dist/BlotFormatter.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/lib0/environment.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/Action.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/BlotSpec.js","webpack:///./node_modules/lib0/string.js","webpack:///./node_modules/lib0/storage.js","webpack:///./node_modules/lib0/conditions.js","webpack:///./node_modules/isomorphic.js/iso-browser.js","webpack:///./node_modules/quill-blot-formatter/dist/Options.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/AlignAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultAligner.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/Toolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultToolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/ResizeAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/DeleteAction.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/ImageSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/IframeVideoSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/UnclickableBlotSpec.js","webpack:///./node_modules/quill-cursors/dist/quill-cursors.js","webpack:///./node_modules/quill-magic-url/dist/index.js","webpack:///./node_modules/quill-blot-formatter/dist/index.js","webpack:///./node_modules/deepmerge/dist/es.js","webpack:///./node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lib0/set.js","webpack:///./node_modules/lib0/array.js","webpack:///./node_modules/lib0/observable.js","webpack:///./node_modules/lib0/isomorphic.js","webpack:///./node_modules/lib0/random.js","webpack:///./node_modules/lib0/error.js","webpack:///./node_modules/lib0/object.js","webpack:///./node_modules/lib0/function.js","webpack:///./node_modules/lib0/symbol.js","webpack:///./node_modules/lib0/pair.js","webpack:///./node_modules/lib0/dom.js","webpack:///./node_modules/lib0/json.js","webpack:///./node_modules/lib0/eventloop.js","webpack:///./node_modules/lib0/time.js","webpack:///./node_modules/lib0/logging.js","webpack:///./node_modules/lib0/iterator.js","webpack:///./node_modules/yjs/dist/yjs.mjs","webpack:///./node_modules/lib0/broadcastchannel.js","webpack:///./node_modules/y-protocols/sync.js","webpack:///./node_modules/y-protocols/awareness.js","webpack:///./node_modules/lib0/mutex.js","webpack:///./node_modules/y-websocket/src/y-websocket.js","webpack:///./node_modules/y-protocols/auth.js","webpack:///./node_modules/lib0/url.js","webpack:///./node_modules/y-quill/node_modules/y-protocols/awareness.js","webpack:///./node_modules/y-quill/src/y-quill.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/tippy.js/dist/tippy.esm.js","webpack:///./node_modules/positioning/dist/positioning.js","webpack:///./node_modules/quill-table-ui/dist/index.js","webpack:///./quill.js","webpack:///./node_modules/quill-image-drop-module/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","binary","isInteger","num","isFinite","math","isNaN","Encoder","this","cpos","cbuf","Uint8Array","bufs","createEncoder","encoder","len","length","toUint8Array","uint8arr","curPos","set","buffer","write","bufferLen","push","writeUint8","writeVarUint","writeVarInt","isNegative","writeVarString","str","encodedString","unescape","encodeURIComponent","codePointAt","writeUint8Array","uint8Array","leftCopyLen","rightCopyLen","subarray","writeVarUint8Array","byteLength","writeOnDataView","verifyLen","dview","DataView","floatTestBed","ArrayBuffer","writeAny","data","setFloat32","getFloat32","writeFloat32","setFloat64","writeFloat64","setBigInt64","writeBigInt64","Array","keys","RleEncoder","writer","super","w","count","v","flushUintOptRleEncoder","UintOptRleEncoder","flushIntDiffOptRleEncoder","encodedDiff","diff","IntDiffOptRleEncoder","StringEncoder","sarr","lensE","string","join","Decoder","arr","pos","createDecoder","hasContent","decoder","readUint8Array","view","byteOffset","readVarUint8Array","readVarUint","readUint8","Error","readVarInt","sign","readVarString","remainingLen","String","fromCodePoint","nextLen","bytes","apply","decodeURIComponent","escape","readFromDataView","dv","readAnyLookupTable","getFloat64","getBigInt64","obj","readAny","RleDecoder","reader","UintOptRleDecoder","IntDiffOptRleDecoder","hasCount","StringDecoder","spos","end","read","res","slice","BIT1","BIT2","BIT3","BIT4","BIT6","BIT7","BIT8","BITS5","BITS6","BITS7","BITS8","BITS31","floor","Math","abs","ceil","round","imul","log10","min","log2","log","sqrt","a","b","max","exp10","pow","exp","isNegativeZero","Map","copy","forEach","k","setIfUndefined","map","createT","undefined","f","any","createUint8ArrayFromLen","createUint8ArrayViewFromArrayBuffer","createUint8ArrayFromArrayBuffer","toBase64","btoa","Buffer","from","toString","fromBase64","atob","charCodeAt","buf","copyUint8Array","newBuf","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_deepmerge2","_interopRequireDefault","_Options2","default","_classCallCheck","instance","TypeError","dontMerge","destination","source","BlotFormatter","quill","_this","options","arguments","onClick","hide","arrayMerge","currentSpec","actions","overlay","document","createElement","classList","add","className","style","assign","execCommand","root","parentNode","position","addEventListener","specs","SpecClass","spec","init","setSelection","setUserSelect","appendChild","repositionOverlay","createActions","onHide","removeChild","setProperty","destroyActions","action","onUpdate","_this2","getActions","ActionClass","onCreate","onDestroy","overlayTarget","getOverlayElement","parent","specRect","getBoundingClientRect","parentRect","display","left","scrollLeft","top","scrollTop","width","height","_this3","prop","documentElement","factory","window","eval","__webpack_exports__","0","1","isNode","process","release","test","isBrowser","navigator","platform","params","args","computeParams","pargs","argv","currParamName","parg","location","search","split","kv","getVariable","env","toUpperCase","getItem","has","hasParam","_BlotFormatter","Action","formatter","_AlignAction2","_ResizeAction2","_DeleteAction2","BlotSpec","getTargetElement","fromCharCode","trimLeftRegex","fromCamelCaseRegex","fromCamelCase","separator","replace","trimLeft","match","toLowerCase","TextEncoder","utf8TextDecoder","TextDecoder","fatal","ignoreBOM","decode","_localStorage","localStorage","e","varStorage","undefinedToNull","perf","performance","isoCrypto","crypto","cryptoRandomBuffer","getRandomValues","random","_ImageSpec2","_IframeVideoSpec2","DefaultOptions","boxSizing","border","align","attribute","aligner","applyStyle","icons","center","right","toolbar","allowDeselect","mainClassName","mainStyle","minWidth","font","textAlign","color","cursor","zIndex","buttonClassName","addButtonSelectStyle","buttonStyle","background","verticalAlign","svgStyle","resize","handleClassName","handleStyle","backgroundColor","opacity","_Action3","_DefaultAligner2","_DefaultToolbar2","AlignAction","_Action","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","subClass","superClass","constructor","setPrototypeOf","_inherits","getElement","destroy","_defineProperty","DefaultAligner","_alignments","alignAttribute","alignments","icon","el","setAlignment","setStyle","removeAttribute","alignment","getAttribute","setAttribute","float","margin","DefaultToolbar","buttons","addToolbarStyle","addButtons","button","index","borderLeftWidth","children","getAlignments","innerHTML","onButtonClick","preselectButton","addButtonStyle","isAligned","selectButton","clickButton","alignTarget","deselectButton","clear","update","remove","removeProperty","ResizeAction","onMouseDown","event","HTMLElement","dragHandle","setCursor","rect","dragStartX","clientX","preDragWidth","targetRatio","onDrag","onMouseUp","deltaX","newWidth","topLeftHandle","bottomLeftHandle","newHeight","removeEventListener","createHandle","topRightHandle","bottomRightHandle","repositionHandles","box","handleXOffset","handleYOffset","parseFloat","bottom","body","_quill2","DeleteAction","_ref","_temp","_len","_key","concat","onKeyUp","keyCode","blot","find","deleteAt","_BlotSpec3","ImageSpec","_BlotSpec","tagName","img","show","_UnclickableBlotSpec3","IframeVideoSpec","_UnclickableBlotSpec","UnclickableBlotSpec","selector","onTextChange","querySelectorAll","unclickable","onMouseEnter","nextUnclickable","repositionProxyImage","onProxyImageClick","hideProxyImage","createProxyImage","proxyImage","on","canvas","context","getContext","globalAlpha","fillRect","src","toDataURL","pageXOffset","pageYOffset","id","build","CONTAINER_ELEMENT_TAG","CURSOR_CLASS","template","getElementsByClassName","SELECTION_CLASS","CARET_CONTAINER_CLASS","CARET_CLASS","FLAG_CLASS","NAME_CLASS","textContent","_hideDelay","hideDelayMs","_hideSpeedMs","hideSpeedMs","transitionDelay","transitionDuration","_el","_selectionEl","_caretEl","_flagEl","HIDDEN_CLASS","toggleFlag","toggle","SHOW_FLAG_CLASS","NO_DELAY_CLASS","setTimeout","updateCaret","updateSelection","_clearSelection","_sanitize","_sortByDomPosition","_addSelection","_selectionBlock","SELECTION_ELEMENT_TAG","SELECTION_BLOCK_CLASS","setAlpha","sort","Set","filter","_serialize","FLAG_FLAP_CLASS","Date","getTime","strict","u","h","getOwnPropertyDescriptor","isArray","newValue","__importDefault","iterator","delete","retain","insert","__importStar","_cursors","_quill","_options","_setDefaults","_container","addContainer","containerClass","_currentSelection","getSelection","_registerSelectionChangeListeners","_registerTextChangeListener","_registerDomListeners","createCursor","moveCursor","range","_updateCursor","removeCursor","cursors","clearCursors","events","SELECTION_CHANGE","TEXT_CHANGE","_handleTextChange","container","observe","_indexWithinQuillBounds","getLeaf","_leafIsValid","getBounds","_lineRanges","reduce","getClientRects","getLength","domNode","transformOnTextChange","_transformCursors","selectionChangeSource","_emitSelection","emitter","emit","sources","API","getLines","createRange","selectNode","path","pop","setStart","setEnd","transformPosition","g","M","format","G","rgb","exec","rgba","hsl","hsla","hsv","hsva","hex8","q","F","hex6","hex4","hex3","U","T","substr","H","j","ok","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","D","charAt","I","toHsl","N","_","y","desaturate","A","toRgb","x","C","S","E","O","L","toHsv","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","toHsvString","toHslString","toHex","toHexString","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","R","toFilter","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","equals","mix","readability","isReadable","level","size","mostReadable","includeFallbackColors","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexNames","indexOf","parseInt","P","B","z","CSS_UNIT","RegExp","screen","deviceXDPI","logicalXDPI","isBroken","createTextNode","startContainer","startOffset","ActiveXObject","Function","ieZoom","endContainer","endOffset","commonAncestorContainer","childNodes","cloneRange","some","__entries__","splice","requestAnimationFrame","now","MutationObserver","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","disconnect_","updateObservers_","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","disconnect","propertyName","getInstance","instance_","ownerDocument","defaultView","SVGGraphicsElement","SVGElement","getBBox","clientWidth","clientHeight","getComputedStyle","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","DOMRectReadOnly","contentRect","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","unobserve","clearActive","WeakMap","ResizeObserver","ops","unshift","chop","partition","changeLength","hasNext","next","compose","peek","peekType","peekLength","rest","INSERT","DELETE","EQUAL","eachLine","invert","transform","Op","AttributeMap","shim","propertyIsEnumerable","supported","unsupported","oldRange","newRange","substring","offset","singleton","locals","querySelector","HTMLIFrameElement","contentDocument","head","css","media","sourceMap","nonce","nc","Boolean","styleSheet","cssText","insertBefore","JSON","stringify","firstChild","all","base","sourceRoot","getOwnPropertySymbols","supportsDescriptors","callee","is","global","ignoreCase","multiline","dotAll","unicode","sticky","flags","done","return","URL","getOwnPropertyDescriptors","defaultProtocol","normalizeProtocol","forceHttp","forceHttps","stripAuthentication","stripHash","stripWWW","removeQueryParameters","removeTrailingSlash","removeDirectoryIndex","sortQueryParameters","Reflect","trim","shift","startsWith","protocol","username","password","hash","pathname","decodeURI","hostname","searchParams","stripProtocol","globalRegularExpression","urlRegularExpression","normalizeRegularExpression","normalizeUrlOptions","registerTypeListener","registerPasteListener","clipboard","addMatcher","Node","TEXT_NODE","link","normalize","checkTextForUrl","text","localName","getIndex","textToUrl","updateContents","console","error","Quill","register","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","isLegacyArguments","getPolyfill","implementation","entries","values","Atomics","encodeURI","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","parse","valueOf","Promise","then","reject","resolve","Proxy","RangeError","SharedArrayBuffer","SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakSet","getOwnPropertyNames","lastIndex","getDay","slashes","auth","host","port","query","href","resolveObject","isString","Url","javascript","http","https","ftp","gopher","file","isObject","lastIndexOf","parseHost","$","toASCII","W","V","isNullOrUndefined","isNull","nodeType","overflow","version","ucs2","encode","toUnicode","punycode","webpackPolyfill","deprecate","paths","maxKeys","_Options","_AlignAction","_DefaultAligner","_DefaultToolbar","_DeleteAction","_ResizeAction","_ImageSpec","_IframeVideoSpec","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","val","defaultArrayMerge","element","sourceIsArray","mergeObject","array","prev","deepmerge_1","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","arg","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","type","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","last","_observers","observers","uint32","methodUnimplemented","unexpectedCase","hasProperty","callAll","fs","equalityDeep","equalityStrict","Pair","mapToStyleString","DOMParser","ELEMENT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","createTimeoutClass","clearFunction","timeoutId","getUnixTime","clearInterval","cancelAnimationFrame","cancelIdleCallback","BOLD","UNBOLD","BLUE","GREY","GREEN","RED","PURPLE","ORANGE","UNCOLOR","_browserStyleMap","_nodeStyleMap","computeLoggingArgs","strBuilder","logArgs","styles","currentStyle","print","vconsoles","vc","createIterator","iteratorMap","fmap","DeleteItem","clock","DeleteSet","clients","iterateDeletedStructs","transaction","ds","deletes","clientid","structs","doc","store","del","iterateStructs","isDeleted","dis","client","midindex","mid","midclock","findIndexDS","sortAndMergeDeleteSet","dels","addToDeleteSet","createDeleteSet","createDeleteSetFromStructStore","ss","dsitems","struct","deleted","writeDeleteSet","restEncoder","resetDsCurVal","item","writeDsClock","writeDsLen","readAndApplyDeleteSet","unappliedDS","numClients","restDecoder","numberOfDeletes","state","getState","readDsClock","clockEnd","readDsLen","findIndexSS","splitItem","unappliedDSEncoder","pendingDeleteReaders","generateNewClientId","gc","gcFilter","clientID","share","StructStore","_transaction","_transactionCleanups","origin","transact","TypeConstructor","_integrate","Constr","_map","_start","_length","YArray","YText","YXmlFragment","eventName","dsCurrVal","keyClockDecoder","clientDecoder","leftClockDecoder","rightClockDecoder","infoDecoder","stringDecoder","parentInfoDecoder","typeRefDecoder","lenDecoder","ID","keyClock","keyMap","keyClockEncoder","clientEncoder","leftClockEncoder","rightClockEncoder","infoEncoder","stringEncoder","parentInfoEncoder","typeRefEncoder","lenEncoder","info","isYKey","embed","DefaultDSEncoder","DefaultDSDecoder","DefaultUpdateEncoder","DefaultUpdateDecoder","createID","writeClientsStructs","_sm","sm","getStateVector","startNewStructs","writeClient","firstStruct","writeStructs","readStructs","clientsStructRefs","pendingClientsStructRefs","clientRefs","numOfStateUpdates","numberOfStructs","refs","readClient","readInfo","cantCopyParentInfo","readLeftID","readRightID","readParentInfo","readString","readItemContent","readLen","GC","readClientsStructRefs","clientsStructsRefs","structRefs","pendingStructRefs","merged","r1","r2","mergeReadStructsIntoPendingReads","stack","pendingStack","clientsStructRefsIds","getNextStructTarget","nextStructsTarget","curStructsTarget","stackHead","localClock","missing","getMissing","integrate","resumeStructIntegration","pendingReaders","tryResumePendingDeleteReaders","readUpdateV2","ydoc","transactionOrigin","structDecoder","applyUpdate","YDecoder","applyUpdateV2","encodeStateAsUpdateV2","encodedTargetStateVector","targetStateVector","writeStateAsUpdate","decodeStateVector","readStateVector","ssLength","decodedState","writeStateVector","sv","encodeStateVectorV2","writeDocumentStateVector","EventHandler","createEventHandler","addEventHandlerListener","eventHandler","removeEventHandlerListener","callEventHandlerListeners","arg0","arg1","compareIDs","findRootTypeKey","RelativePosition","tname","createRelativePositionFromJSON","json","AbsolutePosition","createRelativePosition","typeid","_item","createRelativePositionFromTypeIndex","countable","createAbsolutePositionFromRelativePosition","rpos","rightID","typeID","followRedone","content","createAbsolutePosition","compareRelativePositions","Snapshot","createSnapshot","isVisible","snapshot","splitSnapshotAffectedStructs","meta","getItemCleanStart","lastStruct","addStruct","findIndexCleanStart","getItemCleanEnd","clockStart","Transaction","local","deleteSet","beforeState","afterState","changed","changedParentTypes","_mergeStructs","writeUpdateMessageFromTransaction","writeStructsFromTransaction","tryToMergeWithLeft","mergeWith","parentSub","tryGcDeleteSet","deleteItems","di","deleteItem","endDeleteItemClock","si","keep","tryMergeDeleteSet","cleanupTransactions","transactionCleanups","mergeStructs","subs","itemtype","_callObserver","currentTarget","_dEH","beforeClock","firstChangePos","replacedStructPos","initialCall","_changes","getPathTo","changes","added","delta","lastOp","packOp","adds","getContent","oldValue","child","globalSearchMarkerTimestamp","ArraySearchMarker","timestamp","overwriteMarker","findMarker","yarray","_searchMarker","pindex","refreshMarkerTimestamp","searchMarker","pm","markPosition","updateMarkerChanges","callTypeObservers","changedType","_eH","parentSubs","typeListToArray","cs","typeListForEach","typeListMap","result","typeListCreateIterator","currentContent","currentContentIndex","typeListInsertGenericsAfter","referenceItem","ownClientId","jsonContent","packJsonContent","lastId","ContentAny","typeListInsertGenerics","startIndex","typeListDelete","startLength","typeMapDelete","typeMapSet","typeMapGet","createMapIterator","iteratorFilter","entry","YArrayEvent","_prelimContent","typeListGet","writeTypeRef","YArrayRefID","YMapEvent","ymap","keysChanged","typeMapHas","YMapRefID","equalAttrs","currentAttributes","ContentString","updateCurrentAttributes","findNextPosition","findPosition","insertNegatedAttributes","currPos","negatedAttributes","forward","minimizeAttributeChanges","insertAttributes","currentVal","insertText","formatText","attr","newlines","cleanupFormattingGap","startAttributes","endAttributes","cleanups","deleteText","startAttrs","YTextEvent","ytext","_delta","oldAttributes","deleteLen","addOp","op","curVal","_pending","foundFormattingItem","afterClock","cleanupYTextFormatting","attrs","cleanupContextlessFormattingGap","sanitize","ins","applyDelta","prevSnapshot","computeYChange","packStr","addAttributes","cur","user","insertEmbed","YTextRefID","YXmlTreeWalker","_filter","_root","_currentNode","_firstCall","YXmlElement","nodeName","YXmlEvent","xml","_document","hooks","fragment","createDocumentFragment","_createAssociation","xmlType","toDOM","YXmlFragmentRefID","_prelimAttrs","getAttributes","stringBuilder","keysLen","toLocaleLowerCase","attributeName","attributeValue","typeMapGetAll","dom","yxml","YXmlElementRefID","writeKey","childListChanged","attributesChanged","YXmlHook","hookName","hook","createDom","YXmlHookRefID","YXmlText","toDelta","nestedNodes","node","YXmlTextRefID","encodingRef","writeInfo","writeLen","writeBuf","ContentDeleted","markDeleted","writeJSON","ContentJSON","writeString","typeRefs","readKey","_copy","_write","nextID","redone","leftItem","rightItem","rightOrigin","isCountable","isMarked","doKeep","doDelete","parentItem","conflictingItems","itemsBeforeOrigin","addChangedTypeToTransaction","parentGCd","newStruct","replaceStruct","getRef","writeLeftID","writeRightID","ykey","writeParentInfo","contentRefs","readBuf","readJSON","readTypeRef","channels","BC","BroadcastChannel","room","onmessage","storage","setItem","getChannel","bc","publish","postMessage","writeSyncStep1","writeSyncStep2","encodedStateVector","readSyncStep2","decoding","readSyncMessage","messageType","readSyncStep1","states","_checkInterval","setInterval","getLocalState","outdatedTimeout","lastUpdated","setLocalState","removeAwarenessStates","currLocalMeta","prevState","updated","filteredUpdated","removed","field","awareness","curMeta","encodeAwarenessUpdate","createMutex","token","provider","reason","warn","url","readMessage","emitSynced","syncMessageType","synced","getStates","clientMeta","currClock","permissionDeniedHandler","setupWS","shouldConnect","ws","websocket","_WS","binaryType","wsconnecting","wsconnected","wsLastMessageReceived","send","onclose","status","wsUnsuccessfulReconnects","onopen","encoderAwarenessState","broadcastMessage","bcconnected","mux","serverUrl","roomname","connect","WebSocketPolyfill","WebSocket","resyncInterval","encodedParams","results","bcChannel","_localAwarenessState","_synced","_resyncInterval","alert","_bcSubscriber","_updateHandler","_awarenessUpdateHandler","changedClients","close","messageReconnectTimeout","encoderSync","encoderState","encoderAwarenessQuery","disconnectBc","connectBc","updateCursor","quillCursors","aw","clientId","anchor","err","getModule","_negatedUsedFormats","_awarenessChange","_typeObserver","eventDelta","_quillObserver","eventType","sel","setLocalStateField","setContents","getWindow","getWindowScroll","win","isElement","isHTMLElement","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","scroll","offsets","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getParentNode","assignedSlot","listScrollParents","scrollParent","getScrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","html","getOffsetParent","currentNode","perspective","willChange","getContainingBlock","basePlacements","variationPlacements","acc","placement","modifierPhases","order","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","fn","pending","orderedModifiers","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","current","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","roundOffsets","hasX","hasY","sideX","sideY","_Object$assign","commonStyles","getOppositePlacement","matched","getOppositeVariationPlacement","contains","rootNode","getRootNode","ShadowRoot","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","userAgent","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","arrow","initialStyles","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","TOUCH_OPTIONS","capture","getValueAtIndexOrReturn","defaultValue","isType","invokeWithArgsOrReturn","ms","normalizeToArray","pushIfUnique","arrayFrom","div","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","els","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","listener","method","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","onWindowBlur","activeElement","blur","ua","isIE","pluginProps","animateFill","followCursor","inlinePositioning","defaultProps","appendTo","aria","expanded","delay","duration","getReferenceClientRect","hideOnClick","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onHidden","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","plugins","popperOptions","render","showOnCreate","touch","trigger","triggerTarget","allowHTML","animation","inertia","maxWidth","role","theme","defaultKeys","getExtendedPassedProps","passedProps","plugin","evaluateProps","valueAsString","getDataAttributeProps","dangerouslySetInnerHTML","createArrowElement","getChildren","firstElementChild","boxChildren","backdrop","prevProps","nextProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isEnabled","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","setContent","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","getCurrentTarget","hasAttribute","getIsDefaultRenderFn","visibility","addDocumentPress","transition","_getDefaultTemplateCh2","getDefaultTemplateChildren","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","callback","onTransitionEnd","onTransitionedIn","mount","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","getDocument","enable","disable","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","pointerEvents","shouldInvokePropsHook","_instance$props","pluginHooks","currentValue","nextValue","onDocumentPress","onTouchMove","onTouchStart","handler","onMouseLeave","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","clientY","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$popperInsta","relatedTarget","_instance$props2","computedReference","_getNormalizedTouchSe","touchValue","touchDelay","tippy","targets","optionalProps","instances","setDefaultProps","Positioning","getAllStyles","getStyle","isStaticPositioned","offsetParentEl","elPosition","parentOffset","elBcr","viewportOffset","elOffset","positionElements","hostElement","targetElement","appendToBody","placementPrimary","_c","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","windowHeight","innerHeight","windowWidth","innerWidth","placementSeparator","positionService","QuillEvents","QuillSources","__assign","DEFAULT_PLACEMENT","TableUI","TOGGLE_TEMPLATE","DEFAULTS","maxRowCount","menuItems","getColCount","table","insertColumnRight","insertColumnLeft","insertRowAbove","insertRowBelow","deleteColumn","deleteRow","deleteTable","editorChangeHandler","detectButton","contextMenuHandler","evt","isTable","preventDefault","showMenu","toggleClickHandler","toggleMenu","stopPropagation","docClickHandler","hideMenu","EDITOR_CHANGE","getTable","rows","row","menu","it","createMenuItem","baseClass","placementVals","addClassesToTarget","targetPlacement","primary","secondary","classes","classname","placementToRemove","hasAuto","findIndex","testPlacement","isInViewport","placementVals_1","addedClasses","iconSpan","textSpan","innerText","focus","getLine","cell","containerBounds","bounds","showToggle","hideToggle","handleDrop","handlePaste","dataTransfer","files","caretRangeFromPoint","selection","setBaseAndExtent","readFiles","clipboardData","items","dataUrl","FileReader","onload","blob","getAsFile","Blob","readAsDataURL","getText","editor","divergent_name","divergent_color"],"mappings":"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","file":"quill.bundle.js","sourcesContent":[" \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 = \"/quill/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\n\n/* istanbul ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nconst verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer.\n *\n * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num >>>= 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * Encodes integers in the range from [-2147483648, -2147483647].\n *\n * We don't use zig-zag encoding because we want to keep the option open\n * to use the same function for BigInt and 53bit integers (doubles).\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num >>>= 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num >>>= 7\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeVarString = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write the content of another Encoder.\n *\n * TODO: can be improved!\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object|Array|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && data <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (data instanceof Array) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = buffer.createUint8ArrayViewFromArrayBuffer(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let len = 0\n while (true) {\n const r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return num >>> 0 // return unsigned number!\n }\n /* istanbul ignore if */\n if (len > 35) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if unmber is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let len = 6\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n while (true) {\n r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return sign * (num >>> 0)\n }\n /* istanbul ignore if */\n if (len > 41) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\nexport const readVarString = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0)\n\n/**\n * @type {Array}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object\n const len = readVarUint(decoder)\n /**\n * @type {Object}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = diff >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template X,Y\n * @param {Map} m\n * @return {Map}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template T,K\n * @param {Map} map\n * @param {K} key\n * @param {function():T} createT\n * @return {T}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map} m\n * @param {function(V,K):R} f\n * @return {Array}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* istanbul ignore next */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* istanbul ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* istanbul ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _deepmerge = require('deepmerge');\n\nvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\nvar _Options = require('./Options');\n\nvar _Options2 = _interopRequireDefault(_Options);\n\nvar _Action = require('./actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\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 dontMerge = function dontMerge(destination, source) {\n return source;\n};\n\nvar BlotFormatter = function () {\n function BlotFormatter(quill) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BlotFormatter);\n\n this.onClick = function () {\n _this.hide();\n };\n\n this.quill = quill;\n this.options = (0, _deepmerge2.default)(_Options2.default, options, { arrayMerge: dontMerge });\n this.currentSpec = null;\n this.actions = [];\n this.overlay = document.createElement('div');\n this.overlay.classList.add(this.options.overlay.className);\n if (this.options.overlay.style) {\n Object.assign(this.overlay.style, this.options.overlay.style);\n }\n\n // disable native image resizing on firefox\n document.execCommand('enableObjectResizing', false, 'false'); // eslint-disable-line no-undef\n this.quill.root.parentNode.style.position = this.quill.root.parentNode.style.position || 'relative';\n\n this.quill.root.addEventListener('click', this.onClick);\n this.specs = this.options.specs.map(function (SpecClass) {\n return new SpecClass(_this);\n });\n this.specs.forEach(function (spec) {\n return spec.init();\n });\n }\n\n _createClass(BlotFormatter, [{\n key: 'show',\n value: function show(spec) {\n this.currentSpec = spec;\n this.currentSpec.setSelection();\n this.setUserSelect('none');\n this.quill.root.parentNode.appendChild(this.overlay);\n this.repositionOverlay();\n this.createActions(spec);\n }\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.currentSpec) {\n return;\n }\n\n this.currentSpec.onHide();\n this.currentSpec = null;\n this.quill.root.parentNode.removeChild(this.overlay);\n this.overlay.style.setProperty('display', 'none');\n this.setUserSelect('');\n this.destroyActions();\n }\n }, {\n key: 'update',\n value: function update() {\n this.repositionOverlay();\n this.actions.forEach(function (action) {\n return action.onUpdate();\n });\n }\n }, {\n key: 'createActions',\n value: function createActions(spec) {\n var _this2 = this;\n\n this.actions = spec.getActions().map(function (ActionClass) {\n var action = new ActionClass(_this2);\n action.onCreate();\n return action;\n });\n }\n }, {\n key: 'destroyActions',\n value: function destroyActions() {\n this.actions.forEach(function (action) {\n return action.onDestroy();\n });\n this.actions = [];\n }\n }, {\n key: 'repositionOverlay',\n value: function repositionOverlay() {\n if (!this.currentSpec) {\n return;\n }\n\n var overlayTarget = this.currentSpec.getOverlayElement();\n if (!overlayTarget) {\n return;\n }\n\n var parent = this.quill.root.parentNode;\n var specRect = overlayTarget.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n\n Object.assign(this.overlay.style, {\n display: 'block',\n left: specRect.left - parentRect.left - 1 + parent.scrollLeft + 'px',\n top: specRect.top - parentRect.top + parent.scrollTop + 'px',\n width: specRect.width + 'px',\n height: specRect.height + 'px'\n });\n }\n }, {\n key: 'setUserSelect',\n value: function setUserSelect(value) {\n var _this3 = this;\n\n var props = ['userSelect', 'mozUserSelect', 'webkitUserSelect', 'msUserSelect'];\n\n props.forEach(function (prop) {\n // set on contenteditable element and \n _this3.quill.root.style.setProperty(prop, value);\n if (document.documentElement) {\n document.documentElement.style.setProperty(prop, value);\n }\n });\n }\n }]);\n\n return BlotFormatter;\n}();\n\nexports.default = BlotFormatter;","/*!\n * Quill Editor v2.0.0-dev.3\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\n\\n//# sourceURL=webpack://Quill/./assets/icons/video.svg?\");\n\n/***/ }),\n\n/***/ \"./blots/block.js\":\n/*!************************!*\\\n !*** ./blots/block.js ***!\n \\************************/\n/*! exports provided: blockDelta, bubbleFormats, BlockEmbed, 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__, \\\"blockDelta\\\", function() { return blockDelta; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bubbleFormats\\\", function() { return bubbleFormats; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BlockEmbed\\\", function() { return BlockEmbed; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Block; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\nconst NEWLINE_LENGTH = 1;\\n\\nclass Block extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n this.cache = {};\\n }\\n\\n insertAt(index, value, def) {\\n if (def != null) {\\n super.insertAt(index, value, def);\\n this.cache = {};\\n return;\\n }\\n\\n if (value.length === 0) return;\\n const lines = value.split('\\\\n');\\n const text = lines.shift();\\n\\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\\n this.cache = {};\\n }\\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 {\\n head\\n } = this.children;\\n super.insertBefore(blot, ref);\\n\\n if (head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]) {\\n head.remove();\\n }\\n\\n this.cache = {};\\n }\\n\\n length() {\\n if (this.cache.length == null) {\\n this.cache.length = super.length() + NEWLINE_LENGTH;\\n }\\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\\n if (index === 0) {\\n this.parent.insertBefore(clone, this);\\n return this;\\n }\\n\\n this.parent.insertBefore(clone, this.next);\\n return clone;\\n }\\n\\n const next = super.split(index, force);\\n this.cache = {};\\n return next;\\n }\\n\\n}\\n\\nBlock.blotName = 'block';\\nBlock.tagName = 'P';\\nBlock.defaultChild = _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"];\\nBlock.allowedChildren = [_break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], _inline__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]];\\n\\nclass BlockEmbed extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"] {\\n attach() {\\n super.attach();\\n this.attributes = new parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"AttributorStore\\\"](this.domNode);\\n }\\n\\n delta() {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(this.value(), extend__WEBPACK_IMPORTED_MODULE_0___default()(this.formats(), this.attributes.values()));\\n }\\n\\n format(name, value) {\\n const attribute = this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_ATTRIBUTE);\\n\\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\\n}\\n\\nBlockEmbed.scope = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\\n\\nfunction blockDelta(blot, filter = true) {\\n return blot.descendants(parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"LeafBlot\\\"]).reduce((delta, leaf) => {\\n if (leaf.length() === 0) {\\n return delta;\\n }\\n\\n return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a()).insert('\\\\n', bubbleFormats(blot));\\n}\\n\\nfunction bubbleFormats(blot, formats = {}, filter = true) {\\n if (blot == null) return formats;\\n\\n if (typeof blot.formats === 'function') {\\n formats = extend__WEBPACK_IMPORTED_MODULE_0___default()(formats, blot.formats());\\n\\n if (filter) {\\n // exclude syntax highlighting from deltas and getFormat()\\n delete formats['code-token'];\\n }\\n }\\n\\n if (blot.parent == null || blot.parent.statics.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\\n return formats;\\n }\\n\\n return bubbleFormats(blot.parent, formats, filter);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/block.js?\");\n\n/***/ }),\n\n/***/ \"./blots/break.js\":\n/*!************************!*\\\n !*** ./blots/break.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Break extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n}\\n\\nBreak.blotName = 'break';\\nBreak.tagName = 'BR';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Break);\\n\\n//# sourceURL=webpack://Quill/./blots/break.js?\");\n\n/***/ }),\n\n/***/ \"./blots/container.js\":\n/*!****************************!*\\\n !*** ./blots/container.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Container extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"] {}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Container);\\n\\n//# sourceURL=webpack://Quill/./blots/container.js?\");\n\n/***/ }),\n\n/***/ \"./blots/cursor.js\":\n/*!*************************!*\\\n !*** ./blots/cursor.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\nclass Cursor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n let target = this;\\n let index = 0;\\n\\n while (target != null && target.statics.scope !== parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK_BLOT) {\\n index += target.offset(target.parent);\\n target = target.parent;\\n }\\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(); // Link format will insert text outside of anchor tag\\n\\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\\n }\\n\\n const prevTextBlot = this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.prev : null;\\n const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\\n const nextTextBlot = this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.next : null;\\n const nextText = nextTextBlot ? nextTextBlot.text : '';\\n const {\\n textNode\\n } = this; // take text from inside this blot and reset it\\n\\n const newText = textNode.data.split(Cursor.CONTENTS).join('');\\n textNode.data = Cursor.CONTENTS; // proactively merge TextBlots around cursor so that optimization\\n // doesn't lose the cursor. the reason we are here in cursor.restore\\n // could be that the user clicked in prevTextBlot or nextTextBlot, or\\n // the user typed something.\\n\\n let mergedTextBlot;\\n\\n if (prevTextBlot) {\\n mergedTextBlot = prevTextBlot;\\n\\n if (newText || nextTextBlot) {\\n prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\\n\\n if (nextTextBlot) {\\n nextTextBlot.remove();\\n }\\n }\\n } else if (nextTextBlot) {\\n mergedTextBlot = nextTextBlot;\\n nextTextBlot.insertAt(0, newText);\\n } else {\\n const newTextNode = document.createTextNode(newText);\\n mergedTextBlot = this.scroll.create(newTextNode);\\n this.parent.insertBefore(mergedTextBlot, this);\\n }\\n\\n this.remove();\\n\\n if (range) {\\n // calculate selection to restore\\n const remapOffset = (node, offset) => {\\n if (prevTextBlot && node === prevTextBlot.domNode) {\\n return offset;\\n }\\n\\n if (node === textNode) {\\n return prevTextLength + offset - 1;\\n }\\n\\n if (nextTextBlot && node === nextTextBlot.domNode) {\\n return prevTextLength + newText.length + offset;\\n }\\n\\n return null;\\n };\\n\\n const start = remapOffset(range.start.node, range.start.offset);\\n const end = remapOffset(range.end.node, range.end.offset);\\n\\n if (start !== null && end !== null) {\\n return {\\n startNode: mergedTextBlot.domNode,\\n startOffset: start,\\n endNode: mergedTextBlot.domNode,\\n endOffset: end\\n };\\n }\\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\\n}\\n\\nCursor.blotName = 'cursor';\\nCursor.className = 'ql-cursor';\\nCursor.tagName = 'span';\\nCursor.CONTENTS = '\\\\uFEFF'; // Zero width no break space\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Cursor);\\n\\n//# sourceURL=webpack://Quill/./blots/cursor.js?\");\n\n/***/ }),\n\n/***/ \"./blots/embed.js\":\n/*!************************!*\\\n !*** ./blots/embed.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\nconst GUARD_TEXT = '\\\\uFEFF';\\n\\nclass Embed extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (node === this.leftGuard) {\\n if (this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Embed);\\n\\n//# sourceURL=webpack://Quill/./blots/embed.js?\");\n\n/***/ }),\n\n/***/ \"./blots/inline.js\":\n/*!*************************!*\\\n !*** ./blots/inline.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\nclass Inline extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"InlineBlot\\\"] {\\n static compare(self, other) {\\n const selfIndex = Inline.order.indexOf(self);\\n const otherIndex = Inline.order.indexOf(other);\\n\\n if (selfIndex >= 0 || otherIndex >= 0) {\\n return selfIndex - otherIndex;\\n }\\n\\n if (self === other) {\\n return 0;\\n }\\n\\n if (self < other) {\\n return -1;\\n }\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOT)) {\\n const blot = this.isolate(index, length);\\n\\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\\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\\n}\\n\\nInline.allowedChildren = [Inline, _break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\\n\\nInline.order = ['cursor', 'inline', // Must be lower\\n'link', // Chrome wants to be lower\\n'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\\n];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Inline);\\n\\n//# sourceURL=webpack://Quill/./blots/inline.js?\");\n\n/***/ }),\n\n/***/ \"./blots/scroll.js\":\n/*!*************************!*\\\n !*** ./blots/scroll.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./container */ \\\"./blots/container.js\\\");\\n\\n\\n\\n\\n\\n\\nfunction isLine(blot) {\\n return blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] || blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"];\\n}\\n\\nclass Scroll extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ScrollBlot\\\"] {\\n constructor(registry, domNode, {\\n emitter\\n }) {\\n super(registry, domNode);\\n this.emitter = emitter;\\n this.batch = false;\\n this.optimize();\\n this.enable();\\n this.domNode.addEventListener('dragstart', e => this.handleDragStart(e));\\n }\\n\\n batchStart() {\\n if (!Array.isArray(this.batch)) {\\n this.batch = [];\\n }\\n }\\n\\n batchEnd() {\\n const mutations = this.batch;\\n this.batch = false;\\n this.update(mutations);\\n }\\n\\n emitMount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_MOUNT, blot);\\n }\\n\\n emitUnmount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_UNMOUNT, blot);\\n }\\n\\n deleteAt(index, length) {\\n const [first, offset] = this.line(index);\\n const [last] = this.line(index + length);\\n super.deleteAt(index, length);\\n\\n if (last != null && first !== last && offset > 0) {\\n if (first instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"] || last instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"]) {\\n this.optimize();\\n return;\\n }\\n\\n const ref = last.children.head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] ? null : last.children.head;\\n first.moveChildren(last, ref);\\n first.remove();\\n }\\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 handleDragStart(event) {\\n event.preventDefault();\\n }\\n\\n insertAt(index, value, def) {\\n if (index >= this.length()) {\\n if (def == null || this.scroll.query(value, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) == null) {\\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\\n this.appendChild(blot);\\n\\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\\n this.optimize();\\n }\\n\\n insertBefore(blot, ref) {\\n if (blot.statics.scope === parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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 isEnabled() {\\n return this.domNode.getAttribute('contenteditable') === 'true';\\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\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"]) {\\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\\n }\\n\\n lengthLeft -= childLength;\\n });\\n return lines;\\n };\\n\\n return getLines(this, index, length);\\n }\\n\\n optimize(mutations = [], context = {}) {\\n if (this.batch) return;\\n super.optimize(mutations, context);\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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() {// Never remove self\\n }\\n\\n update(mutations) {\\n if (this.batch) {\\n if (Array.isArray(mutations)) {\\n this.batch = this.batch.concat(mutations);\\n }\\n\\n return;\\n }\\n\\n let source = _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER;\\n\\n if (typeof mutations === 'string') {\\n source = mutations;\\n }\\n\\n if (!Array.isArray(mutations)) {\\n mutations = this.observer.takeRecords();\\n }\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BEFORE_UPDATE, source, mutations);\\n }\\n\\n super.update(mutations.concat([])); // pass copy\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_UPDATE, source, mutations);\\n }\\n }\\n\\n}\\n\\nScroll.blotName = 'scroll';\\nScroll.className = 'ql-editor';\\nScroll.tagName = 'DIV';\\nScroll.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"];\\nScroll.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"], _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"], _container__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Scroll);\\n\\n//# sourceURL=webpack://Quill/./blots/scroll.js?\");\n\n/***/ }),\n\n/***/ \"./blots/text.js\":\n/*!***********************!*\\\n !*** ./blots/text.js ***!\n \\***********************/\n/*! exports provided: default, escapeText */\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 Text; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"escapeText\\\", function() { return escapeText; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Text extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"TextBlot\\\"] {}\\n\\nfunction escapeText(text) {\\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 });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/text.js?\");\n\n/***/ }),\n\n/***/ \"./core.js\":\n/*!*****************!*\\\n !*** ./core.js ***!\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 _core_quill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_embed__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blots/embed */ \\\"./blots/embed.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_scroll__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blots/scroll */ \\\"./blots/scroll.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/clipboard */ \\\"./modules/clipboard.js\\\");\\n/* harmony import */ var _modules_history__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/history */ \\\"./modules/history.js\\\");\\n/* harmony import */ var _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/keyboard */ \\\"./modules/keyboard.js\\\");\\n/* harmony import */ var _modules_uploader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/uploader */ \\\"./modules/uploader.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'blots/block': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"],\\n 'blots/block/embed': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"BlockEmbed\\\"],\\n 'blots/break': _blots_break__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"],\\n 'blots/container': _blots_container__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'blots/cursor': _blots_cursor__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'blots/embed': _blots_embed__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'blots/inline': _blots_inline__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'blots/scroll': _blots_scroll__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"],\\n 'blots/text': _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"],\\n 'modules/clipboard': _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"],\\n 'modules/history': _modules_history__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"],\\n 'modules/keyboard': _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'modules/uploader': _modules_uploader__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./core.js?\");\n\n/***/ }),\n\n/***/ \"./core/editor.js\":\n/*!************************!*\\\n !*** ./core/editor.js ***!\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 clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\\n if (op.insert != null) {\\n if (typeof op.insert === 'string') {\\n let text = op.insert;\\n\\n if (text.endsWith('\\\\n') && consumeNextNewline) {\\n consumeNextNewline = false;\\n text = text.slice(0, -1);\\n }\\n\\n if ((index >= scrollLength || this.scroll.descendant(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"BlockEmbed\\\"], index)[0]) && !text.endsWith('\\\\n')) {\\n consumeNextNewline = true;\\n }\\n\\n this.scroll.insertAt(index, text);\\n const [line, offset] = this.scroll.line(index);\\n let formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(line));\\n\\n if (line instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n const [leaf] = line.descendant(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], offset);\\n formats = extend__WEBPACK_IMPORTED_MODULE_2___default()(formats, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(leaf));\\n }\\n\\n attributes = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].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\\n if (key == null) return index;\\n this.scroll.insertAt(index, key, op.insert[key]);\\n }\\n\\n scrollLength += length;\\n }\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n }\\n\\n getFormat(index, length = 0) {\\n let lines = [];\\n let leaves = [];\\n\\n if (length === 0) {\\n this.scroll.path(index).forEach(path => {\\n const [blot] = path;\\n\\n if (blot instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n lines.push(blot);\\n } else if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"]) {\\n leaves.push(blot);\\n }\\n });\\n } else {\\n lines = this.scroll.lines(index, length);\\n leaves = this.scroll.descendants(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], index, length);\\n }\\n\\n const formatsArr = [lines, leaves].map(blots => {\\n if (blots.length === 0) return {};\\n let formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blots.shift());\\n\\n while (Object.keys(formats).length > 0) {\\n const blot = blots.shift();\\n if (blot == null) return formats;\\n formats = combineFormats(Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blot), formats);\\n }\\n\\n return formats;\\n });\\n return extend__WEBPACK_IMPORTED_MODULE_2___default.a.apply(extend__WEBPACK_IMPORTED_MODULE_2___default.a, formatsArr);\\n }\\n\\n getHTML(index, length) {\\n const [line, lineOffset] = this.scroll.line(index);\\n\\n if (line.length() >= lineOffset + length) {\\n return convertHTML(line, lineOffset, length, true);\\n }\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert({\\n [embed]: value\\n }));\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(text, clone__WEBPACK_IMPORTED_MODULE_0___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 !== _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].blotName) return false;\\n if (block.children.length > 1) return false;\\n return block.children.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"];\\n }\\n\\n removeFormat(index, length) {\\n const text = this.getText(index, length);\\n const [line, offset] = this.scroll.line(index + length);\\n let suffixLength = 0;\\n let suffix = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a();\\n\\n if (line != null) {\\n suffixLength = line.length() - offset;\\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\\\n');\\n }\\n\\n const contents = this.getContents(index, length + suffixLength);\\n const diff = contents.diff(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(text).concat(suffix));\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(diff);\\n return this.applyDelta(delta);\\n }\\n\\n update(change, mutations = [], selectionInfo = undefined) {\\n const oldDelta = this.delta;\\n\\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 = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(textBlot);\\n const index = textBlot.offset(this.scroll);\\n const oldValue = mutations[0].oldValue.replace(_blots_cursor__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].CONTENTS, '');\\n const oldText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(oldValue);\\n const newText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(textBlot.value());\\n const relativeSelectionInfo = selectionInfo && {\\n oldRange: shiftRange(selectionInfo.oldRange, -index),\\n newRange: shiftRange(selectionInfo.newRange, -index)\\n };\\n const diffDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\\n change = diffDelta.reduce((delta, op) => {\\n if (op.insert) {\\n return delta.insert(op.insert, formats);\\n }\\n\\n return delta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n this.delta = oldDelta.compose(change);\\n } else {\\n this.delta = this.getDelta();\\n\\n if (!change || !deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(oldDelta.compose(change), this.delta)) {\\n change = oldDelta.diff(this.delta, selectionInfo);\\n }\\n }\\n\\n return change;\\n }\\n\\n}\\n\\nfunction convertListHTML(items, lastIndent, types) {\\n if (items.length === 0) {\\n const [endTag] = getListType(types.pop());\\n\\n if (lastIndent <= 0) {\\n return \\\"\\\");\\n }\\n\\n return \\\"\\\").concat(convertListHTML([], lastIndent - 1, types));\\n }\\n\\n const [{\\n child,\\n offset,\\n length,\\n indent,\\n type\\n }, ...rest] = items;\\n const [tag, attribute] = getListType(type);\\n\\n if (indent > lastIndent) {\\n types.push(type);\\n\\n if (indent === lastIndent + 1) {\\n return \\\"<\\\".concat(tag, \\\">\\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n return \\\"<\\\".concat(tag, \\\">
  • \\\").concat(convertListHTML(items, lastIndent + 1, types));\\n }\\n\\n const previousType = types[types.length - 1];\\n\\n if (indent === lastIndent && type === previousType) {\\n return \\\"
  • \\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n const [endTag] = getListType(types.pop());\\n return \\\"\\\").concat(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 }\\n\\n if (blot instanceof _blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]) {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"escapeText\\\"])(blot.value().slice(index, index + length));\\n }\\n\\n 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\\n const parts = [];\\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\\n parts.push(convertHTML(child, offset, childLength));\\n });\\n\\n if (isRoot || blot.statics.blotName === 'list') {\\n return parts.join('');\\n }\\n\\n const {\\n outerHTML,\\n innerHTML\\n } = blot.domNode;\\n const [start, end] = outerHTML.split(\\\">\\\".concat(innerHTML, \\\"<\\\")); // TODO cleanup\\n\\n if (start === '\\\".concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\n\\n return \\\"\\\".concat(start, \\\">\\\").concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\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\\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\\n return merged;\\n }, {});\\n}\\n\\nfunction getListType(type) {\\n const tag = type === 'ordered' ? 'ol' : 'ul';\\n\\n switch (type) {\\n case 'checked':\\n return [tag, ' data-list=\\\"checked\\\"'];\\n\\n case 'unchecked':\\n return [tag, ' data-list=\\\"unchecked\\\"'];\\n\\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\\n return normalizedDelta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n}\\n\\nfunction shiftRange({\\n index,\\n length\\n}, amount) {\\n return new _selection__WEBPACK_IMPORTED_MODULE_5__[\\\"Range\\\"](index + amount, length);\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Editor);\\n\\n//# sourceURL=webpack://Quill/./core/editor.js?\");\n\n/***/ }),\n\n/***/ \"./core/emitter.js\":\n/*!*************************!*\\\n !*** ./core/emitter.js ***!\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 eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \\\"./node_modules/eventemitter3/index.js\\\");\\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"])('quill:events');\\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\\nEVENTS.forEach(eventName => {\\n document.addEventListener(eventName, (...args) => {\\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\\n const quill = _instances__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].get(node);\\n\\n if (quill && quill.emitter) {\\n quill.emitter.handleDOM(...args);\\n }\\n });\\n });\\n});\\n\\nclass Emitter extends eventemitter3__WEBPACK_IMPORTED_MODULE_0___default.a {\\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(({\\n node,\\n handler\\n }) => {\\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\\n this.listeners[eventName].push({\\n node,\\n handler\\n });\\n }\\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/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Emitter);\\n\\n//# sourceURL=webpack://Quill/./core/emitter.js?\");\n\n/***/ }),\n\n/***/ \"./core/instances.js\":\n/*!***************************!*\\\n !*** ./core/instances.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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};\\n\\ndebug.level = namespace.level;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (namespace);\\n\\n//# sourceURL=webpack://Quill/./core/logger.js?\");\n\n/***/ }),\n\n/***/ \"./core/module.js\":\n/*!************************!*\\\n !*** ./core/module.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\nclass Module {\\n constructor(quill, options = {}) {\\n this.quill = quill;\\n this.options = options;\\n }\\n\\n}\\n\\nModule.DEFAULTS = {};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Module);\\n\\n//# sourceURL=webpack://Quill/./core/module.js?\");\n\n/***/ }),\n\n/***/ \"./core/quill.js\":\n/*!***********************!*\\\n !*** ./core/quill.js ***!\n \\***********************/\n/*! exports provided: globalRegistry, expandConfig, overload, 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__, \\\"globalRegistry\\\", function() { return globalRegistry; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"expandConfig\\\", function() { return expandConfig; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"overload\\\", function() { return overload; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Quill; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editor */ \\\"./core/editor.js\\\");\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./theme */ \\\"./core/theme.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"])('quill');\\nconst globalRegistry = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Registry\\\"]();\\nparchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ParentBlot\\\"].uiClass = 'ql-ui';\\n\\nclass Quill {\\n static debug(limit) {\\n if (limit === true) {\\n limit = 'log';\\n }\\n\\n _logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"].level(limit);\\n }\\n\\n static find(node) {\\n return _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].get(node) || globalRegistry.find(node);\\n }\\n\\n static import(name) {\\n if (this.imports[name] == null) {\\n debug.error(\\\"Cannot import \\\".concat(name, \\\". Are you sure it was registered?\\\"));\\n }\\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\\n if (typeof name === 'string') {\\n // register(Blot | Attributor, overwrite)\\n this.register(\\\"formats/\\\".concat(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 \\\".concat(path, \\\" with\\\"), target);\\n }\\n\\n this.imports[path] = target;\\n\\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\\n globalRegistry.register(target);\\n }\\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\\n if (this.container == null) {\\n return debug.error('Invalid Quill container', container);\\n }\\n\\n if (this.options.debug) {\\n Quill.debug(this.options.debug);\\n }\\n\\n const html = this.container.innerHTML.trim();\\n this.container.classList.add('ql-container');\\n this.container.innerHTML = '';\\n _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].set(this.container, this);\\n this.root = this.addContainer('ql-editor');\\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 _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]();\\n const ScrollBlot = this.options.registry.query(parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ScrollBlot\\\"].blotName);\\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\\n emitter: this.emitter\\n });\\n this.editor = new _editor__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](this.scroll);\\n this.selection = new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"](this.scroll, this.emitter);\\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, type => {\\n if (type === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE) {\\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.SCROLL_UPDATE, (source, mutations) => {\\n const oldRange = this.selection.lastRange;\\n const [newRange] = this.selection.getRange();\\n const selectionInfo = oldRange && newRange ? {\\n oldRange,\\n newRange\\n } : undefined;\\n modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\\n });\\n const contents = this.clipboard.convert({\\n html: \\\"\\\".concat(html, \\\"


    \\\"),\\n text: '\\\\n'\\n });\\n this.setContents(contents);\\n this.history.clear();\\n\\n if (this.options.placeholder) {\\n this.root.setAttribute('data-placeholder', this.options.placeholder);\\n }\\n\\n if (this.options.readOnly) {\\n this.disable();\\n }\\n\\n this.allowReadOnlyEdits = false;\\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\\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 [index, length,, source] = overload(index, length, source);\\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 editReadOnly(modifier) {\\n this.allowReadOnlyEdits = true;\\n const value = modifier();\\n this.allowReadOnlyEdits = false;\\n return value;\\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 {\\n scrollTop\\n } = this.scrollingContainer;\\n this.selection.focus();\\n this.scrollingContainer.scrollTop = scrollTop;\\n this.scrollIntoView();\\n }\\n\\n format(name, value, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n const range = this.getSelection(true);\\n let change = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n if (range == null) return change;\\n\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n return change;\\n }, source);\\n }\\n\\n formatLine(index, length, name, value, source) {\\n let formats; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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\\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\\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 [index, length] = overload(index, length);\\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\\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\\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\\n return this.selection.getRange()[0];\\n }\\n\\n getSemanticHTML(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\n return this.editor.getHTML(index, length);\\n }\\n\\n getText(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\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; // eslint-disable-next-line prefer-const\\n\\n [index,, formats, source] = overload(index, 0, name, value, source);\\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.scroll.isEnabled();\\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 [index, length,, source] = overload(index, length, source);\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(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\\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\\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 [index, length,, source] = overload(index, length, source);\\n this.selection.setRange(new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](Math.max(0, index), length), source);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.selection.scrollIntoView(this.scrollingContainer);\\n }\\n }\\n }\\n\\n setText(text, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text);\\n return this.setContents(delta, source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) {\\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\\n\\n this.selection.update(source); // TODO this is usually undefined\\n\\n return change;\\n }\\n\\n updateContents(delta, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\\n return this.editor.applyDelta(delta, source);\\n }, source, true);\\n }\\n\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events;\\nQuill.sources = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources; // eslint-disable-next-line no-undef\\n\\nQuill.version = false ? undefined : \\\"2.0.0-dev.3\\\";\\nQuill.imports = {\\n delta: quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a,\\n parchment: parchment__WEBPACK_IMPORTED_MODULE_1__,\\n 'core/module': _module__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'core/theme': _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]\\n};\\n\\nfunction expandConfig(container, userConfig) {\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {\\n container,\\n modules: {\\n clipboard: true,\\n keyboard: true,\\n history: true,\\n uploader: true\\n }\\n }, userConfig);\\n\\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\\n userConfig.theme = _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"];\\n } else {\\n userConfig.theme = Quill.import(\\\"themes/\\\".concat(userConfig.theme));\\n\\n if (userConfig.theme == null) {\\n throw new Error(\\\"Invalid theme \\\".concat(userConfig.theme, \\\". Did you register it?\\\"));\\n }\\n }\\n\\n const themeConfig = extend__WEBPACK_IMPORTED_MODULE_2___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/\\\".concat(name));\\n\\n if (moduleClass == null) {\\n debug.error(\\\"Cannot load \\\".concat(name, \\\" module. Are you sure you registered it?\\\"));\\n } else {\\n config[name] = moduleClass.DEFAULTS || {};\\n }\\n\\n return config;\\n }, {}); // Special case toolbar shorthand\\n\\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\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {}, Quill.DEFAULTS, {\\n modules: moduleConfig\\n }, 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\\n return config;\\n }, {});\\n return userConfig;\\n} // Handle selection preservation and TEXT_CHANGE emission\\n// common to modification APIs\\n\\n\\nfunction modify(modifier, source, index, shift) {\\n if (!this.isEnabled() && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER && !this.allowReadOnlyEdits) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n }\\n\\n let range = index == null ? null : this.getSelection();\\n const oldDelta = this.editor.delta;\\n const change = modifier();\\n\\n if (range != null) {\\n if (index === true) {\\n index = range.index; // eslint-disable-line prefer-destructuring\\n }\\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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n if (change.length() > 0) {\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE, change, oldDelta, source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\n }\\n\\n return change;\\n}\\n\\nfunction overload(index, length, name, value, source) {\\n let formats = {};\\n\\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\\n index = index.index; // eslint-disable-line prefer-destructuring\\n } else {\\n length = index.length; // eslint-disable-line prefer-destructuring\\n\\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 } // Handle format being object, two format name/value strings or excluded\\n\\n\\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 } // Handle optional source\\n\\n\\n source = source || _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (index instanceof quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a) {\\n [start, end] = [range.index, range.index + range.length].map(pos => index.transformPosition(pos, source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER));\\n } else {\\n [start, end] = [range.index, range.index + range.length].map(pos => {\\n if (pos < index || pos === index && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) return pos;\\n\\n if (length >= 0) {\\n return pos + length;\\n }\\n\\n return Math.max(index, pos + length);\\n });\\n }\\n\\n return new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](start, end - start);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/quill.js?\");\n\n/***/ }),\n\n/***/ \"./core/selection.js\":\n/*!***************************!*\\\n !*** ./core/selection.js ***!\n \\***************************/\n/*! exports provided: Range, 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__, \\\"Range\\\", function() { return Range; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Selection; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"])('quill:selection');\\n\\nclass Range {\\n constructor(index, length = 0) {\\n this.index = index;\\n this.length = length;\\n }\\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); // savedRange is last non-null range\\n\\n this.savedRange = new Range(0, 0);\\n this.lastRange = this.savedRange;\\n this.lastNative = null;\\n this.handleComposition();\\n this.handleDragging();\\n this.emitter.listenDOM('selectionchange', document, () => {\\n if (!this.mouseDown && !this.composing) {\\n setTimeout(this.update.bind(this, _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER), 1);\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.emitter.once(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_UPDATE, () => {\\n try {\\n if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\\n }\\n\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n } catch (ignored) {// ignore\\n }\\n });\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_OPTIMIZE, (mutations, context) => {\\n if (context.range) {\\n const {\\n startNode,\\n startOffset,\\n endNode,\\n endOffset\\n } = context.range;\\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n });\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n handleComposition() {\\n this.root.addEventListener('compositionstart', () => {\\n this.composing = true;\\n this.scroll.batchStart();\\n });\\n this.root.addEventListener('compositionend', () => {\\n this.scroll.batchEnd();\\n this.composing = false;\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK)) return;\\n\\n if (nativeRange.start.node !== this.cursor.textNode) {\\n const blot = this.scroll.find(nativeRange.start.node, false);\\n if (blot == null) return; // TODO Give blot ability to not split\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n this.cursor.attach();\\n }\\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 let [leaf, offset] = this.scroll.leaf(index);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n const range = document.createRange();\\n\\n if (length > 0) {\\n range.setStart(node, offset);\\n [leaf, offset] = this.scroll.leaf(index + length);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n range.setEnd(node, offset);\\n return range.getBoundingClientRect();\\n }\\n\\n let side = 'left';\\n let rect;\\n\\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\\n rect = range.getBoundingClientRect();\\n } else {\\n rect = leaf.domNode.getBoundingClientRect();\\n if (offset > 0) side = 'right';\\n }\\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\\n if (!range.native.collapsed) {\\n positions.push([range.end.node, range.end.offset]);\\n }\\n\\n const indexes = positions.map(position => {\\n const [node, offset] = position;\\n const blot = this.scroll.find(node, true);\\n const index = blot.offset(this.scroll);\\n\\n if (offset === 0) {\\n return index;\\n }\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"LeafBlot\\\"]) {\\n return index + blot.index(node, offset);\\n }\\n\\n return index + blot.length();\\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\\n const range = {\\n start: {\\n node: nativeRange.startContainer,\\n offset: nativeRange.startOffset\\n },\\n end: {\\n node: nativeRange.endContainer,\\n offset: nativeRange.endOffset\\n },\\n native: nativeRange\\n };\\n [range.start, range.end].forEach(position => {\\n let {\\n node,\\n offset\\n } = position;\\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\\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\\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 const [leaf, leafOffset] = this.scroll.leaf(index);\\n const [node, offset] = leaf.position(leafOffset, i !== 0);\\n args.push(node, offset);\\n });\\n\\n if (args.length < 2) {\\n return args.concat(args);\\n }\\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 const [first] = this.scroll.line(Math.min(range.index, limit));\\n let last = first;\\n\\n if (range.length > 0) {\\n [last] = this.scroll.line(Math.min(range.index + range.length, limit));\\n }\\n\\n if (first == null || last == null) return;\\n const scrollBounds = scrollingContainer.getBoundingClientRect();\\n\\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\\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\\n return;\\n }\\n\\n const selection = document.getSelection();\\n if (selection == null) return;\\n\\n if (startNode != null) {\\n if (!this.hasFocus()) this.root.focus();\\n const {\\n native\\n } = this.getNativeRange() || {};\\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\\n if (endNode.tagName === 'BR') {\\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\\n endNode = endNode.parentNode;\\n }\\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 = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.API) {\\n if (typeof force === 'string') {\\n source = force;\\n force = false;\\n }\\n\\n debug.info('setRange', range);\\n\\n if (range != null) {\\n const args = this.rangeToNative(range);\\n this.setNativeRange(...args, force);\\n } else {\\n this.setNativeRange(null);\\n }\\n\\n this.update(source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER) {\\n const oldRange = this.lastRange;\\n const [lastRange, nativeRange] = this.getRange();\\n this.lastRange = lastRange;\\n this.lastNative = nativeRange;\\n\\n if (this.lastRange != null) {\\n this.savedRange = this.lastRange;\\n }\\n\\n if (!deep_equal__WEBPACK_IMPORTED_MODULE_2___default()(oldRange, this.lastRange)) {\\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\\n const range = this.cursor.restore();\\n\\n if (range) {\\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\\n }\\n }\\n\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SELECTION_CHANGE, clone__WEBPACK_IMPORTED_MODULE_1___default()(this.lastRange), clone__WEBPACK_IMPORTED_MODULE_1___default()(oldRange), source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\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\\n return parent.contains(descendant);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/selection.js?\");\n\n/***/ }),\n\n/***/ \"./core/theme.js\":\n/*!***********************!*\\\n !*** ./core/theme.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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/\\\".concat(name));\\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\\n return this.modules[name];\\n }\\n\\n}\\n\\nTheme.DEFAULTS = {\\n modules: {}\\n};\\nTheme.themes = {\\n default: Theme\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Theme);\\n\\n//# sourceURL=webpack://Quill/./core/theme.js?\");\n\n/***/ }),\n\n/***/ \"./formats/align.js\":\n/*!**************************!*\\\n !*** ./formats/align.js ***!\n \\**************************/\n/*! exports provided: AlignAttribute, AlignClass, AlignStyle */\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__, \\\"AlignAttribute\\\", function() { return AlignAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignClass\\\", function() { return AlignClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignStyle\\\", function() { return AlignStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['right', 'center', 'justify']\\n};\\nconst AlignAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('align', 'align', config);\\nconst AlignClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('align', 'ql-align', config);\\nconst AlignStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('align', 'text-align', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/align.js?\");\n\n/***/ }),\n\n/***/ \"./formats/background.js\":\n/*!*******************************!*\\\n !*** ./formats/background.js ***!\n \\*******************************/\n/*! exports provided: BackgroundClass, BackgroundStyle */\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__, \\\"BackgroundClass\\\", function() { return BackgroundClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BackgroundStyle\\\", function() { return BackgroundStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \\\"./formats/color.js\\\");\\n\\n\\nconst BackgroundClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('background', 'ql-bg', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst BackgroundStyle = new _color__WEBPACK_IMPORTED_MODULE_1__[\\\"ColorAttributor\\\"]('background', 'background-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/background.js?\");\n\n/***/ }),\n\n/***/ \"./formats/blockquote.js\":\n/*!*******************************!*\\\n !*** ./formats/blockquote.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Blockquote extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nBlockquote.blotName = 'blockquote';\\nBlockquote.tagName = 'blockquote';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Blockquote);\\n\\n//# sourceURL=webpack://Quill/./formats/blockquote.js?\");\n\n/***/ }),\n\n/***/ \"./formats/bold.js\":\n/*!*************************!*\\\n !*** ./formats/bold.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Bold extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (this.domNode.tagName !== this.statics.tagName[0]) {\\n this.replaceWith(this.statics.blotName);\\n }\\n }\\n\\n}\\n\\nBold.blotName = 'bold';\\nBold.tagName = ['STRONG', 'B'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Bold);\\n\\n//# sourceURL=webpack://Quill/./formats/bold.js?\");\n\n/***/ }),\n\n/***/ \"./formats/code.js\":\n/*!*************************!*\\\n !*** ./formats/code.js ***!\n \\*************************/\n/*! exports provided: Code, CodeBlockContainer, 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__, \\\"Code\\\", function() { return Code; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeBlockContainer\\\", function() { return CodeBlockContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CodeBlock; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nclass CodeBlockContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_5__[\\\"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 text = this.children.map(child => child.domNode.innerText).join('\\\\n').slice(index, index + length);\\n return \\\"
    \\\".concat(Object(_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"escapeText\\\"])(text), \\\"
    \\\");\\n }\\n\\n}\\n\\nclass CodeBlock extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].register(CodeBlockContainer);\\n }\\n\\n}\\n\\nclass Code extends _blots_inline__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] {}\\n\\nCode.blotName = 'code';\\nCode.tagName = 'CODE';\\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';\\nCodeBlockContainer.allowedChildren = [CodeBlock];\\nCodeBlock.allowedChildren = [_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], _blots_cursor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nCodeBlock.requiredContainer = CodeBlockContainer;\\nCodeBlock.TAB = ' ';\\n\\n\\n//# sourceURL=webpack://Quill/./formats/code.js?\");\n\n/***/ }),\n\n/***/ \"./formats/color.js\":\n/*!**************************!*\\\n !*** ./formats/color.js ***!\n \\**************************/\n/*! exports provided: ColorAttributor, ColorClass, ColorStyle */\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__, \\\"ColorAttributor\\\", function() { return ColorAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorClass\\\", function() { return ColorClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorStyle\\\", function() { return ColorStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass ColorAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\\".concat(parseInt(component, 10).toString(16)).slice(-2)).join('');\\n return \\\"#\\\".concat(hex);\\n }\\n\\n}\\n\\nconst ColorClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('color', 'ql-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst ColorStyle = new ColorAttributor('color', 'color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/color.js?\");\n\n/***/ }),\n\n/***/ \"./formats/direction.js\":\n/*!******************************!*\\\n !*** ./formats/direction.js ***!\n \\******************************/\n/*! exports provided: DirectionAttribute, DirectionClass, DirectionStyle */\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__, \\\"DirectionAttribute\\\", function() { return DirectionAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionClass\\\", function() { return DirectionClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionStyle\\\", function() { return DirectionStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['rtl']\\n};\\nconst DirectionAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('direction', 'dir', config);\\nconst DirectionClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('direction', 'ql-direction', config);\\nconst DirectionStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('direction', 'direction', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/direction.js?\");\n\n/***/ }),\n\n/***/ \"./formats/font.js\":\n/*!*************************!*\\\n !*** ./formats/font.js ***!\n \\*************************/\n/*! exports provided: FontStyle, FontClass */\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__, \\\"FontStyle\\\", function() { return FontStyle; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"FontClass\\\", function() { return FontClass; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['serif', 'monospace']\\n};\\nconst FontClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('font', 'ql-font', config);\\n\\nclass FontStyleAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"] {\\n value(node) {\\n return super.value(node).replace(/[\\\"']/g, '');\\n }\\n\\n}\\n\\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/font.js?\");\n\n/***/ }),\n\n/***/ \"./formats/formula.js\":\n/*!****************************!*\\\n !*** ./formats/formula.js ***!\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 _blots_embed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/embed */ \\\"./blots/embed.js\\\");\\n\\n\\nclass Formula extends _blots_embed__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (window.katex == null) {\\n throw new Error('Formula module requires KaTeX.');\\n }\\n\\n const node = super.create(value);\\n\\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\\n return node;\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('data-value');\\n }\\n\\n html() {\\n const {\\n formula\\n } = this.value();\\n return \\\"\\\".concat(formula, \\\"\\\");\\n }\\n\\n}\\n\\nFormula.blotName = 'formula';\\nFormula.className = 'ql-formula';\\nFormula.tagName = 'SPAN';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Formula);\\n\\n//# sourceURL=webpack://Quill/./formats/formula.js?\");\n\n/***/ }),\n\n/***/ \"./formats/header.js\":\n/*!***************************!*\\\n !*** ./formats/header.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Header extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static formats(domNode) {\\n return this.tagName.indexOf(domNode.tagName) + 1;\\n }\\n\\n}\\n\\nHeader.blotName = 'header';\\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Header);\\n\\n//# sourceURL=webpack://Quill/./formats/header.js?\");\n\n/***/ }),\n\n/***/ \"./formats/image.js\":\n/*!**************************!*\\\n !*** ./formats/image.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['alt', 'height', 'width'];\\n\\nclass Image extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n\\n if (typeof value === 'string') {\\n node.setAttribute('src', this.sanitize(value));\\n }\\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\\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 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 Object(_link__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n}\\n\\nImage.blotName = 'image';\\nImage.tagName = 'IMG';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Image);\\n\\n//# sourceURL=webpack://Quill/./formats/image.js?\");\n\n/***/ }),\n\n/***/ \"./formats/indent.js\":\n/*!***************************!*\\\n !*** ./formats/indent.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass IndentAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (value === 0) {\\n this.remove(node);\\n return true;\\n }\\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}\\n\\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (IndentClass);\\n\\n//# sourceURL=webpack://Quill/./formats/indent.js?\");\n\n/***/ }),\n\n/***/ \"./formats/italic.js\":\n/*!***************************!*\\\n !*** ./formats/italic.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Italic extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nItalic.blotName = 'italic';\\nItalic.tagName = ['EM', 'I'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Italic);\\n\\n//# sourceURL=webpack://Quill/./formats/italic.js?\");\n\n/***/ }),\n\n/***/ \"./formats/link.js\":\n/*!*************************!*\\\n !*** ./formats/link.js ***!\n \\*************************/\n/*! exports provided: default, sanitize */\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 Link; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"sanitize\\\", function() { return sanitize; });\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Link extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n node.setAttribute('href', this.sanitize(value));\\n node.setAttribute('rel', 'noopener noreferrer');\\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\\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\\n\\n\\n//# sourceURL=webpack://Quill/./formats/link.js?\");\n\n/***/ }),\n\n/***/ \"./formats/list.js\":\n/*!*************************!*\\\n !*** ./formats/list.js ***!\n \\*************************/\n/*! exports provided: ListContainer, 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__, \\\"ListContainer\\\", function() { return ListContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return ListItem; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\nclass ListContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nListContainer.blotName = 'list-container';\\nListContainer.tagName = 'OL';\\n\\nclass ListItem extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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 _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].register(ListContainer);\\n }\\n\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n const ui = domNode.ownerDocument.createElement('span');\\n\\n const listEventHandler = e => {\\n if (!scroll.isEnabled()) return;\\n const format = this.statics.formats(domNode, scroll);\\n\\n if (format === 'checked') {\\n this.format('list', 'unchecked');\\n e.preventDefault();\\n } else if (format === 'unchecked') {\\n this.format('list', 'checked');\\n e.preventDefault();\\n }\\n };\\n\\n ui.addEventListener('mousedown', listEventHandler);\\n ui.addEventListener('touchstart', listEventHandler);\\n this.attachUI(ui);\\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\\n}\\n\\nListItem.blotName = 'list';\\nListItem.tagName = 'LI';\\nListContainer.allowedChildren = [ListItem];\\nListItem.requiredContainer = ListContainer;\\n\\n\\n//# sourceURL=webpack://Quill/./formats/list.js?\");\n\n/***/ }),\n\n/***/ \"./formats/script.js\":\n/*!***************************!*\\\n !*** ./formats/script.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Script extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (value === 'super') {\\n return document.createElement('sup');\\n }\\n\\n if (value === 'sub') {\\n return document.createElement('sub');\\n }\\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\\n}\\n\\nScript.blotName = 'script';\\nScript.tagName = ['SUB', 'SUP'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Script);\\n\\n//# sourceURL=webpack://Quill/./formats/script.js?\");\n\n/***/ }),\n\n/***/ \"./formats/size.js\":\n/*!*************************!*\\\n !*** ./formats/size.js ***!\n \\*************************/\n/*! exports provided: SizeClass, SizeStyle */\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__, \\\"SizeClass\\\", function() { return SizeClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SizeStyle\\\", function() { return SizeStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst SizeClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('size', 'ql-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['small', 'large', 'huge']\\n});\\nconst SizeStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('size', 'font-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['10px', '18px', '32px']\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/size.js?\");\n\n/***/ }),\n\n/***/ \"./formats/strike.js\":\n/*!***************************!*\\\n !*** ./formats/strike.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Strike extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nStrike.blotName = 'strike';\\nStrike.tagName = ['S', 'STRIKE'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Strike);\\n\\n//# sourceURL=webpack://Quill/./formats/strike.js?\");\n\n/***/ }),\n\n/***/ \"./formats/table.js\":\n/*!**************************!*\\\n !*** ./formats/table.js ***!\n \\**************************/\n/*! exports provided: TableCell, TableRow, TableBody, TableContainer, tableId */\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__, \\\"TableCell\\\", function() { return TableCell; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableRow\\\", function() { return TableRow; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableBody\\\", function() { return TableBody; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableContainer\\\", function() { return TableContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"tableId\\\", function() { return tableId; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\n\\n\\nclass TableCell extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create();\\n\\n if (value) {\\n node.setAttribute('data-row', value);\\n } else {\\n node.setAttribute('data-row', tableId());\\n }\\n\\n return node;\\n }\\n\\n static formats(domNode) {\\n if (domNode.hasAttribute('data-row')) {\\n return domNode.getAttribute('data-row');\\n }\\n\\n return undefined;\\n }\\n\\n cellOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\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 row() {\\n return this.parent;\\n }\\n\\n rowOffset() {\\n if (this.row()) {\\n return this.row().rowOffset();\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.row() && this.row().table();\\n }\\n\\n}\\n\\nTableCell.blotName = 'table';\\nTableCell.tagName = 'TD';\\n\\nclass TableRow extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (childFormats.table !== nextFormats.table) {\\n const next = this.splitAfter(child);\\n\\n if (next) {\\n next.optimize();\\n } // We might be able to merge with prev now\\n\\n\\n if (this.prev) {\\n this.prev.optimize();\\n }\\n }\\n });\\n }\\n\\n rowOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.parent && this.parent.parent;\\n }\\n\\n}\\n\\nTableRow.blotName = 'table-row';\\nTableRow.tagName = 'TR';\\n\\nclass TableBody extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nTableBody.blotName = 'table-body';\\nTableBody.tagName = 'TBODY';\\n\\nclass TableContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n if (row.children.head != null) {\\n value = TableCell.formats(row.children.head.domNode);\\n }\\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 cells(column) {\\n return this.rows().map(row => row.children.at(column));\\n }\\n\\n deleteColumn(index) {\\n const [body] = this.descendant(TableBody);\\n if (body == null || body.children.head == null) return;\\n body.children.forEach(row => {\\n const cell = row.children.at(index);\\n\\n if (cell != null) {\\n cell.remove();\\n }\\n });\\n }\\n\\n insertColumn(index) {\\n const [body] = this.descendant(TableBody);\\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 const [body] = this.descendant(TableBody);\\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\\n rows() {\\n const body = this.children.head;\\n if (body == null) return [];\\n return body.children.map(row => row);\\n }\\n\\n}\\n\\nTableContainer.blotName = 'table-container';\\nTableContainer.tagName = 'TABLE';\\nTableContainer.allowedChildren = [TableBody];\\nTableBody.requiredContainer = TableContainer;\\nTableBody.allowedChildren = [TableRow];\\nTableRow.requiredContainer = TableBody;\\nTableRow.allowedChildren = [TableCell];\\nTableCell.requiredContainer = TableRow;\\n\\nfunction tableId() {\\n const id = Math.random().toString(36).slice(2, 6);\\n return \\\"row-\\\".concat(id);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./formats/table.js?\");\n\n/***/ }),\n\n/***/ \"./formats/underline.js\":\n/*!******************************!*\\\n !*** ./formats/underline.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Underline extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nUnderline.blotName = 'underline';\\nUnderline.tagName = 'U';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Underline);\\n\\n//# sourceURL=webpack://Quill/./formats/underline.js?\");\n\n/***/ }),\n\n/***/ \"./formats/video.js\":\n/*!**************************!*\\\n !*** ./formats/video.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['height', 'width'];\\n\\nclass Video extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n return formats;\\n }, {});\\n }\\n\\n static sanitize(url) {\\n return _link__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const {\\n video\\n } = this.value();\\n return \\\"
    \\\").concat(video, \\\"\\\");\\n }\\n\\n}\\n\\nVideo.blotName = 'video';\\nVideo.className = 'ql-video';\\nVideo.tagName = 'IFRAME';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Video);\\n\\n//# sourceURL=webpack://Quill/./formats/video.js?\");\n\n/***/ }),\n\n/***/ \"./modules/clipboard.js\":\n/*!******************************!*\\\n !*** ./modules/clipboard.js ***!\n \\******************************/\n/*! exports provided: default, matchAttributor, matchBlot, matchNewline, matchText, traverse */\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 Clipboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchAttributor\\\", function() { return matchAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchBlot\\\", function() { return matchBlot; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchNewline\\\", function() { return matchNewline; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchText\\\", function() { return matchText; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"traverse\\\", function() { return traverse; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../formats/size */ \\\"./formats/size.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"])('quill:clipboard');\\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')], ['strike', matchAlias.bind(matchAlias, 'strike')], ['style', matchIgnore]];\\nconst ATTRIBUTE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignAttribute\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionAttribute\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\nconst STYLE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignStyle\\\"], _formats_background__WEBPACK_IMPORTED_MODULE_8__[\\\"BackgroundStyle\\\"], _formats_color__WEBPACK_IMPORTED_MODULE_10__[\\\"ColorStyle\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionStyle\\\"], _formats_font__WEBPACK_IMPORTED_MODULE_12__[\\\"FontStyle\\\"], _formats_size__WEBPACK_IMPORTED_MODULE_13__[\\\"SizeStyle\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\n\\nclass Clipboard extends _core_module__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.quill.root.addEventListener('copy', e => this.onCaptureCopy(e, false));\\n this.quill.root.addEventListener('cut', e => this.onCaptureCopy(e, true));\\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({\\n html,\\n text\\n }, formats = {}) {\\n if (formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text, {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]\\n });\\n }\\n\\n if (!html) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text || '');\\n }\\n\\n const doc = new DOMParser().parseFromString(html, 'text/html');\\n const container = doc.body;\\n const nodeMatches = new WeakMap();\\n const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\\n const delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches); // Remove trailing newline\\n\\n if (deltaEndsWith(delta, '\\\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(delta.length() - 1).delete(1));\\n }\\n\\n return delta;\\n }\\n\\n dangerouslyPasteHTML(index, html, source = _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n if (typeof index === 'string') {\\n const delta = this.convert({\\n html: index,\\n text: ''\\n });\\n this.quill.setContents(delta, html);\\n this.quill.setSelection(0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n } else {\\n const paste = this.convert({\\n html,\\n text: ''\\n });\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(index).concat(paste), source);\\n this.quill.setSelection(index + paste.length(), _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n onCaptureCopy(e, isCut = false) {\\n if (e.defaultPrevented) return;\\n e.preventDefault();\\n const [range] = this.quill.selection.getRange();\\n if (range == null) return;\\n const {\\n html,\\n text\\n } = this.onCopy(range, isCut);\\n e.clipboardData.setData('text/plain', text);\\n e.clipboardData.setData('text/html', html);\\n\\n if (isCut) {\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n onCapturePaste(e) {\\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\\n e.preventDefault();\\n const range = this.quill.getSelection(true);\\n if (range == null) return;\\n const html = e.clipboardData.getData('text/html');\\n const text = e.clipboardData.getData('text/plain');\\n const files = Array.from(e.clipboardData.files || []);\\n\\n if (!html && files.length > 0) {\\n this.quill.uploader.upload(range, files);\\n } else {\\n this.onPaste(range, {\\n html,\\n text\\n });\\n }\\n }\\n\\n onCopy(range) {\\n const text = this.quill.getText(range);\\n const html = this.quill.getSemanticHTML(range);\\n return {\\n html,\\n text\\n };\\n }\\n\\n onPaste(range, {\\n text,\\n html\\n }) {\\n const formats = this.quill.getFormat(range.index);\\n const pastedDelta = this.convert({\\n text,\\n html\\n }, formats);\\n debug.log('onPaste', pastedDelta, {\\n text,\\n html\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(range.index).delete(range.length).concat(pastedDelta);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER); // range.length contributes to delta.length()\\n\\n this.quill.setSelection(delta.length() - range.length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"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 const [selector, matcher] = pair;\\n\\n switch (selector) {\\n case Node.TEXT_NODE:\\n textMatchers.push(matcher);\\n break;\\n\\n case Node.ELEMENT_NODE:\\n elementMatchers.push(matcher);\\n break;\\n\\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\\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\\n return delta.reduce((newDelta, op) => {\\n if (op.attributes && op.attributes[format]) {\\n return newDelta.push(op);\\n }\\n\\n return newDelta.insert(op.insert, extend__WEBPACK_IMPORTED_MODULE_0___default()({}, {\\n [format]: value\\n }, op.attributes));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n}\\n\\nfunction deltaEndsWith(delta, text) {\\n let endText = '';\\n\\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\\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\\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();\\n\\nfunction isPre(node) {\\n if (node == null) return false;\\n\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n 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\\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\\n return delta.concat(childrenDelta);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchAlias(format, node, delta) {\\n return applyFormat(delta, format, true);\\n}\\n\\nfunction matchAttributor(node, delta, scroll) {\\n const attributes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Attributor\\\"].keys(node);\\n const classes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"ClassAttributor\\\"].keys(node);\\n const styles = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"StyleAttributor\\\"].keys(node);\\n const formats = {};\\n attributes.concat(classes).concat(styles).forEach(name => {\\n let attr = scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].ATTRIBUTE);\\n\\n if (attr != null) {\\n formats[attr.attrName] = attr.value(node);\\n if (formats[attr.attrName]) return;\\n }\\n\\n attr = ATTRIBUTE_ATTRIBUTORS[name];\\n\\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\\n formats[attr.attrName] = attr.value(node) || undefined;\\n }\\n\\n attr = STYLE_ATTRIBUTORS[name];\\n\\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\\n if (Object.keys(formats).length > 0) {\\n return applyFormat(delta, formats);\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBlot(node, delta, scroll) {\\n const match = scroll.query(node);\\n if (match == null) return delta;\\n\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"]) {\\n const embed = {};\\n const value = match.value(node);\\n\\n if (value != null) {\\n embed[match.blotName] = value;\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(embed, match.formats(node, scroll));\\n }\\n } else {\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockBlot\\\"] && !deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\n }\\n\\n if (typeof match.formats === 'function') {\\n return applyFormat(delta, match.blotName, match.formats(node, scroll));\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBreak(node, delta) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchIndent(node, delta, scroll) {\\n const match = scroll.query(node);\\n\\n if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\\\n')) {\\n return delta;\\n }\\n\\n let indent = -1;\\n let parent = node.parentNode;\\n\\n while (parent != null) {\\n if (['OL', 'UL'].includes(parent.tagName)) {\\n indent += 1;\\n }\\n\\n parent = parent.parentNode;\\n }\\n\\n if (indent <= 0) return delta;\\n return delta.reduce((composed, op) => {\\n if (op.attributes && op.attributes.list) {\\n return composed.push(op);\\n }\\n\\n return composed.insert(op.insert, {\\n indent,\\n ...(op.attributes || {})\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\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, scroll) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n if (isLine(node)) {\\n return delta.insert('\\\\n');\\n }\\n\\n if (delta.length() > 0 && node.nextSibling) {\\n let {\\n nextSibling\\n } = node;\\n\\n while (nextSibling != null) {\\n if (isLine(nextSibling)) {\\n return delta.insert('\\\\n');\\n }\\n\\n const match = scroll.query(nextSibling);\\n\\n if (match && match.prototype instanceof _blots_block__WEBPACK_IMPORTED_MODULE_3__[\\\"BlockEmbed\\\"]) {\\n return delta.insert('\\\\n');\\n }\\n\\n nextSibling = nextSibling.firstChild;\\n }\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchStyles(node, delta) {\\n const formats = {};\\n const style = node.style || {};\\n\\n if (style.fontStyle === 'italic') {\\n formats.italic = true;\\n }\\n\\n if (style.textDecoration === 'underline') {\\n formats.underline = true;\\n }\\n\\n if (style.textDecoration === 'line-through') {\\n formats.strike = true;\\n }\\n\\n if (style.fontWeight.startsWith('bold') || parseInt(style.fontWeight, 10) >= 700) {\\n formats.bold = true;\\n }\\n\\n if (Object.keys(formats).length > 0) {\\n delta = applyFormat(delta, formats);\\n }\\n\\n if (parseFloat(style.textIndent || 0) > 0) {\\n // Could be 0.5in\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert('\\\\t').concat(delta);\\n }\\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; // Word represents empty line with  \\n\\n if (node.parentNode.tagName === 'O:P') {\\n return delta.insert(text.trim());\\n }\\n\\n if (text.trim().length === 0 && text.includes('\\\\n')) {\\n return delta;\\n }\\n\\n if (!isPre(node)) {\\n const replacer = (collapse, match) => {\\n const replaced = match.replace(/[^\\\\u00a0]/g, ''); // \\\\u00a0 is nbsp;\\n\\n return replaced.length < 1 && collapse ? ' ' : replaced;\\n };\\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\\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\\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\\n return delta.insert(text);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/clipboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/history.js\":\n/*!****************************!*\\\n !*** ./modules/history.js ***!\n \\****************************/\n/*! exports provided: default, getLastChangeIndex */\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 History; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getLastChangeIndex\\\", function() { return getLastChangeIndex; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass History extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.lastRecorded = 0;\\n this.ignoreChange = false;\\n this.clear();\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\\n if (eventName !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE || this.ignoreChange) return;\\n\\n if (!this.options.userOnly || source === _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.record(delta, oldDelta);\\n } else {\\n this.transform(delta);\\n }\\n });\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true\\n }, this.undo.bind(this));\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true,\\n shiftKey: true\\n }, this.redo.bind(this));\\n\\n if (/Win/i.test(navigator.platform)) {\\n this.quill.keyboard.addBinding({\\n key: 'y',\\n shortKey: true\\n }, 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 const base = this.quill.getContents();\\n const inverseDelta = delta.invert(base);\\n this.stack[dest].push(inverseDelta);\\n this.lastRecorded = 0;\\n this.ignoreChange = true;\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.ignoreChange = false;\\n const index = getLastChangeIndex(this.quill.scroll, delta);\\n this.quill.setSelection(index);\\n }\\n\\n clear() {\\n this.stack = {\\n undo: [],\\n redo: []\\n };\\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 = changeDelta.invert(oldDelta);\\n const timestamp = Date.now();\\n\\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);\\n } else {\\n this.lastRecorded = timestamp;\\n }\\n\\n if (undoDelta.length() === 0) return;\\n this.stack.undo.push(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 transformStack(this.stack.undo, delta);\\n transformStack(this.stack.redo, delta);\\n }\\n\\n undo() {\\n this.change('undo', 'redo');\\n }\\n\\n}\\n\\nHistory.DEFAULTS = {\\n delay: 1000,\\n maxStack: 100,\\n userOnly: false\\n};\\n\\nfunction transformStack(stack, delta) {\\n let remoteDelta = delta;\\n\\n for (let i = stack.length - 1; i >= 0; i -= 1) {\\n const oldDelta = stack[i];\\n stack[i] = remoteDelta.transform(oldDelta, true);\\n remoteDelta = oldDelta.transform(remoteDelta);\\n\\n if (stack[i].length() === 0) {\\n stack.splice(i, 1);\\n }\\n }\\n}\\n\\nfunction endsWithNewlineChange(scroll, delta) {\\n const lastOp = delta.ops[delta.ops.length - 1];\\n if (lastOp == null) return false;\\n\\n if (lastOp.insert != null) {\\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\\\n');\\n }\\n\\n if (lastOp.attributes != null) {\\n return Object.keys(lastOp.attributes).some(attr => {\\n return scroll.query(attr, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) != null;\\n });\\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\\n if (endsWithNewlineChange(scroll, delta)) {\\n changeIndex -= 1;\\n }\\n\\n return changeIndex;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/history.js?\");\n\n/***/ }),\n\n/***/ \"./modules/keyboard.js\":\n/*!*****************************!*\\\n !*** ./modules/keyboard.js ***!\n \\*****************************/\n/*! exports provided: default, SHORTKEY, normalize */\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 Keyboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SHORTKEY\\\", function() { return SHORTKEY; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"normalize\\\", function() { return normalize; });\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"])('quill:keyboard');\\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\\n\\nclass Keyboard extends _core_module__WEBPACK_IMPORTED_MODULE_7__[\\\"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\\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({\\n key: 'Enter',\\n shiftKey: null\\n }, this.handleEnter);\\n this.addBinding({\\n key: 'Enter',\\n metaKey: null,\\n ctrlKey: null,\\n altKey: null\\n }, () => {});\\n\\n if (/Firefox/i.test(navigator.userAgent)) {\\n // Need to handle delete and backspace for Firefox in the general case #1171\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true\\n }, this.handleDelete);\\n } else {\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true,\\n prefix: /^.?$/\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true,\\n suffix: /^.?$/\\n }, this.handleDelete);\\n }\\n\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Backspace',\\n altKey: null,\\n ctrlKey: null,\\n metaKey: null,\\n shiftKey: null\\n }, {\\n collapsed: true,\\n offset: 0\\n }, this.handleBackspace);\\n this.listen();\\n }\\n\\n addBinding(keyBinding, context = {}, handler = {}) {\\n const binding = normalize(keyBinding);\\n\\n if (binding == null) {\\n debug.warn('Attempted to add invalid keyboard binding', binding);\\n return;\\n }\\n\\n if (typeof context === 'function') {\\n context = {\\n handler: context\\n };\\n }\\n\\n if (typeof handler === 'function') {\\n handler = {\\n handler\\n };\\n }\\n\\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\\n keys.forEach(key => {\\n const singleBinding = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, binding, {\\n key\\n }, 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 || evt.isComposing) 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 const [line, offset] = this.quill.getLine(range.index);\\n const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\\n const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\\n const prefixText = leafStart instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"TextBlot\\\"] ? leafStart.value().slice(0, offsetStart) : '';\\n const suffixText = leafEnd instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (binding.empty != null && binding.empty !== curContext.empty) {\\n return false;\\n }\\n\\n if (binding.offset != null && binding.offset !== curContext.offset) {\\n return false;\\n }\\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 deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(binding.format[name], curContext.format[name]);\\n })) {\\n return false;\\n }\\n }\\n\\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\\n return false;\\n }\\n\\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\\n return false;\\n }\\n\\n return binding.handler.call(this, range, curContext, binding) !== true;\\n });\\n\\n if (prevented) {\\n evt.preventDefault();\\n }\\n });\\n }\\n\\n handleBackspace(range, context) {\\n // Check for astral symbols\\n const length = /[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]$/.test(context.prefix) ? 2 : 1;\\n if (range.index === 0 || this.quill.getLength() <= 1) return;\\n let formats = {};\\n const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - length).delete(length);\\n\\n if (context.offset === 0) {\\n // Always deleting newline here, length always 1\\n const [prev] = this.quill.getLine(range.index - 1);\\n\\n if (prev) {\\n const curFormats = line.formats();\\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, prevFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n // line.length() - 1 targets \\\\n in line, another -1 for newline being deleted\\n const formatDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - 2).retain(1, formats);\\n delta = delta.compose(formatDelta);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n 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 const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(length);\\n\\n if (context.offset >= line.length() - 1) {\\n const [next] = this.quill.getLine(range.index + 1);\\n\\n if (next) {\\n const curFormats = line.formats();\\n const nextFormats = this.quill.getFormat(range.index, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, nextFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n delta = delta.retain(next.length() - 1).retain(1, formats);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n handleDeleteRange(range) {\\n const lines = this.quill.getLines(range);\\n let formats = {};\\n\\n if (lines.length > 1) {\\n const firstFormats = lines[0].formats();\\n const lastFormats = lines[lines.length - 1].formats();\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(lastFormats, firstFormats) || {};\\n }\\n\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index, 1, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.focus();\\n }\\n\\n handleEnter(range, context) {\\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\\n if (this.quill.scroll.query(format, parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"Scope\\\"].BLOCK) && !Array.isArray(context.format[format])) {\\n formats[format] = context.format[format];\\n }\\n\\n return formats;\\n }, {});\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\n', lineFormats);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"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 === 'code' || name === 'link') return;\\n this.quill.format(name, context.format[name], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\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\\n handler(range, context) {\\n if (context.collapsed && context.offset !== 0) return true;\\n this.quill.format('indent', '+1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\n\\n },\\n outdent: {\\n key: 'Tab',\\n shiftKey: true,\\n format: ['blockquote', 'indent', 'list'],\\n\\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', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\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\\n handler(range, context) {\\n if (context.format.indent != null) {\\n this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else if (context.format.list != null) {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\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\\n handler(range) {\\n this.quill.deleteText(range.index - 1, 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n tab: {\\n key: 'Tab',\\n\\n handler(range, context) {\\n if (context.format.table) return true;\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\t');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'blockquote empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['blockquote'],\\n empty: true,\\n\\n handler() {\\n this.quill.format('blockquote', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'list empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['list'],\\n empty: true,\\n\\n handler(range, context) {\\n const formats = {\\n list: false\\n };\\n\\n if (context.format.indent) {\\n formats.indent = false;\\n }\\n\\n this.quill.formatLine(range.index, range.length, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'checklist enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: {\\n list: 'checked'\\n },\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, line.formats(), {\\n list: 'checked'\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', formats).retain(line.length() - offset - 1).retain(1, {\\n list: 'unchecked'\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'header enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['header'],\\n suffix: /^$/,\\n\\n handler(range, context) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', context.format).retain(line.length() - offset - 1).retain(1, {\\n header: null\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'table backspace': {\\n key: 'Backspace',\\n format: ['table'],\\n collapsed: true,\\n offset: 0,\\n\\n handler() {}\\n\\n },\\n 'table delete': {\\n key: 'Delete',\\n format: ['table'],\\n collapsed: true,\\n suffix: /^$/,\\n\\n handler() {}\\n\\n },\\n 'table enter': {\\n key: 'Enter',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range) {\\n const module = this.quill.getModule('table');\\n\\n if (module) {\\n const [table, row, cell, offset] = module.getTable(range);\\n const shift = tableSide(table, row, cell, offset);\\n if (shift == null) return;\\n let index = table.offset();\\n\\n if (shift < 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n } else if (shift > 0) {\\n index += table.length();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n },\\n 'table tab': {\\n key: 'Tab',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range, context) {\\n const {\\n event,\\n line: cell\\n } = context;\\n const offset = cell.offset(this.quill.scroll);\\n\\n if (event.shiftKey) {\\n this.quill.setSelection(offset - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(offset + cell.length(), _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n },\\n 'list autofill': {\\n key: ' ',\\n shiftKey: null,\\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\\n handler(range, context) {\\n if (this.quill.scroll.query('list') == null) return true;\\n const {\\n length\\n } = context.prefix;\\n const [line, offset] = this.quill.getLine(range.index);\\n if (offset > length) return true;\\n let value;\\n\\n switch (context.prefix.trim()) {\\n case '[]':\\n case '[ ]':\\n value = 'unchecked';\\n break;\\n\\n case '[x]':\\n value = 'checked';\\n break;\\n\\n case '-':\\n case '*':\\n value = 'bullet';\\n break;\\n\\n default:\\n value = 'ordered';\\n }\\n\\n this.quill.insertText(range.index, ' ', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\\n list: value\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index - length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'code exit': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['code-block'],\\n prefix: /^$/,\\n suffix: /^\\\\s*$/,\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n let numLines = 2;\\n let cur = line;\\n\\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\\n cur = cur.prev;\\n numLines -= 1; // Requisite prev lines are empty\\n\\n if (numLines <= 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - offset - 2).retain(1, {\\n 'code-block': null\\n }).delete(1);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n }\\n\\n return true;\\n }\\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 makeCodeBlockHandler(indent) {\\n return {\\n key: 'Tab',\\n shiftKey: !indent,\\n format: {\\n 'code-block': true\\n },\\n\\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 {\\n index,\\n length\\n } = range;\\n lines.forEach((line, i) => {\\n if (indent) {\\n line.insertAt(0, CodeBlock.TAB);\\n\\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\\n if (i === 0) {\\n index -= CodeBlock.TAB.length;\\n } else {\\n length -= CodeBlock.TAB.length;\\n }\\n }\\n });\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n }\\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\\n handler(range) {\\n let {\\n index\\n } = range;\\n\\n if (key === 'ArrowRight') {\\n index += range.length + 1;\\n }\\n\\n const [leaf] = this.quill.getLeaf(index);\\n if (!(leaf instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"EmbedBlot\\\"])) return true;\\n\\n if (key === 'ArrowLeft') {\\n if (shiftKey) {\\n this.quill.setSelection(range.index - 1, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else if (shiftKey) {\\n this.quill.setSelection(range.index, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index + range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction makeFormatHandler(format) {\\n return {\\n key: format[0],\\n shortKey: true,\\n\\n handler(range, context) {\\n this.quill.format(format, !context.format[format], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n };\\n}\\n\\nfunction makeTableArrowHandler(up) {\\n return {\\n key: up ? 'ArrowUp' : 'ArrowDown',\\n collapsed: true,\\n format: ['table'],\\n\\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\\n if (targetRow != null) {\\n if (targetRow.statics.blotName === 'table-row') {\\n let targetCell = targetRow.children.head;\\n let cur = cell;\\n\\n while (cur.prev != null) {\\n cur = cur.prev;\\n targetCell = targetCell.next;\\n }\\n\\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\\n this.quill.setSelection(index, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n const targetLine = cell.table()[key];\\n\\n if (targetLine != null) {\\n if (up) {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction normalize(binding) {\\n if (typeof binding === 'string' || typeof binding === 'number') {\\n binding = {\\n key: binding\\n };\\n } else if (typeof binding === 'object') {\\n binding = clone__WEBPACK_IMPORTED_MODULE_0___default()(binding, false);\\n } else {\\n return null;\\n }\\n\\n if (binding.shortKey) {\\n binding[SHORTKEY] = binding.shortKey;\\n delete binding.shortKey;\\n }\\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\\n return cell.prev == null ? -1 : 1;\\n }\\n\\n if (row.prev == null) {\\n return -1;\\n }\\n\\n if (row.next == null) {\\n return 1;\\n }\\n\\n return null;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/keyboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/syntax.js\":\n/*!***************************!*\\\n !*** ./modules/syntax.js ***!\n \\***************************/\n/*! exports provided: CodeBlock, CodeToken, 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__, \\\"CodeBlock\\\", function() { return SyntaxCodeBlock; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeToken\\\", function() { return CodeToken; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Syntax; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clipboard */ \\\"./modules/clipboard.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst TokenAttributor = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ClassAttributor\\\"]('code-token', 'hljs', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE\\n});\\n\\nclass CodeToken extends _blots_inline__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static formats(node, scroll) {\\n while (node != null && node !== scroll.domNode) {\\n if (node.classList && node.classList.contains(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className)) {\\n return super.formats(node, scroll);\\n }\\n\\n node = node.parentNode;\\n }\\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\\n if (!TokenAttributor.value(this.domNode)) {\\n this.unwrap();\\n }\\n }\\n\\n}\\n\\nCodeToken.blotName = 'code-token';\\nCodeToken.className = 'ql-token';\\n\\nclass SyntaxCodeBlock extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"] {\\n static create(value) {\\n const domNode = super.create(value);\\n\\n if (typeof value === 'string') {\\n domNode.setAttribute('data-language', value);\\n }\\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\\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}\\n\\nclass SyntaxCodeBlockContainer extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"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\\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 = \\\"\\\".concat(nodes.map(node => node.textContent).join('\\\\n'), \\\"\\\\n\\\");\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\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(Object(_blots_block__WEBPACK_IMPORTED_MODULE_5__[\\\"blockDelta\\\"])(child, false));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n const delta = highlight(text, language);\\n oldDelta.diff(delta).reduce((index, {\\n retain,\\n attributes\\n }) => {\\n // Should be all retains\\n if (!retain) return index;\\n\\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\\n return index + retain;\\n }, 0);\\n }\\n\\n this.cachedText = text;\\n this.forceNext = false;\\n }\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n\\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\n if (language !== this.uiNode.value) {\\n this.uiNode.value = language;\\n }\\n }\\n }\\n\\n}\\n\\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\\nSyntaxCodeBlock.allowedChildren = [CodeToken, _blots_cursor__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"], _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"]];\\n\\nclass Syntax extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(CodeToken, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlock, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlockContainer, true);\\n }\\n\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n this.languages = this.options.languages.reduce((memo, {\\n key\\n }) => {\\n memo[key] = true;\\n return memo;\\n }, {});\\n this.highlightBlot = this.highlightBlot.bind(this);\\n this.initListener();\\n this.initTimer();\\n }\\n\\n initListener() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(({\\n key,\\n label\\n }) => {\\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\\n this.highlight(blot, true);\\n });\\n\\n if (blot.uiNode == null) {\\n blot.attachUI(select);\\n\\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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n\\n if (range != null) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n highlightBlot(text, language = 'plain') {\\n language = this.languages[language] ? language : 'plain';\\n\\n if (language === 'plain') {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"escapeText\\\"])(text).split('\\\\n').reduce((delta, line, i) => {\\n if (i !== 0) {\\n delta.insert('\\\\n', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n }\\n\\n return delta.insert(line);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n }\\n\\n const container = this.quill.root.ownerDocument.createElement('div');\\n container.classList.add(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className);\\n container.innerHTML = this.options.hljs.highlight(language, text).value;\\n return Object(_clipboard__WEBPACK_IMPORTED_MODULE_10__[\\\"traverse\\\"])(this.quill.scroll, container, [(node, delta) => {\\n const value = TokenAttributor.value(node);\\n\\n if (value) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length(), {\\n [CodeToken.blotName]: value\\n }));\\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', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n return memo.insert(nodeText);\\n }, delta);\\n }], new WeakMap());\\n }\\n\\n}\\n\\nSyntax.DEFAULTS = {\\n hljs: (() => {\\n return window.hljs;\\n })(),\\n interval: 1000,\\n languages: [{\\n key: 'plain',\\n label: 'Plain'\\n }, {\\n key: 'bash',\\n label: 'Bash'\\n }, {\\n key: 'cpp',\\n label: 'C++'\\n }, {\\n key: 'cs',\\n label: 'C#'\\n }, {\\n key: 'css',\\n label: 'CSS'\\n }, {\\n key: 'diff',\\n label: 'Diff'\\n }, {\\n key: 'xml',\\n label: 'HTML/XML'\\n }, {\\n key: 'java',\\n label: 'Java'\\n }, {\\n key: 'javascript',\\n label: 'Javascript'\\n }, {\\n key: 'markdown',\\n label: 'Markdown'\\n }, {\\n key: 'php',\\n label: 'PHP'\\n }, {\\n key: 'python',\\n label: 'Python'\\n }, {\\n key: 'ruby',\\n label: 'Ruby'\\n }, {\\n key: 'sql',\\n label: 'SQL'\\n }]\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/syntax.js?\");\n\n/***/ }),\n\n/***/ \"./modules/table.js\":\n/*!**************************!*\\\n !*** ./modules/table.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/table */ \\\"./formats/table.js\\\");\\n\\n\\n\\n\\n\\nclass Table extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableRow\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableBody\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]);\\n }\\n\\n constructor(...args) {\\n super(...args);\\n this.listenBalanceCells();\\n }\\n\\n balanceTables() {\\n this.quill.scroll.descendants(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]).forEach(table => {\\n table.balanceCells();\\n });\\n }\\n\\n deleteColumn() {\\n const [table,, cell] = this.getTable();\\n if (cell == null) return;\\n table.deleteColumn(cell.cellOffset());\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteRow() {\\n const [, row] = this.getTable();\\n if (row == null) return;\\n row.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteTable() {\\n const [table] = this.getTable();\\n if (table == null) return;\\n const offset = table.offset();\\n table.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(offset, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n getTable(range = this.quill.getSelection()) {\\n if (range == null) return [null, null, null, -1];\\n const [cell, offset] = this.quill.getLine(range.index);\\n\\n if (cell == null || cell.statics.blotName !== _formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"].blotName) {\\n return [null, null, null, -1];\\n }\\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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const column = cell.cellOffset();\\n table.insertColumn(column + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n let shift = row.rowOffset();\\n\\n if (offset === 0) {\\n shift += 1;\\n }\\n\\n this.quill.setSelection(range.index + shift, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const index = row.rowOffset();\\n table.insertRow(index + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (offset > 0) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n } else {\\n this.quill.setSelection(range.index + row.children.length, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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, {\\n table: Object(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"tableId\\\"])()\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index));\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n this.balanceTables();\\n }\\n\\n listenBalanceCells() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_OPTIMIZE, mutations => {\\n mutations.some(mutation => {\\n if (['TD', 'TR', 'TBODY', 'TABLE'].includes(mutation.target.tagName)) {\\n this.quill.once(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE, (delta, old, source) => {\\n if (source !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) return;\\n this.balanceTables();\\n });\\n return true;\\n }\\n\\n return false;\\n });\\n });\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Table);\\n\\n//# sourceURL=webpack://Quill/./modules/table.js?\");\n\n/***/ }),\n\n/***/ \"./modules/toolbar.js\":\n/*!****************************!*\\\n !*** ./modules/toolbar.js ***!\n \\****************************/\n/*! exports provided: default, addControls */\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 Toolbar; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"addControls\\\", function() { return addControls; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"])('quill:toolbar');\\n\\nclass Toolbar extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n if (!(this.container instanceof HTMLElement)) {\\n return debug.error('Container required for toolbar', this.options);\\n }\\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(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range) => {\\n if (type === _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SELECTION_CHANGE) {\\n this.update(range);\\n }\\n });\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SCROLL_OPTIMIZE, () => {\\n const [range] = this.quill.selection.getRange(); // 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\\n if (input.tagName === 'BUTTON') {\\n input.setAttribute('type', 'button');\\n }\\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\\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\\n input.addEventListener(eventName, e => {\\n let value;\\n\\n if (input.tagName === 'SELECT') {\\n if (input.selectedIndex < 0) return;\\n const selected = input.options[input.selectedIndex];\\n\\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\\n e.preventDefault();\\n }\\n\\n this.quill.focus();\\n const [range] = this.quill.selection.getRange();\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"EmbedBlot\\\"]) {\\n value = prompt(\\\"Enter \\\".concat(format)); // eslint-disable-line no-alert\\n\\n if (!value) return;\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length).insert({\\n [format]: value\\n }), _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format(format, value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\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 const [format, input] = pair;\\n\\n if (input.tagName === 'SELECT') {\\n let option;\\n\\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\\n if (typeof value === 'string') {\\n value = value.replace(/\\\"/g, '\\\\\\\\\\\"');\\n }\\n\\n option = input.querySelector(\\\"option[value=\\\\\\\"\\\".concat(value, \\\"\\\\\\\"]\\\"));\\n }\\n\\n if (option == null) {\\n input.value = ''; // TODO make configurable?\\n\\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\\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-\\\".concat(format));\\n\\n if (value != null) {\\n input.value = value;\\n }\\n\\n container.appendChild(input);\\n}\\n\\nfunction addControls(container, groups) {\\n if (!Array.isArray(groups[0])) {\\n groups = [groups];\\n }\\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\\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-\\\".concat(format));\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value !== false) {\\n option.setAttribute('value', value);\\n } else {\\n option.setAttribute('selected', 'selected');\\n }\\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\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE) != null) {\\n this.quill.format(name, false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n });\\n } else {\\n this.quill.removeFormat(range, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n direction(value) {\\n const {\\n align\\n } = this.quill.getFormat();\\n\\n if (value === 'rtl' && align == null) {\\n this.quill.format('align', 'right', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else if (!value && align === 'right') {\\n this.quill.format('align', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.format('direction', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\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\\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, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n link(value) {\\n if (value === true) {\\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\\n }\\n\\n this.quill.format('link', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\n\\n list(value) {\\n const range = this.quill.getSelection();\\n const formats = this.quill.getFormat(range);\\n\\n if (value === 'check') {\\n if (formats.list === 'checked' || formats.list === 'unchecked') {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format('list', 'unchecked', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n this.quill.format('list', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n }\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/toolbar.js?\");\n\n/***/ }),\n\n/***/ \"./modules/uploader.js\":\n/*!*****************************!*\\\n !*** ./modules/uploader.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass Uploader extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n quill.root.addEventListener('drop', e => {\\n e.preventDefault();\\n let native;\\n\\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\\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\\n if (uploads.length > 0) {\\n this.options.handler.call(this, range, uploads);\\n }\\n }\\n\\n}\\n\\nUploader.DEFAULTS = {\\n mimetypes: ['image/png', 'image/jpeg'],\\n\\n handler(range, files) {\\n const promises = files.map(file => {\\n return new Promise(resolve => {\\n const reader = new FileReader();\\n\\n reader.onload = e => {\\n resolve(e.target.result);\\n };\\n\\n reader.readAsDataURL(file);\\n });\\n });\\n Promise.all(promises).then(images => {\\n const update = images.reduce((delta, image) => {\\n return delta.insert({\\n image\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length));\\n this.quill.updateContents(update, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + images.length, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n });\\n }\\n\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Uploader);\\n\\n//# sourceURL=webpack://Quill/./modules/uploader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/array-filter/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/array-filter/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\n/**\\n * Array#filter.\\n *\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object=} self\\n * @return {Array}\\n * @throw TypeError\\n */\\n\\nmodule.exports = function (arr, fn, self) {\\n if (arr.filter) return arr.filter(fn, self);\\n if (void 0 === arr || null === arr) throw new TypeError;\\n if ('function' != typeof fn) throw new TypeError;\\n var ret = [];\\n for (var i = 0; i < arr.length; i++) {\\n if (!hasOwn.call(arr, i)) continue;\\n var val = arr[i];\\n if (fn.call(self, val, i, arr)) ret.push(val);\\n }\\n return ret;\\n};\\n\\nvar hasOwn = Object.prototype.hasOwnProperty;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/array-filter/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/available-typed-arrays/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/available-typed-arrays/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar filter = __webpack_require__(/*! array-filter */ \\\"./node_modules/array-filter/index.js\\\");\\n\\nmodule.exports = function availableTypedArrays() {\\n\\treturn filter([\\n\\t\\t'BigInt64Array',\\n\\t\\t'BigUint64Array',\\n\\t\\t'Float32Array',\\n\\t\\t'Float64Array',\\n\\t\\t'Int16Array',\\n\\t\\t'Int32Array',\\n\\t\\t'Int8Array',\\n\\t\\t'Uint16Array',\\n\\t\\t'Uint32Array',\\n\\t\\t'Uint8Array',\\n\\t\\t'Uint8ClampedArray'\\n\\t], function (typedArray) {\\n\\t\\treturn typeof global[typedArray] === 'function';\\n\\t});\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/available-typed-arrays/index.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\n\"use strict\";\neval(\"\\n\\nvar objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/deep-equal/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/deep-equal/node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/deep-equal/node_modules/isarray/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/deep-equal/node_modules/is-date-object/index.js\\\");\\nvar whichBoxedPrimitive = __webpack_require__(/*! which-boxed-primitive */ \\\"./node_modules/which-boxed-primitive/index.js\\\");\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar whichCollection = __webpack_require__(/*! which-collection */ \\\"./node_modules/which-collection/index.js\\\");\\nvar getIterator = __webpack_require__(/*! es-get-iterator */ \\\"./node_modules/es-get-iterator/index.js\\\");\\nvar getSideChannel = __webpack_require__(/*! side-channel */ \\\"./node_modules/side-channel/index.js\\\");\\nvar whichTypedArray = __webpack_require__(/*! which-typed-array */ \\\"./node_modules/which-typed-array/index.js\\\");\\nvar assign = __webpack_require__(/*! object.assign */ \\\"./node_modules/object.assign/index.js\\\");\\n\\nvar $getTime = callBound('Date.prototype.getTime');\\nvar gPO = Object.getPrototypeOf;\\nvar $objToString = callBound('Object.prototype.toString');\\n\\nvar $Set = GetIntrinsic('%Set%', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSize = callBound('Map.prototype.size', true);\\nvar $setAdd = callBound('Set.prototype.add', true);\\nvar $setDelete = callBound('Set.prototype.delete', true);\\nvar $setHas = callBound('Set.prototype.has', true);\\nvar $setSize = callBound('Set.prototype.size', true);\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\\nfunction setHasEqualElement(set, val1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n while ((result = i.next()) && !result.done) {\\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\\n // Remove the matching element to make sure we do not check that again.\\n $setDelete(set, result.value);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\\nfunction findLooseMatchingPrimitives(prim) {\\n if (typeof prim === 'undefined') {\\n return null;\\n }\\n if (typeof prim === 'object') { // Only pass in null as object!\\n return void 0;\\n }\\n if (typeof prim === 'symbol') {\\n return false;\\n }\\n if (typeof prim === 'string' || typeof prim === 'number') {\\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\\n }\\n return true;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n var curB = $mapGet(b, altValue);\\n var looseOpts = assign({}, opts, { strict: false });\\n if (\\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\\n // eslint-disable-next-line no-use-before-define\\n || !internalDeepEqual(item, curB, looseOpts, channel)\\n ) {\\n return false;\\n }\\n // eslint-disable-next-line no-use-before-define\\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\\nfunction setMightHaveLoosePrim(a, b, prim) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n\\n return $setHas(b, altValue) && !$setHas(a, altValue);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n var key2;\\n while ((result = i.next()) && !result.done) {\\n key2 = result.value;\\n if (\\n // eslint-disable-next-line no-use-before-define\\n internalDeepEqual(key1, key2, opts, channel)\\n // eslint-disable-next-line no-use-before-define\\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\\n ) {\\n $setDelete(set, key2);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\nfunction internalDeepEqual(actual, expected, options, channel) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n var actualBoxed = whichBoxedPrimitive(actual);\\n var expectedBoxed = whichBoxedPrimitive(expected);\\n if (actualBoxed !== expectedBoxed) {\\n return false;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\\n }\\n\\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 */\\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\\n\\n var hasActual = channel.has(actual);\\n var hasExpected = channel.has(expected);\\n var sentinel;\\n if (hasActual && hasExpected) {\\n if (channel.get(actual) === channel.get(expected)) {\\n return true;\\n }\\n } else {\\n sentinel = {};\\n }\\n if (!hasActual) { channel.set(actual, sentinel); }\\n if (!hasExpected) { channel.set(expected, sentinel); }\\n\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts, channel);\\n}\\n\\nfunction isBuffer(x) {\\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n\\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\\n}\\n\\nfunction setEquiv(a, b, opts, channel) {\\n if ($setSize(a) !== $setSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n while ((resultA = iA.next()) && !resultA.done) {\\n if (resultA.value && typeof resultA.value === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n } else if (!$setHas(b, resultA.value)) {\\n if (opts.strict) { return false; }\\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n }\\n }\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\\n if (resultB.value && typeof resultB.value === 'object') {\\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && !$setHas(a, resultB.value)\\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction mapEquiv(a, b, opts, channel) {\\n if ($mapSize(a) !== $mapSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n var key;\\n var item1;\\n var item2;\\n while ((resultA = iA.next()) && !resultA.done) {\\n key = resultA.value[0];\\n item1 = resultA.value[1];\\n if (key && typeof key === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n } else {\\n item2 = $mapGet(b, key);\\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\\n if (opts.strict) {\\n return false;\\n }\\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n }\\n }\\n }\\n\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n key = resultB.value[0];\\n item2 = resultB.value[1];\\n if (key && typeof key === 'object') {\\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts, channel) {\\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\\n var i, key;\\n\\n if (typeof a !== typeof b) { return false; }\\n if (a == null || b == null) { return false; }\\n\\n if ($objToString(a) !== $objToString(b)) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsArray = isArray(a);\\n var bIsArray = isArray(b);\\n if (aIsArray !== bIsArray) { return false; }\\n\\n // TODO: replace when a cross-realm brand check is available\\n var aIsError = a instanceof Error;\\n var bIsError = b instanceof Error;\\n if (aIsError !== bIsError) { return false; }\\n if (aIsError || bIsError) {\\n if (a.name !== b.name || a.message !== b.message) { return false; }\\n }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\\n return false;\\n }\\n\\n var aIsDate = isDate(a);\\n var bIsDate = isDate(b);\\n if (aIsDate !== bIsDate) { return false; }\\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\\n if ($getTime(a) !== $getTime(b)) { return false; }\\n }\\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\\n\\n if (whichTypedArray(a) !== whichTypedArray(b)) {\\n return false;\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n var ka = objectKeys(a);\\n var kb = objectKeys(b);\\n // having the same number of owned properties (keys incorporates hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; } // eslint-disable-line eqeqeq\\n }\\n\\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\\n for (i = ka.length - 1; i >= 0; i--) {\\n key = ka[i];\\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\\n }\\n\\n var aCollection = whichCollection(a);\\n var bCollection = whichCollection(b);\\n if (aCollection !== bCollection) {\\n return false;\\n }\\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\\n return setEquiv(a, b, opts, channel);\\n }\\n if (aCollection === 'Map') { // aCollection === bCollection\\n return mapEquiv(a, b, opts, channel);\\n }\\n\\n return true;\\n}\\n\\nmodule.exports = function deepEqual(a, b, opts) {\\n return internalDeepEqual(a, b, opts, getSideChannel());\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-date-object/index.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-date-object/index.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateGetDayCall(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-regex/index.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-regex/index.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0; // eslint-disable-line no-param-reassign\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex; // eslint-disable-line no-param-reassign\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/isarray/index.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/isarray/index.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/isarray/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/implementation.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/implementation.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/deep-equal/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/isArguments.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/define-properties/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/define-properties/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\\n\\nvar toStr = Object.prototype.toString;\\nvar concat = Array.prototype.concat;\\nvar origDefineProperty = Object.defineProperty;\\n\\nvar isFunction = function (fn) {\\n\\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\\n};\\n\\nvar arePropertyDescriptorsSupported = function () {\\n\\tvar obj = {};\\n\\ttry {\\n\\t\\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\\n\\t\\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\\n\\t\\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn obj.x === obj;\\n\\t} catch (e) { /* this is IE 8. */\\n\\t\\treturn false;\\n\\t}\\n};\\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\\n\\nvar defineProperty = function (object, name, value, predicate) {\\n\\tif (name in object && (!isFunction(predicate) || !predicate())) {\\n\\t\\treturn;\\n\\t}\\n\\tif (supportsDescriptors) {\\n\\t\\torigDefineProperty(object, name, {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tvalue: value,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\tobject[name] = value;\\n\\t}\\n};\\n\\nvar defineProperties = function (object, map) {\\n\\tvar predicates = arguments.length > 2 ? arguments[2] : {};\\n\\tvar props = keys(map);\\n\\tif (hasSymbols) {\\n\\t\\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\\n\\t}\\n\\tfor (var i = 0; i < props.length; i += 1) {\\n\\t\\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\\n\\t}\\n};\\n\\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\\n\\nmodule.exports = defineProperties;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/define-properties/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/es-get-iterator/index.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {\\n\\n/* eslint global-require: 0 */\\n// the code is structured this way so that bundlers can\\n// alias out `has-symbols` to `() => true` or `() => false` if your target\\n// environments' Symbol capabilities are known, and then use\\n// dead code elimination on the rest of this module.\\n//\\n// Similarly, `isarray` can be aliased to `Array.isArray` if\\n// available in all target environments.\\n\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\n\\nif (__webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")() || __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")()) {\\n\\tvar $iterator = Symbol.iterator;\\n\\t// Symbol is available natively or shammed\\n\\t// natively:\\n\\t// - Chrome >= 38\\n\\t// - Edge 12-14?, Edge >= 15 for sure\\n\\t// - FF >= 36\\n\\t// - Safari >= 9\\n\\t// - node >= 0.12\\n\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t// alternatively, `iterable[$iterator]?.()`\\n\\t\\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\\n\\t\\t\\treturn iterable[$iterator]();\\n\\t\\t}\\n\\t\\tif (isArguments(iterable)) {\\n\\t\\t\\t// arguments objects lack Symbol.iterator\\n\\t\\t\\t// - node 0.12\\n\\t\\t\\treturn Array.prototype[$iterator].call(iterable);\\n\\t\\t}\\n\\t};\\n} else {\\n\\t// Symbol is not available, native or shammed\\n\\tvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/es-get-iterator/node_modules/isarray/index.js\\\");\\n\\tvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\n\\tvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\tvar $Map = GetIntrinsic('%Map%', true);\\n\\tvar $Set = GetIntrinsic('%Set%', true);\\n\\tvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\tvar $arrayPush = callBound('Array.prototype.push');\\n\\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\\n\\tvar $stringSlice = callBound('String.prototype.slice');\\n\\n\\tvar advanceStringIndex = function advanceStringIndex(S, index) {\\n\\t\\tvar length = S.length;\\n\\t\\tif ((index + 1) >= length) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar first = $charCodeAt(S, index);\\n\\t\\tif (first < 0xD800 || first > 0xDBFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar second = $charCodeAt(S, index + 1);\\n\\t\\tif (second < 0xDC00 || second > 0xDFFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\treturn index + 2;\\n\\t};\\n\\n\\tvar getArrayIterator = function getArrayIterator(arraylike) {\\n\\t\\tvar i = 0;\\n\\t\\treturn {\\n\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\tvar done = i >= arraylike.length;\\n\\t\\t\\t\\tvar value;\\n\\t\\t\\t\\tif (!done) {\\n\\t\\t\\t\\t\\tvalue = arraylike[i];\\n\\t\\t\\t\\t\\ti += 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t};\\n\\t};\\n\\n\\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable) {\\n\\t\\tif (isArray(iterable) || isArguments(iterable)) {\\n\\t\\t\\treturn getArrayIterator(iterable);\\n\\t\\t}\\n\\t\\tif (isString(iterable)) {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\tvar nextIndex = advanceStringIndex(iterable, i);\\n\\t\\t\\t\\t\\tvar value = $stringSlice(iterable, i, nextIndex);\\n\\t\\t\\t\\t\\ti = nextIndex;\\n\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\tdone: nextIndex > iterable.length,\\n\\t\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t};\\n\\n\\tif (!$Map && !$Set) {\\n\\t\\t// the only language iterables are Array, String, arguments\\n\\t\\t// - Safari <= 6.0\\n\\t\\t// - Chrome < 38\\n\\t\\t// - node < 0.12\\n\\t\\t// - FF < 13\\n\\t\\t// - IE < 11\\n\\t\\t// - Edge < 11\\n\\n\\t\\tmodule.exports = getNonCollectionIterator;\\n\\t} else {\\n\\t\\t// either Map or Set are available, but Symbol is not\\n\\t\\t// - es6-shim on an ES5 browser\\n\\t\\t// - Safari 6.2 (maybe 6.1?)\\n\\t\\t// - FF v[13, 36)\\n\\t\\t// - IE 11\\n\\t\\t// - Edge 11\\n\\t\\t// - Safari v[6, 9)\\n\\n\\t\\tvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\n\\t\\tvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\n\\n\\t\\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\\n\\t\\tvar $mapForEach = callBound('Map.prototype.forEach', true);\\n\\t\\tvar $setForEach = callBound('Set.prototype.forEach', true);\\n\\t\\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \\\"if is not node\\\"\\n\\n\\t\\t\\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\\n\\t\\t\\t// returns a value, or throws a StopIteration object. These browsers\\n\\t\\t\\t// do not have any other mechanism for iteration.\\n\\t\\t\\tvar $mapIterator = callBound('Map.prototype.iterator', true);\\n\\t\\t\\tvar $setIterator = callBound('Set.prototype.iterator', true);\\n\\t\\t\\tvar getStopIterationIterator = function (iterator) {\\n\\t\\t\\t\\tvar done = false;\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: done ? undefined : iterator.next()\\n\\t\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\t\\tdone = true;\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: true,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: undefined\\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};\\n\\t\\t}\\n\\t\\t// Firefox 27-35, and some older es6-shim versions, use a string \\\"@@iterator\\\" property\\n\\t\\t// this returns a proper iterator object, so we should use it instead of forEach.\\n\\t\\t// newer es6-shim versions use a string \\\"_es6-shim iterator_\\\" property.\\n\\t\\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\\n\\t\\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\\n\\n\\t\\tvar getCollectionIterator = function getCollectionIterator(iterable) {\\n\\t\\t\\tif (isMap(iterable)) {\\n\\t\\t\\t\\tif ($mapIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($mapIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $mapAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapForEach) {\\n\\t\\t\\t\\t\\tvar entries = [];\\n\\t\\t\\t\\t\\t$mapForEach(iterable, function (v, k) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(entries, [k, v]);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(entries);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (isSet(iterable)) {\\n\\t\\t\\t\\tif ($setIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($setIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $setAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setForEach) {\\n\\t\\t\\t\\t\\tvar values = [];\\n\\t\\t\\t\\t\\t$setForEach(iterable, function (v) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(values, v);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(values);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\t\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t\\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\\n\\t\\t};\\n\\t}\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js ***!\n \\************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/isarray/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/isarray/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/isarray/index.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;\\nvar defineProperty = Object.defineProperty;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\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\\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\\nvar setProperty = function setProperty(target, options) {\\n\\tif (defineProperty && options.name === '__proto__') {\\n\\t\\tdefineProperty(target, options.name, {\\n\\t\\t\\tenumerable: true,\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tvalue: options.newValue,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\ttarget[options.name] = options.newValue;\\n\\t}\\n};\\n\\n// Return undefined instead of __proto__ if '__proto__' is not an own property\\nvar getProperty = function getProperty(obj, name) {\\n\\tif (name === '__proto__') {\\n\\t\\tif (!hasOwn.call(obj, name)) {\\n\\t\\t\\treturn void 0;\\n\\t\\t} else if (gOPD) {\\n\\t\\t\\t// In early versions of node, obj['__proto__'] is buggy when obj has\\n\\t\\t\\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\\n\\t\\t\\treturn gOPD(obj, name).value;\\n\\t\\t}\\n\\t}\\n\\n\\treturn obj[name];\\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 = getProperty(target, name);\\n\\t\\t\\t\\tcopy = getProperty(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\\tsetProperty(target, { name: name, newValue: 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\\tsetProperty(target, { name: name, newValue: 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|Object} [cursor_pos] Edit position in text1 or object with more info\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\\n // Check for equality\\n if (text1 === text2) {\\n if (text1) {\\n return [[DIFF_EQUAL, text1]];\\n }\\n return [];\\n }\\n\\n if (cursor_pos != null) {\\n var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\\n if (editdiff) {\\n return editdiff;\\n }\\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, _fix_unicode);\\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 = [\\n [DIFF_INSERT, longtext.substring(0, i)],\\n [DIFF_EQUAL, shorttext],\\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\\n ];\\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 (\\n x1 < text1_length && y1 < text2_length &&\\n text1.charAt(x1) === text2.charAt(y1)\\n ) {\\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 (\\n x2 < text1_length && y2 < text2_length &&\\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\\n ) {\\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 (\\n text1.substring(pointerstart, pointermid) ==\\n text2.substring(pointerstart, pointermid)\\n ) {\\n pointermin = pointermid;\\n pointerstart = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\\n pointermid--;\\n }\\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 || text1.slice(-1) !== text2.slice(-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 (\\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\\n text2.substring(text2.length - pointermid, text2.length - pointerend)\\n ) {\\n pointermin = pointermid;\\n pointerend = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\\n pointermid--;\\n }\\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(\\n longtext.substring(i), shorttext.substring(j));\\n var suffixLength = diff_commonSuffix(\\n longtext.substring(0, i), shorttext.substring(0, j));\\n if (best_common.length < suffixLength + prefixLength) {\\n best_common = shorttext.substring(\\n j - suffixLength, j) + 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 [\\n best_longtext_a, best_longtext_b,\\n best_shorttext_a, best_shorttext_b, best_common\\n ];\\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, Math.ceil(longtext.length / 4));\\n // Check again based on the third quarter.\\n var hm2 = diff_halfMatchI_(longtext, shorttext, 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 * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\\n */\\nfunction diff_cleanupMerge(diffs, fix_unicode) {\\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 if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n diffs.splice(pointer, 1);\\n continue;\\n }\\n switch (diffs[pointer][0]) {\\n case DIFF_INSERT:\\n\\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 var previous_equality = pointer - count_insert - count_delete - 1;\\n if (fix_unicode) {\\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\\n // we assume that the old and new text in the diff are complete and correct\\n // unicode-encoded JS strings, but the tuple boundaries may fall between\\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\\n // of the previous equality and the beginning of this equality. this may create\\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\\n // particular case, both equalities go away, we absorb any previous inequalities,\\n // and we keep scanning for the next equality before rewriting the tuples.\\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\\n var stray = diffs[previous_equality][1].slice(-1);\\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\\n text_delete = stray + text_delete;\\n text_insert = stray + text_insert;\\n if (!diffs[previous_equality][1]) {\\n // emptied out previous equality, so delete it and include previous delete/insert\\n diffs.splice(previous_equality, 1);\\n pointer--;\\n var k = previous_equality - 1;\\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\\n count_insert++;\\n text_insert = diffs[k][1] + text_insert;\\n k--;\\n }\\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\\n count_delete++;\\n text_delete = diffs[k][1] + text_delete;\\n k--;\\n }\\n previous_equality = k;\\n }\\n }\\n if (starts_with_pair_end(diffs[pointer][1])) {\\n var stray = diffs[pointer][1].charAt(0);\\n diffs[pointer][1] = diffs[pointer][1].slice(1);\\n text_delete += stray;\\n text_insert += stray;\\n }\\n }\\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n // for empty equality not at end, wait for next equality\\n diffs.splice(pointer, 1);\\n break;\\n }\\n if (text_delete.length > 0 || text_insert.length > 0) {\\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\\n if (text_delete.length > 0 && text_insert.length > 0) {\\n // Factor out any common prefixes.\\n commonlength = diff_commonPrefix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n if (previous_equality >= 0) {\\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\\n } else {\\n diffs.splice(0, 0, [DIFF_EQUAL, 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 suffixes.\\n commonlength = diff_commonSuffix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n diffs[pointer][1] =\\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\\n }\\n }\\n // Delete the offending records and add the merged ones.\\n var n = count_insert + count_delete;\\n if (text_delete.length === 0 && text_insert.length === 0) {\\n diffs.splice(pointer - n, n);\\n pointer = pointer - n;\\n } else if (text_delete.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 1;\\n } else if (text_insert.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\\n pointer = pointer - n + 1;\\n } else {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 2;\\n }\\n }\\n 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, fix_unicode);\\n }\\n};\\n\\nfunction is_surrogate_pair_start(charCode) {\\n return charCode >= 0xD800 && charCode <= 0xDBFF;\\n}\\n\\nfunction is_surrogate_pair_end(charCode) {\\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\\n}\\n\\nfunction starts_with_pair_end(str) {\\n return is_surrogate_pair_end(str.charCodeAt(0));\\n}\\n\\nfunction ends_with_pair_start(str) {\\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\\n}\\n\\nfunction remove_empty_tuples(tuples) {\\n var ret = [];\\n for (var i = 0; i < tuples.length; i++) {\\n if (tuples[i][1].length > 0) {\\n ret.push(tuples[i]);\\n }\\n }\\n return ret;\\n}\\n\\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\\n return null;\\n }\\n return remove_empty_tuples([\\n [DIFF_EQUAL, before],\\n [DIFF_DELETE, oldMiddle],\\n [DIFF_INSERT, newMiddle],\\n [DIFF_EQUAL, after]\\n ]);\\n}\\n\\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\\n // note: this runs after equality check has ruled out exact equality\\n var oldRange = typeof cursor_pos === 'number' ?\\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\\n var newRange = typeof cursor_pos === 'number' ?\\n null : cursor_pos.newRange;\\n // take into account the old and new selection to generate the best diff\\n // possible for a text edit. for example, a text change from \\\"xxx\\\" to \\\"xx\\\"\\n // could be a delete or forwards-delete of any one of the x's, or the\\n // result of selecting two of the x's and typing \\\"x\\\".\\n var oldLength = oldText.length;\\n var newLength = newText.length;\\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\\n // see if we have an insert or delete before or after cursor\\n var oldCursor = oldRange.index;\\n var oldBefore = oldText.slice(0, oldCursor);\\n var oldAfter = oldText.slice(oldCursor);\\n var maybeNewCursor = newRange ? newRange.index : null;\\n editBefore: {\\n // is this an insert or delete right before oldCursor?\\n var newCursor = oldCursor + newLength - oldLength;\\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\\n break editBefore;\\n }\\n if (newCursor < 0 || newCursor > newLength) {\\n break editBefore;\\n }\\n var newBefore = newText.slice(0, newCursor);\\n var newAfter = newText.slice(newCursor);\\n if (newAfter !== oldAfter) {\\n break editBefore;\\n }\\n var prefixLength = Math.min(oldCursor, newCursor);\\n var oldPrefix = oldBefore.slice(0, prefixLength);\\n var newPrefix = newBefore.slice(0, prefixLength);\\n if (oldPrefix !== newPrefix) {\\n break editBefore;\\n }\\n var oldMiddle = oldBefore.slice(prefixLength);\\n var newMiddle = newBefore.slice(prefixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\\n }\\n editAfter: {\\n // is this an insert or delete right after oldCursor?\\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\\n break editAfter;\\n }\\n var cursor = oldCursor;\\n var newBefore = newText.slice(0, cursor);\\n var newAfter = newText.slice(cursor);\\n if (newBefore !== oldBefore) {\\n break editAfter;\\n }\\n var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\\n var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\\n var newSuffix = newAfter.slice(newAfter.length - suffixLength);\\n if (oldSuffix !== newSuffix) {\\n break editAfter;\\n }\\n var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\\n var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\\n replaceRange: {\\n // see if diff could be a splice of the old selection range\\n var oldPrefix = oldText.slice(0, oldRange.index);\\n var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\\n var prefixLength = oldPrefix.length;\\n var suffixLength = oldSuffix.length;\\n if (newLength < prefixLength + suffixLength) {\\n break replaceRange;\\n }\\n var newPrefix = newText.slice(0, prefixLength);\\n var newSuffix = newText.slice(newLength - suffixLength);\\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\\n break replaceRange;\\n }\\n var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\\n var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n\\n return null;\\n}\\n\\nfunction diff(text1, text2, cursor_pos) {\\n // only pass fix_unicode=true at the top level, not when diff_main is\\n // recursively invoked\\n return diff_main(text1, text2, cursor_pos, true);\\n}\\n\\ndiff.INSERT = DIFF_INSERT;\\ndiff.DELETE = DIFF_DELETE;\\ndiff.EQUAL = DIFF_EQUAL;\\n\\nmodule.exports = diff;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/fast-diff/diff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/foreach/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/foreach/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\nvar hasOwn = Object.prototype.hasOwnProperty;\\nvar toString = Object.prototype.toString;\\n\\nmodule.exports = function forEach (obj, fn, ctx) {\\n if (toString.call(fn) !== '[object Function]') {\\n throw new TypeError('iterator must be a function');\\n }\\n var l = obj.length;\\n if (l === +l) {\\n for (var i = 0; i < l; i++) {\\n fn.call(ctx, obj[i], i, obj);\\n }\\n } else {\\n for (var k in obj) {\\n if (hasOwn.call(obj, k)) {\\n fn.call(ctx, obj[k], k, obj);\\n }\\n }\\n }\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/foreach/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/function-bind/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint no-invalid-this: 1 */\\n\\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\\nvar slice = Array.prototype.slice;\\nvar toStr = Object.prototype.toString;\\nvar funcType = '[object Function]';\\n\\nmodule.exports = function bind(that) {\\n var target = this;\\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\\n throw new TypeError(ERROR_MESSAGE + target);\\n }\\n var args = slice.call(arguments, 1);\\n\\n var bound;\\n var binder = function () {\\n if (this instanceof bound) {\\n var result = target.apply(\\n this,\\n args.concat(slice.call(arguments))\\n );\\n if (Object(result) === result) {\\n return result;\\n }\\n return this;\\n } else {\\n return target.apply(\\n that,\\n args.concat(slice.call(arguments))\\n );\\n }\\n };\\n\\n var boundLength = Math.max(0, target.length - args.length);\\n var boundArgs = [];\\n for (var i = 0; i < boundLength; i++) {\\n boundArgs.push('$' + i);\\n }\\n\\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\\n\\n if (target.prototype) {\\n var Empty = function Empty() {};\\n Empty.prototype = target.prototype;\\n bound.prototype = new Empty();\\n Empty.prototype = null;\\n }\\n\\n return bound;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/function-bind/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/function-bind/implementation.js\\\");\\n\\nmodule.exports = Function.prototype.bind || implementation;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar origSymbol = global.Symbol;\\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \\\"./node_modules/has-symbols/shams.js\\\");\\n\\nmodule.exports = function hasNativeSymbols() {\\n\\tif (typeof origSymbol !== 'function') { return false; }\\n\\tif (typeof Symbol !== 'function') { return false; }\\n\\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\\n\\tif (typeof Symbol('bar') !== 'symbol') { return false; }\\n\\n\\treturn hasSymbolSham();\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/shams.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/shams.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\\nmodule.exports = function hasSymbols() {\\n\\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\\n\\tif (typeof Symbol.iterator === 'symbol') { return true; }\\n\\n\\tvar obj = {};\\n\\tvar sym = Symbol('test');\\n\\tvar symObj = Object(sym);\\n\\tif (typeof sym === 'string') { return false; }\\n\\n\\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\\n\\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\\n\\n\\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\\n\\t// if (sym instanceof Symbol) { return false; }\\n\\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\\n\\t// if (!(symObj instanceof Symbol)) { return false; }\\n\\n\\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\\n\\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\\n\\n\\tvar symVal = 42;\\n\\tobj[sym] = symVal;\\n\\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\\n\\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\\n\\n\\tvar syms = Object.getOwnPropertySymbols(obj);\\n\\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\\n\\n\\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\\n\\t\\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\\n\\t\\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\\n\\t}\\n\\n\\treturn true;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/shams.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has/src/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/has/src/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has/src/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-arguments/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/is-arguments/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\nvar toStr = Object.prototype.toString;\\n\\nvar isStandardArguments = function isArguments(value) {\\n\\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn toStr.call(value) === '[object Arguments]';\\n};\\n\\nvar isLegacyArguments = function isArguments(value) {\\n\\tif (isStandardArguments(value)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn value !== null &&\\n\\t\\ttypeof value === 'object' &&\\n\\t\\ttypeof value.length === 'number' &&\\n\\t\\tvalue.length >= 0 &&\\n\\t\\ttoStr.call(value) !== '[object Array]' &&\\n\\t\\ttoStr.call(value.callee) === '[object Function]';\\n};\\n\\nvar supportsStandardArguments = (function () {\\n\\treturn isStandardArguments(arguments);\\n}());\\n\\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\\n\\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-arguments/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-bigint/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-bigint/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nif (typeof BigInt === 'function') {\\n\\tvar bigIntValueOf = BigInt.prototype.valueOf;\\n\\tvar tryBigInt = function tryBigIntObject(value) {\\n\\t\\ttry {\\n\\t\\t\\tbigIntValueOf.call(value);\\n\\t\\t\\treturn true;\\n\\t\\t} catch (e) {\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\tif (\\n\\t\\t\\tvalue === null\\n\\t\\t\\t|| typeof value === 'undefined'\\n\\t\\t\\t|| typeof value === 'boolean'\\n\\t\\t\\t|| typeof value === 'string'\\n\\t\\t\\t|| typeof value === 'number'\\n\\t\\t\\t|| typeof value === 'symbol'\\n\\t\\t\\t|| typeof value === 'function'\\n\\t\\t) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\tif (typeof value === 'bigint') { // eslint-disable-line valid-typeof\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\treturn tryBigInt(value);\\n\\t};\\n} else {\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-bigint/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-boolean-object/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/is-boolean-object/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar boolToStr = Boolean.prototype.toString;\\n\\nvar tryBooleanObject = function booleanBrandCheck(value) {\\n\\ttry {\\n\\t\\tboolToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar boolClass = '[object Boolean]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isBoolean(value) {\\n\\tif (typeof value === 'boolean') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (value === null || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : toStr.call(value) === boolClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-boolean-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-date-object/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-date-object/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateObject(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) { return false; }\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-map/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-map/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Map) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-map/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-number-object/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/is-number-object/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar numToStr = Number.prototype.toString;\\nvar tryNumberObject = function tryNumberObject(value) {\\n\\ttry {\\n\\t\\tnumToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar numClass = '[object Number]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isNumberObject(value) {\\n\\tif (typeof value === 'number') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-number-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-regex/index.js\":\n/*!****************************************!*\\\n !*** ./node_modules/is-regex/index.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0;\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-set/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-set/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Set) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-set/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-string/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-string/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar strValue = String.prototype.valueOf;\\nvar tryStringObject = function tryStringObject(value) {\\n\\ttry {\\n\\t\\tstrValue.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar strClass = '[object String]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isString(value) {\\n\\tif (typeof value === 'string') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-string/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-typed-array/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\\n\\tfor (var i = 0; i < array.length; i += 1) {\\n\\t\\tif (array[i] === value) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tvar arr = new global[typedArray]();\\n\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t}\\n\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\tif (!descriptor) {\\n\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t}\\n\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar anyTrue = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!anyTrue) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tanyTrue = getter.call(value) === typedArray;\\n\\t\\t\\t} catch (e) { /**/ }\\n\\t\\t}\\n\\t});\\n\\treturn anyTrue;\\n};\\n\\nmodule.exports = function isTypedArray(value) {\\n\\tif (!value || typeof value !== 'object') { return false; }\\n\\tif (!hasToStringTag) {\\n\\t\\tvar tag = $slice($toString(value), 8, -1);\\n\\t\\treturn $indexOf(typedArrays, tag) > -1;\\n\\t}\\n\\tif (!gOPD) { return false; }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\**********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\**************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakmap/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakmap/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x, $setHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakmap/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakset/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakset/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakSet(x) {\\n\\t\\t// `WeakSet` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\tmodule.exports = function isWeakSet(x) {\\n\\t\\t// `WeakSet` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x, $setHas);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakset/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-inspect/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/object-inspect/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var hasMap = typeof Map === 'function' && Map.prototype;\\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\\nvar mapForEach = hasMap && Map.prototype.forEach;\\nvar hasSet = typeof Set === 'function' && Set.prototype;\\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\\nvar setForEach = hasSet && Set.prototype.forEach;\\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\\nvar booleanValueOf = Boolean.prototype.valueOf;\\nvar objectToString = Object.prototype.toString;\\nvar match = String.prototype.match;\\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\\n\\nvar inspectCustom = __webpack_require__(/*! ./util.inspect */ 1).custom;\\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\\n\\nmodule.exports = function inspect_(obj, options, depth, seen) {\\n var opts = options || {};\\n\\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\\n throw new TypeError('option \\\"quoteStyle\\\" must be \\\"single\\\" or \\\"double\\\"');\\n }\\n\\n if (typeof obj === 'undefined') {\\n return 'undefined';\\n }\\n if (obj === null) {\\n return 'null';\\n }\\n if (typeof obj === 'boolean') {\\n return obj ? 'true' : 'false';\\n }\\n\\n if (typeof obj === 'string') {\\n return inspectString(obj, opts);\\n }\\n if (typeof obj === 'number') {\\n if (obj === 0) {\\n return Infinity / obj > 0 ? '0' : '-0';\\n }\\n return String(obj);\\n }\\n if (typeof obj === 'bigint') { // eslint-disable-line valid-typeof\\n return String(obj) + 'n';\\n }\\n\\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\\n if (typeof depth === 'undefined') { depth = 0; }\\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\\n return '[Object]';\\n }\\n\\n if (typeof seen === 'undefined') {\\n seen = [];\\n } else if (indexOf(seen, obj) >= 0) {\\n return '[Circular]';\\n }\\n\\n function inspect(value, from) {\\n if (from) {\\n seen = seen.slice();\\n seen.push(from);\\n }\\n return inspect_(value, opts, depth + 1, seen);\\n }\\n\\n if (typeof obj === 'function') {\\n var name = nameOf(obj);\\n return '[Function' + (name ? ': ' + name : '') + ']';\\n }\\n if (isSymbol(obj)) {\\n var symString = Symbol.prototype.toString.call(obj);\\n return typeof obj === 'object' ? markBoxed(symString) : symString;\\n }\\n if (isElement(obj)) {\\n var s = '<' + String(obj.nodeName).toLowerCase();\\n var attrs = obj.attributes || [];\\n for (var i = 0; i < attrs.length; i++) {\\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\\n }\\n s += '>';\\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\\n s += '';\\n return s;\\n }\\n if (isArray(obj)) {\\n if (obj.length === 0) { return '[]'; }\\n return '[ ' + arrObjKeys(obj, inspect).join(', ') + ' ]';\\n }\\n if (isError(obj)) {\\n var parts = arrObjKeys(obj, inspect);\\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\\n }\\n if (typeof obj === 'object') {\\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\\n return obj[inspectSymbol]();\\n } else if (typeof obj.inspect === 'function') {\\n return obj.inspect();\\n }\\n }\\n if (isMap(obj)) {\\n var mapParts = [];\\n mapForEach.call(obj, function (value, key) {\\n mapParts.push(inspect(key, obj) + ' => ' + inspect(value, obj));\\n });\\n return collectionOf('Map', mapSize.call(obj), mapParts);\\n }\\n if (isSet(obj)) {\\n var setParts = [];\\n setForEach.call(obj, function (value) {\\n setParts.push(inspect(value, obj));\\n });\\n return collectionOf('Set', setSize.call(obj), setParts);\\n }\\n if (isWeakMap(obj)) {\\n return weakCollectionOf('WeakMap');\\n }\\n if (isWeakSet(obj)) {\\n return weakCollectionOf('WeakSet');\\n }\\n if (isNumber(obj)) {\\n return markBoxed(inspect(Number(obj)));\\n }\\n if (isBigInt(obj)) {\\n return markBoxed(inspect(bigIntValueOf.call(obj)));\\n }\\n if (isBoolean(obj)) {\\n return markBoxed(booleanValueOf.call(obj));\\n }\\n if (isString(obj)) {\\n return markBoxed(inspect(String(obj)));\\n }\\n if (!isDate(obj) && !isRegExp(obj)) {\\n var xs = arrObjKeys(obj, inspect);\\n if (xs.length === 0) { return '{}'; }\\n return '{ ' + xs.join(', ') + ' }';\\n }\\n return String(obj);\\n};\\n\\nfunction wrapQuotes(s, defaultStyle, opts) {\\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\\\"' : \\\"'\\\";\\n return quoteChar + s + quoteChar;\\n}\\n\\nfunction quote(s) {\\n return String(s).replace(/\\\"/g, '"');\\n}\\n\\nfunction isArray(obj) { return toStr(obj) === '[object Array]'; }\\nfunction isDate(obj) { return toStr(obj) === '[object Date]'; }\\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]'; }\\nfunction isError(obj) { return toStr(obj) === '[object Error]'; }\\nfunction isSymbol(obj) { return toStr(obj) === '[object Symbol]'; }\\nfunction isString(obj) { return toStr(obj) === '[object String]'; }\\nfunction isNumber(obj) { return toStr(obj) === '[object Number]'; }\\nfunction isBigInt(obj) { return toStr(obj) === '[object BigInt]'; }\\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]'; }\\n\\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\\nfunction has(obj, key) {\\n return hasOwn.call(obj, key);\\n}\\n\\nfunction toStr(obj) {\\n return objectToString.call(obj);\\n}\\n\\nfunction nameOf(f) {\\n if (f.name) { return f.name; }\\n var m = match.call(f, /^function\\\\s*([\\\\w$]+)/);\\n if (m) { return m[1]; }\\n return null;\\n}\\n\\nfunction indexOf(xs, x) {\\n if (xs.indexOf) { return xs.indexOf(x); }\\n for (var i = 0, l = xs.length; i < l; i++) {\\n if (xs[i] === x) { return i; }\\n }\\n return -1;\\n}\\n\\nfunction isMap(x) {\\n if (!mapSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n mapSize.call(x);\\n try {\\n setSize.call(x);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof Map; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakMap(x) {\\n if (!weakMapHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakMapHas.call(x, weakMapHas);\\n try {\\n weakSetHas.call(x, weakSetHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isSet(x) {\\n if (!setSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n setSize.call(x);\\n try {\\n mapSize.call(x);\\n } catch (m) {\\n return true;\\n }\\n return x instanceof Set; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakSet(x) {\\n if (!weakSetHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakSetHas.call(x, weakSetHas);\\n try {\\n weakMapHas.call(x, weakMapHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isElement(x) {\\n if (!x || typeof x !== 'object') { return false; }\\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\\n return true;\\n }\\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\\n}\\n\\nfunction inspectString(str, opts) {\\n // eslint-disable-next-line no-control-regex\\n var s = str.replace(/(['\\\\\\\\])/g, '\\\\\\\\$1').replace(/[\\\\x00-\\\\x1f]/g, lowbyte);\\n return wrapQuotes(s, 'single', opts);\\n}\\n\\nfunction lowbyte(c) {\\n var n = c.charCodeAt(0);\\n var x = {\\n 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r'\\n }[n];\\n if (x) { return '\\\\\\\\' + x; }\\n return '\\\\\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16);\\n}\\n\\nfunction markBoxed(str) {\\n return 'Object(' + str + ')';\\n}\\n\\nfunction weakCollectionOf(type) {\\n return type + ' { ? }';\\n}\\n\\nfunction collectionOf(type, size, entries) {\\n return type + ' (' + size + ') {' + entries.join(', ') + '}';\\n}\\n\\nfunction arrObjKeys(obj, inspect) {\\n var isArr = isArray(obj);\\n var xs = [];\\n if (isArr) {\\n xs.length = obj.length;\\n for (var i = 0; i < obj.length; i++) {\\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\\n }\\n }\\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if ((/[^\\\\w$]/).test(key)) {\\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\\n } else {\\n xs.push(key + ': ' + inspect(obj[key], obj));\\n }\\n }\\n return xs;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-inspect/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-is/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/object-is/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// http://www.ecma-international.org/ecma-262/6.0/#sec-object.is\\n\\nvar numberIsNaN = function (value) {\\n\\treturn value !== value;\\n};\\n\\nmodule.exports = function is(a, b) {\\n\\tif (a === 0 && b === 0) {\\n\\t\\treturn 1 / a === 1 / b;\\n\\t}\\n\\tif (a === b) {\\n\\t\\treturn true;\\n\\t}\\n\\tif (numberIsNaN(a) && numberIsNaN(b)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-is/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/object-keys/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es5-shim\\nvar has = Object.prototype.hasOwnProperty;\\nvar toStr = Object.prototype.toString;\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/object-keys/isArguments.js\\\");\\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\nvar dontEnums = [\\n\\t'toString',\\n\\t'toLocaleString',\\n\\t'valueOf',\\n\\t'hasOwnProperty',\\n\\t'isPrototypeOf',\\n\\t'propertyIsEnumerable',\\n\\t'constructor'\\n];\\nvar equalsConstructorPrototype = function (o) {\\n\\tvar ctor = o.constructor;\\n\\treturn ctor && ctor.prototype === o;\\n};\\nvar excludedKeys = {\\n\\t$applicationCache: true,\\n\\t$console: true,\\n\\t$external: true,\\n\\t$frame: true,\\n\\t$frameElement: true,\\n\\t$frames: true,\\n\\t$innerHeight: true,\\n\\t$innerWidth: true,\\n\\t$outerHeight: true,\\n\\t$outerWidth: true,\\n\\t$pageXOffset: true,\\n\\t$pageYOffset: true,\\n\\t$parent: true,\\n\\t$scrollLeft: true,\\n\\t$scrollTop: true,\\n\\t$scrollX: true,\\n\\t$scrollY: true,\\n\\t$self: true,\\n\\t$webkitIndexedDB: true,\\n\\t$webkitStorageInfo: true,\\n\\t$window: true\\n};\\nvar hasAutomationEqualityBug = (function () {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined') { return false; }\\n\\tfor (var k in window) {\\n\\t\\ttry {\\n\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n}());\\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t}\\n\\ttry {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar keysShim = function keys(object) {\\n\\tvar isObject = object !== null && typeof object === 'object';\\n\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\tvar isArguments = isArgs(object);\\n\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\tvar theKeys = [];\\n\\n\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t}\\n\\n\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t}\\n\\t}\\n\\n\\tif (isArguments && object.length > 0) {\\n\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t}\\n\\t} else {\\n\\t\\tfor (var name in object) {\\n\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif (hasDontEnumBug) {\\n\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn theKeys;\\n};\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\treturn (Object.keys(arguments) || '').length === 2;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tvar originalKeys = Object.keys;\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/isArguments.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/object-keys/isArguments.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/object.assign/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es6-shim\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar canBeObject = function (obj) {\\n\\treturn typeof obj !== 'undefined' && obj !== null;\\n};\\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")();\\nvar toObject = Object;\\nvar push = bind.call(Function.call, Array.prototype.push);\\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\\n\\nmodule.exports = function assign(target, source1) {\\n\\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\\n\\tvar objTarget = toObject(target);\\n\\tvar s, source, i, props, syms, value, key;\\n\\tfor (s = 1; s < arguments.length; ++s) {\\n\\t\\tsource = toObject(arguments[s]);\\n\\t\\tprops = keys(source);\\n\\t\\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\\n\\t\\tif (getSymbols) {\\n\\t\\t\\tsyms = getSymbols(source);\\n\\t\\t\\tfor (i = 0; i < syms.length; ++i) {\\n\\t\\t\\t\\tkey = syms[i];\\n\\t\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\t\\tpush(props, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (i = 0; i < props.length; ++i) {\\n\\t\\t\\tkey = props[i];\\n\\t\\t\\tvalue = source[key];\\n\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\tobjTarget[key] = value;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn objTarget;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/object.assign/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar defineProperties = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/object.assign/shim.js\\\");\\n\\nvar polyfill = getPolyfill();\\n\\ndefineProperties(polyfill, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = polyfill;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/polyfill.js\":\n/*!************************************************!*\\\n !*** ./node_modules/object.assign/polyfill.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\n\\nvar lacksProperEnumerationOrder = function () {\\n\\tif (!Object.assign) {\\n\\t\\treturn false;\\n\\t}\\n\\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\\n\\t// note: this does not detect the bug unless there's 20 characters\\n\\tvar str = 'abcdefghijklmnopqrst';\\n\\tvar letters = str.split('');\\n\\tvar map = {};\\n\\tfor (var i = 0; i < letters.length; ++i) {\\n\\t\\tmap[letters[i]] = letters[i];\\n\\t}\\n\\tvar obj = Object.assign({}, map);\\n\\tvar actual = '';\\n\\tfor (var k in obj) {\\n\\t\\tactual += k;\\n\\t}\\n\\treturn str !== actual;\\n};\\n\\nvar assignHasPendingExceptions = function () {\\n\\tif (!Object.assign || !Object.preventExtensions) {\\n\\t\\treturn false;\\n\\t}\\n\\t// Firefox 37 still has \\\"pending exception\\\" logic in its Object.assign implementation,\\n\\t// which is 72% slower than our shim, and Firefox 40's native implementation.\\n\\tvar thrower = Object.preventExtensions({ 1: 2 });\\n\\ttry {\\n\\t\\tObject.assign(thrower, 'xy');\\n\\t} catch (e) {\\n\\t\\treturn thrower[1] === 'y';\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!Object.assign) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (lacksProperEnumerationOrder()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (assignHasPendingExceptions()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\treturn Object.assign;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/shim.js\":\n/*!********************************************!*\\\n !*** ./node_modules/object.assign/shim.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\n\\nmodule.exports = function shimAssign() {\\n\\tvar polyfill = getPolyfill();\\n\\tdefine(\\n\\t\\tObject,\\n\\t\\t{ assign: polyfill },\\n\\t\\t{ assign: function () { return Object.assign !== polyfill; } }\\n\\t);\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/shim.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 constructor(attrName, keyName, options = {}) {\\n this.attrName = attrName;\\n this.keyName = keyName;\\n const attributeBit = _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].TYPE & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n this.scope =\\n options.scope != null\\n ? // Ignore type bits, force attribute bit\\n (options.scope & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].LEVEL) | attributeBit\\n : _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n if (options.whitelist != null) {\\n this.whitelist = options.whitelist;\\n }\\n }\\n static keys(node) {\\n return Array.from(node.attributes).map((item) => item.name);\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n node.setAttribute(this.keyName, value);\\n return true;\\n }\\n canAdd(_node, value) {\\n if (this.whitelist == null) {\\n return true;\\n }\\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 const 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 const className = node.getAttribute('class') || '';\\n return className\\n .split(/\\\\s+/)\\n .filter((name) => name.indexOf(`${prefix}-`) === 0);\\n}\\nclass ClassAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static keys(node) {\\n return (node.getAttribute('class') || '')\\n .split(/\\\\s+/)\\n .map((name) => name.split('-').slice(0, -1).join('-'));\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n this.remove(node);\\n node.classList.add(`${this.keyName}-${value}`);\\n return true;\\n }\\n remove(node) {\\n const matches = match(node, this.keyName);\\n matches.forEach((name) => {\\n node.classList.remove(name);\\n });\\n if (node.classList.length === 0) {\\n node.removeAttribute('class');\\n }\\n }\\n value(node) {\\n const result = match(node, this.keyName)[0] || '';\\n const 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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _class__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./class */ \\\"./node_modules/parchment/src/attributor/class.ts\\\");\\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ \\\"./node_modules/parchment/src/attributor/style.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_0__[\\\"default\\\"].find(this.domNode);\\n if (blot == null) {\\n return;\\n }\\n const attributes = _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].keys(this.domNode);\\n const classes = _class__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].keys(this.domNode);\\n const styles = _style__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].keys(this.domNode);\\n attributes\\n .concat(classes)\\n .concat(styles)\\n .forEach((name) => {\\n const attr = blot.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].ATTRIBUTE);\\n if (attr instanceof _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]) {\\n this.attributes[attr.attrName] = attr;\\n }\\n });\\n }\\n copy(target) {\\n Object.keys(this.attributes).forEach((key) => {\\n const 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 const parts = name.split('-');\\n const rest = parts\\n .slice(1)\\n .map((part) => part[0].toUpperCase() + part.slice(1))\\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((value) => {\\n const arr = value.split(':');\\n return arr[0].trim();\\n });\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\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 const 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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n\\n\\nclass ContainerBlot extends _parent__WEBPACK_IMPORTED_MODULE_1__[\\\"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_0__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\nclass LeafBlot extends _shadow__WEBPACK_IMPORTED_MODULE_1__[\\\"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 }\\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_0__[\\\"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 _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\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_2__[\\\"default\\\"].INLINE);\\n Array.from(node.childNodes).forEach((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}\\nclass ParentBlot extends _shadow__WEBPACK_IMPORTED_MODULE_3__[\\\"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 if (ParentBlot.uiClass) {\\n this.uiNode.classList.add(ParentBlot.uiClass);\\n }\\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 const 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_1__[\\\"default\\\"]) {\\n return;\\n }\\n else {\\n throw err;\\n }\\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, (child, offset, childLength) => {\\n child.deleteAt(offset, childLength);\\n });\\n }\\n descendant(criteria, index = 0) {\\n const [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, (child, childIndex, childLength) => {\\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, childIndex, lengthLeft));\\n }\\n lengthLeft -= childLength;\\n });\\n return descendants;\\n }\\n detach() {\\n this.children.forEach((child) => {\\n child.detach();\\n });\\n super.detach();\\n }\\n enforceAllowedChildren() {\\n let done = false;\\n this.children.forEach((child) => {\\n if (done) {\\n return;\\n }\\n const allowed = this.statics.allowedChildren.some((def) => child instanceof def);\\n if (allowed) {\\n return;\\n }\\n if (child.statics.scope === _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"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, (child, offset, childLength) => {\\n child.formatAt(offset, childLength, name, value);\\n });\\n }\\n insertAt(index, value, def) {\\n const [child, offset] = this.children.find(index);\\n if (child) {\\n child.insertAt(offset, value, def);\\n }\\n else {\\n const 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 childBlot.parent = this;\\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.attach();\\n }\\n length() {\\n return this.children.reduce((memo, child) => {\\n return memo + child.length();\\n }, 0);\\n }\\n moveChildren(targetParent, refNode) {\\n this.children.forEach((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 const 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 const [child, offset] = this.children.find(index, inclusive);\\n const 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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const after = this.clone();\\n if (this.parent) {\\n this.parent.insertBefore(after, this.next || undefined);\\n }\\n this.children.forEachAt(index, this.length(), (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 const 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 const addedNodes = [];\\n const removedNodes = [];\\n mutations.forEach((mutation) => {\\n if (mutation.target === this.domNode && mutation.type === 'childList') {\\n addedNodes.push(...mutation.addedNodes);\\n removedNodes.push(...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 const blot = this.scroll.find(node);\\n if (blot == null) {\\n return;\\n }\\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((a, b) => {\\n if (a === b) {\\n return 0;\\n }\\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 const 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}\\nParentBlot.uiClass = '';\\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 _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\nclass ShadowBlot {\\n constructor(scroll, domNode) {\\n this.scroll = scroll;\\n this.domNode = domNode;\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.set(domNode, this);\\n this.prev = null;\\n this.next = null;\\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, 10).toString() === value) {\\n value = parseInt(value, 10);\\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 // Hack for accessing inherited static methods\\n get statics() {\\n return this.constructor;\\n }\\n attach() {\\n // Nothing to do\\n }\\n clone() {\\n const 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 }\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.delete(this.domNode);\\n }\\n deleteAt(index, length) {\\n const blot = this.isolate(index, length);\\n blot.remove();\\n }\\n formatAt(index, length, name, value) {\\n const blot = this.isolate(index, length);\\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOT) != null && value) {\\n blot.wrap(name, value);\\n }\\n else if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE) != null) {\\n const parent = this.scroll.create(this.statics.scope);\\n blot.wrap(parent);\\n parent.format(name, value);\\n }\\n }\\n insertAt(index, value, def) {\\n const blot = def == null\\n ? this.scroll.create('text', value)\\n : this.scroll.create(value, def);\\n const ref = this.split(index);\\n this.parent.insertBefore(blot, ref || undefined);\\n }\\n isolate(index, length) {\\n const 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 }\\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 const wrapper = typeof name === 'string'\\n ? this.scroll.create(name, value)\\n : name;\\n if (this.parent != null) {\\n this.parent.insertBefore(wrapper, this.next || undefined);\\n }\\n if (typeof wrapper.appendChild !== 'function') {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"](`Cannot wrap ${name}`);\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inline */ \\\"./node_modules/parchment/src/blot/inline.ts\\\");\\n\\n\\n\\n\\n\\n\\nclass BlockBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"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_2__[\\\"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_2__[\\\"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.blotName = 'block';\\nBlockBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOCK_BLOT;\\nBlockBlot.tagName = 'P';\\nBlockBlot.allowedChildren = [\\n _inline__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n BlockBlot,\\n _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n];\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.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 }\\n // @ts-ignore\\n for (const prop in obj1) {\\n // @ts-ignore\\n if (obj1[prop] !== obj2[prop]) {\\n return false;\\n }\\n }\\n return true;\\n}\\nclass InlineBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"default\\\"].INLINE);\\n if (format == null) {\\n return;\\n }\\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 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.formats()[name] != null ||\\n this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE)) {\\n const 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 const formats = this.formats();\\n if (Object.keys(formats).length === 0) {\\n return this.unwrap(); // unformatted span\\n }\\n const 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_2__[\\\"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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/container */ \\\"./node_modules/parchment/src/blot/abstract/container.ts\\\");\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./block */ \\\"./node_modules/parchment/src/blot/block.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_3__[\\\"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_1__[\\\"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 }\\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((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 }\\n const mark = (blot, markParent = true) => {\\n if (blot == null || blot === this) {\\n return;\\n }\\n if (blot.domNode.parentNode == null) {\\n return;\\n }\\n if (!mutationsMap.has(blot.domNode)) {\\n mutationsMap.set(blot.domNode, []);\\n }\\n if (markParent) {\\n mark(blot.parent);\\n }\\n };\\n const optimize = (blot) => {\\n // Post-order traversal\\n if (!mutationsMap.has(blot.domNode)) {\\n return;\\n }\\n if (blot instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_3__[\\\"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 const blot = this.find(mutation.target, true);\\n if (blot == null) {\\n return;\\n }\\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_3__[\\\"default\\\"]) {\\n child.children.forEach((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 }\\n update(mutations, context = {}) {\\n mutations = mutations || this.observer.takeRecords();\\n const mutationsMap = new WeakMap();\\n mutations\\n .map((mutation) => {\\n const blot = _registry__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].find(mutation.target, true);\\n if (blot == null) {\\n return null;\\n }\\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_4__[\\\"default\\\"];\\nScrollBlot.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _abstract_container__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nScrollBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n\\n\\nclass TextBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__[\\\"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 return domNode.data;\\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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const 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_0__[\\\"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 = null;\\n this.tail = null;\\n this.length = 0;\\n }\\n append(...nodes) {\\n this.insertBefore(nodes[0], null);\\n if (nodes.length > 1) {\\n const rest = nodes.slice(1);\\n this.append(...rest);\\n }\\n }\\n at(index) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur && index > 0) {\\n index -= 1;\\n cur = next();\\n }\\n return cur;\\n }\\n contains(node) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n if (cur === node) {\\n return true;\\n }\\n cur = next();\\n }\\n return false;\\n }\\n indexOf(node) {\\n const next = this.iterator();\\n let cur = next();\\n let index = 0;\\n while (cur) {\\n if (cur === node) {\\n return index;\\n }\\n index += 1;\\n cur = next();\\n }\\n return -1;\\n }\\n insertBefore(node, refNode) {\\n if (node == null) {\\n return;\\n }\\n this.remove(node);\\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;\\n let cur = this.head;\\n while (cur != null) {\\n if (cur === target) {\\n return index;\\n }\\n index += cur.length();\\n cur = cur.next;\\n }\\n return -1;\\n }\\n remove(node) {\\n if (!this.contains(node)) {\\n return;\\n }\\n if (node.prev != null) {\\n node.prev.next = node.next;\\n }\\n if (node.next != null) {\\n node.next.prev = node.prev;\\n }\\n if (node === this.head) {\\n this.head = node.next;\\n }\\n if (node === this.tail) {\\n this.tail = node.prev;\\n }\\n this.length -= 1;\\n }\\n iterator(curNode = this.head) {\\n // TODO use yield when we can\\n return () => {\\n const ret = curNode;\\n if (curNode != null) {\\n curNode = curNode.next;\\n }\\n return ret;\\n };\\n }\\n find(index, inclusive = false) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n const 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 cur = next();\\n }\\n return [null, 0];\\n }\\n forEach(callback) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n callback(cur);\\n cur = next();\\n }\\n }\\n forEachAt(index, length, callback) {\\n if (length <= 0) {\\n return;\\n }\\n const [startNode, offset] = this.find(index);\\n let curIndex = index - offset;\\n const next = this.iterator(startNode);\\n let cur = next();\\n while (cur && curIndex < index + length) {\\n const 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 cur = next();\\n }\\n }\\n map(callback) {\\n return this.reduce((memo, cur) => {\\n memo.push(callback(cur));\\n return memo;\\n }, []);\\n }\\n reduce(callback, memo) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n memo = callback(memo, cur);\\n cur = next();\\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_leaf__WEBPACK_IMPORTED_MODULE_1__ = __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_1__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __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_2__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_block__WEBPACK_IMPORTED_MODULE_3__ = __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_3__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_embed__WEBPACK_IMPORTED_MODULE_4__ = __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_4__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_inline__WEBPACK_IMPORTED_MODULE_5__ = __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_5__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_scroll__WEBPACK_IMPORTED_MODULE_6__ = __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_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_store__WEBPACK_IMPORTED_MODULE_10__ = __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_10__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_style__WEBPACK_IMPORTED_MODULE_11__ = __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_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 }\\n if (this.blots.has(node)) {\\n return this.blots.get(node) || null;\\n }\\n if (bubble) {\\n return this.find(node.parentNode, bubble);\\n }\\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 const names = (query.getAttribute('class') || '').split(/\\\\s+/);\\n names.some((name) => {\\n match = this.classes[name];\\n if (match) {\\n return true;\\n }\\n return false;\\n });\\n match = match || this.tags[query.tagName];\\n }\\n if (match == null) {\\n return null;\\n }\\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 }\\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 const 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((tagName) => {\\n return tagName.toUpperCase();\\n });\\n }\\n else {\\n definition.tagName = definition.tagName.toUpperCase();\\n }\\n const 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/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"// shim for using process in browser\\nvar process = module.exports = {};\\n\\n// cached from whatever global is present so that test runners that stub it\\n// don't break things. But we need to wrap it in a try catch in case it is\\n// wrapped in strict mode code which doesn't define any globals. It's inside a\\n// function because try/catches deoptimize in certain engines.\\n\\nvar cachedSetTimeout;\\nvar cachedClearTimeout;\\n\\nfunction defaultSetTimout() {\\n throw new Error('setTimeout has not been defined');\\n}\\nfunction defaultClearTimeout () {\\n throw new Error('clearTimeout has not been defined');\\n}\\n(function () {\\n try {\\n if (typeof setTimeout === 'function') {\\n cachedSetTimeout = setTimeout;\\n } else {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n } catch (e) {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n try {\\n if (typeof clearTimeout === 'function') {\\n cachedClearTimeout = clearTimeout;\\n } else {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n } catch (e) {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n} ())\\nfunction runTimeout(fun) {\\n if (cachedSetTimeout === setTimeout) {\\n //normal enviroments in sane situations\\n return setTimeout(fun, 0);\\n }\\n // if setTimeout wasn't available but was latter defined\\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\\n cachedSetTimeout = setTimeout;\\n return setTimeout(fun, 0);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedSetTimeout(fun, 0);\\n } catch(e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedSetTimeout.call(null, fun, 0);\\n } catch(e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\\n return cachedSetTimeout.call(this, fun, 0);\\n }\\n }\\n\\n\\n}\\nfunction runClearTimeout(marker) {\\n if (cachedClearTimeout === clearTimeout) {\\n //normal enviroments in sane situations\\n return clearTimeout(marker);\\n }\\n // if clearTimeout wasn't available but was latter defined\\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\\n cachedClearTimeout = clearTimeout;\\n return clearTimeout(marker);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedClearTimeout(marker);\\n } catch (e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedClearTimeout.call(null, marker);\\n } catch (e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\\n return cachedClearTimeout.call(this, marker);\\n }\\n }\\n\\n\\n\\n}\\nvar queue = [];\\nvar draining = false;\\nvar currentQueue;\\nvar queueIndex = -1;\\n\\nfunction cleanUpNextTick() {\\n if (!draining || !currentQueue) {\\n return;\\n }\\n draining = false;\\n if (currentQueue.length) {\\n queue = currentQueue.concat(queue);\\n } else {\\n queueIndex = -1;\\n }\\n if (queue.length) {\\n drainQueue();\\n }\\n}\\n\\nfunction drainQueue() {\\n if (draining) {\\n return;\\n }\\n var timeout = runTimeout(cleanUpNextTick);\\n draining = true;\\n\\n var len = queue.length;\\n while(len) {\\n currentQueue = queue;\\n queue = [];\\n while (++queueIndex < len) {\\n if (currentQueue) {\\n currentQueue[queueIndex].run();\\n }\\n }\\n queueIndex = -1;\\n len = queue.length;\\n }\\n currentQueue = null;\\n draining = false;\\n runClearTimeout(timeout);\\n}\\n\\nprocess.nextTick = function (fun) {\\n var args = new Array(arguments.length - 1);\\n if (arguments.length > 1) {\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n }\\n queue.push(new Item(fun, args));\\n if (queue.length === 1 && !draining) {\\n runTimeout(drainQueue);\\n }\\n};\\n\\n// v8 likes predictible objects\\nfunction Item(fun, array) {\\n this.fun = fun;\\n this.array = array;\\n}\\nItem.prototype.run = function () {\\n this.fun.apply(null, this.array);\\n};\\nprocess.title = 'browser';\\nprocess.browser = true;\\nprocess.env = {};\\nprocess.argv = [];\\nprocess.version = ''; // empty string to avoid regexp issues\\nprocess.versions = {};\\n\\nfunction noop() {}\\n\\nprocess.on = noop;\\nprocess.addListener = noop;\\nprocess.once = noop;\\nprocess.off = noop;\\nprocess.removeListener = noop;\\nprocess.removeAllListeners = noop;\\nprocess.emit = noop;\\nprocess.prependListener = noop;\\nprocess.prependOnceListener = noop;\\n\\nprocess.listeners = function (name) { return [] }\\n\\nprocess.binding = function (name) {\\n throw new Error('process.binding is not supported');\\n};\\n\\nprocess.cwd = function () { return '/' };\\nprocess.chdir = function (dir) {\\n throw new Error('process.chdir is not supported');\\n};\\nprocess.umask = function() { return 0; };\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/process/browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/AttributeMap.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/quill-delta/dist/AttributeMap.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar AttributeMap;\\n(function (AttributeMap) {\\n function compose(a, b, keepNull) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = extend_1.default(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 AttributeMap.compose = compose;\\n function diff(a, b) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = Object.keys(a)\\n .concat(Object.keys(b))\\n .reduce(function (attrs, key) {\\n if (!deep_equal_1.default(a[key], b[key])) {\\n attrs[key] = b[key] === undefined ? null : b[key];\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.diff = diff;\\n function invert(attr, base) {\\n if (attr === void 0) { attr = {}; }\\n if (base === void 0) { base = {}; }\\n attr = attr || {};\\n var baseInverted = Object.keys(base).reduce(function (memo, key) {\\n if (base[key] !== attr[key] && attr[key] !== undefined) {\\n memo[key] = base[key];\\n }\\n return memo;\\n }, {});\\n return Object.keys(attr).reduce(function (memo, key) {\\n if (attr[key] !== base[key] && base[key] === undefined) {\\n memo[key] = null;\\n }\\n return memo;\\n }, baseInverted);\\n }\\n AttributeMap.invert = invert;\\n function transform(a, b, priority) {\\n if (priority === void 0) { priority = false; }\\n if (typeof a !== 'object') {\\n return b;\\n }\\n if (typeof b !== 'object') {\\n return undefined;\\n }\\n if (!priority) {\\n return b; // b simply overwrites us without priority\\n }\\n var attributes = Object.keys(b).reduce(function (attrs, key) {\\n if (a[key] === undefined) {\\n attrs[key] = b[key]; // null is a valid value\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.transform = transform;\\n})(AttributeMap || (AttributeMap = {}));\\nexports.default = AttributeMap;\\n//# sourceMappingURL=AttributeMap.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/AttributeMap.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Delta.js\":\n/*!************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Delta.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar fast_diff_1 = __importDefault(__webpack_require__(/*! fast-diff */ \\\"./node_modules/fast-diff/diff.js\\\"));\\nvar AttributeMap_1 = __importDefault(__webpack_require__(/*! ./AttributeMap */ \\\"./node_modules/quill-delta/dist/AttributeMap.js\\\"));\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\\nvar Delta = /** @class */ (function () {\\n function Delta(ops) {\\n // Assume we are given a well formed ops\\n if (Array.isArray(ops)) {\\n this.ops = ops;\\n }\\n else if (ops != null && Array.isArray(ops.ops)) {\\n this.ops = ops.ops;\\n }\\n else {\\n this.ops = [];\\n }\\n }\\n Delta.prototype.insert = function (arg, attributes) {\\n var newOp = {};\\n if (typeof arg === 'string' && arg.length === 0) {\\n return this;\\n }\\n newOp.insert = arg;\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.delete = function (length) {\\n if (length <= 0) {\\n return this;\\n }\\n return this.push({ delete: length });\\n };\\n Delta.prototype.retain = function (length, attributes) {\\n if (length <= 0) {\\n return this;\\n }\\n var newOp = { retain: length };\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.push = function (newOp) {\\n var index = this.ops.length;\\n var lastOp = this.ops[index - 1];\\n newOp = extend_1.default(true, {}, newOp);\\n if (typeof lastOp === 'object') {\\n if (typeof newOp.delete === 'number' &&\\n 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 (deep_equal_1.default(newOp.attributes, lastOp.attributes)) {\\n if (typeof newOp.insert === 'string' &&\\n typeof lastOp.insert === 'string') {\\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n else if (typeof newOp.retain === 'number' &&\\n typeof lastOp.retain === 'number') {\\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n }\\n }\\n if (index === this.ops.length) {\\n this.ops.push(newOp);\\n }\\n else {\\n this.ops.splice(index, 0, newOp);\\n }\\n return this;\\n };\\n Delta.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 Delta.prototype.filter = function (predicate) {\\n return this.ops.filter(predicate);\\n };\\n Delta.prototype.forEach = function (predicate) {\\n this.ops.forEach(predicate);\\n };\\n Delta.prototype.map = function (predicate) {\\n return this.ops.map(predicate);\\n };\\n Delta.prototype.partition = function (predicate) {\\n var passed = [];\\n var failed = [];\\n this.forEach(function (op) {\\n var target = predicate(op) ? passed : failed;\\n target.push(op);\\n });\\n return [passed, failed];\\n };\\n Delta.prototype.reduce = function (predicate, initialValue) {\\n return this.ops.reduce(predicate, initialValue);\\n };\\n Delta.prototype.changeLength = function () {\\n return this.reduce(function (length, elem) {\\n if (elem.insert) {\\n return length + Op_1.default.length(elem);\\n }\\n else if (elem.delete) {\\n return length - elem.delete;\\n }\\n return length;\\n }, 0);\\n };\\n Delta.prototype.length = function () {\\n return this.reduce(function (length, elem) {\\n return length + Op_1.default.length(elem);\\n }, 0);\\n };\\n Delta.prototype.slice = function (start, end) {\\n if (start === void 0) { start = 0; }\\n if (end === void 0) { end = Infinity; }\\n var ops = [];\\n var iter = Op_1.default.iterator(this.ops);\\n var index = 0;\\n while (index < end && iter.hasNext()) {\\n var nextOp = void 0;\\n if (index < start) {\\n nextOp = iter.next(start - index);\\n }\\n else {\\n nextOp = iter.next(end - index);\\n ops.push(nextOp);\\n }\\n index += Op_1.default.length(nextOp);\\n }\\n return new Delta(ops);\\n };\\n Delta.prototype.compose = function (other) {\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var ops = [];\\n var firstOther = otherIter.peek();\\n if (firstOther != null &&\\n typeof firstOther.retain === 'number' &&\\n firstOther.attributes == null) {\\n var firstLeft = firstOther.retain;\\n while (thisIter.peekType() === 'insert' &&\\n thisIter.peekLength() <= firstLeft) {\\n firstLeft -= thisIter.peekLength();\\n ops.push(thisIter.next());\\n }\\n if (firstOther.retain - firstLeft > 0) {\\n otherIter.next(firstOther.retain - firstLeft);\\n }\\n }\\n var delta = new Delta(ops);\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else if (thisIter.peekType() === 'delete') {\\n delta.push(thisIter.next());\\n }\\n else {\\n var length_1 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_1);\\n var otherOp = otherIter.next(length_1);\\n if (typeof otherOp.retain === 'number') {\\n var newOp = {};\\n if (typeof thisOp.retain === 'number') {\\n newOp.retain = length_1;\\n }\\n else {\\n newOp.insert = thisOp.insert;\\n }\\n // Preserve null when composing with a retain, otherwise remove it for inserts\\n var attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\\n if (attributes) {\\n newOp.attributes = attributes;\\n }\\n delta.push(newOp);\\n // Optimization if rest of other is just retain\\n if (!otherIter.hasNext() &&\\n deep_equal_1.default(delta.ops[delta.ops.length - 1], newOp)) {\\n var rest = new Delta(thisIter.rest());\\n return delta.concat(rest).chop();\\n }\\n // Other op should be delete, we could be an insert or retain\\n // Insert + delete cancels out\\n }\\n else if (typeof otherOp.delete === 'number' &&\\n typeof thisOp.retain === 'number') {\\n delta.push(otherOp);\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.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 Delta.prototype.diff = function (other, cursor) {\\n if (this.ops === other.ops) {\\n return new Delta();\\n }\\n var strings = [this, other].map(function (delta) {\\n return delta\\n .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 })\\n .join('');\\n });\\n var retDelta = new Delta();\\n var diffResult = fast_diff_1.default(strings[0], strings[1], cursor);\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.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 fast_diff_1.default.INSERT:\\n opLength = Math.min(otherIter.peekLength(), length);\\n retDelta.push(otherIter.next(opLength));\\n break;\\n case fast_diff_1.default.DELETE:\\n opLength = Math.min(length, thisIter.peekLength());\\n thisIter.next(opLength);\\n retDelta.delete(opLength);\\n break;\\n case fast_diff_1.default.EQUAL:\\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\\n var thisOp = thisIter.next(opLength);\\n var otherOp = otherIter.next(opLength);\\n if (deep_equal_1.default(thisOp.insert, otherOp.insert)) {\\n retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\\n }\\n else {\\n retDelta.push(otherOp).delete(opLength);\\n }\\n break;\\n }\\n length -= opLength;\\n }\\n });\\n return retDelta.chop();\\n };\\n Delta.prototype.eachLine = function (predicate, newline) {\\n if (newline === void 0) { newline = '\\\\n'; }\\n var iter = Op_1.default.iterator(this.ops);\\n var line = new Delta();\\n var i = 0;\\n while (iter.hasNext()) {\\n if (iter.peekType() !== 'insert') {\\n return;\\n }\\n var thisOp = iter.peek();\\n var start = Op_1.default.length(thisOp) - iter.peekLength();\\n var index = typeof thisOp.insert === 'string'\\n ? thisOp.insert.indexOf(newline, start) - start\\n : -1;\\n if (index < 0) {\\n line.push(iter.next());\\n }\\n else if (index > 0) {\\n line.push(iter.next(index));\\n }\\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 Delta.prototype.invert = function (base) {\\n var inverted = new Delta();\\n this.reduce(function (baseIndex, op) {\\n if (op.insert) {\\n inverted.delete(Op_1.default.length(op));\\n }\\n else if (op.retain && op.attributes == null) {\\n inverted.retain(op.retain);\\n return baseIndex + op.retain;\\n }\\n else if (op.delete || (op.retain && op.attributes)) {\\n var length_2 = (op.delete || op.retain);\\n var slice = base.slice(baseIndex, baseIndex + length_2);\\n slice.forEach(function (baseOp) {\\n if (op.delete) {\\n inverted.push(baseOp);\\n }\\n else if (op.retain && op.attributes) {\\n inverted.retain(Op_1.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\\n }\\n });\\n return baseIndex + length_2;\\n }\\n return baseIndex;\\n }, 0);\\n return inverted.chop();\\n };\\n Delta.prototype.transform = function (arg, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n if (typeof arg === 'number') {\\n return this.transformPosition(arg, priority);\\n }\\n var other = arg;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var delta = new Delta();\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (thisIter.peekType() === 'insert' &&\\n (priority || otherIter.peekType() !== 'insert')) {\\n delta.retain(Op_1.default.length(thisIter.next()));\\n }\\n else if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else {\\n var length_3 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_3);\\n var otherOp = otherIter.next(length_3);\\n if (thisOp.delete) {\\n // Our delete either makes their delete redundant or removes their retain\\n continue;\\n }\\n else if (otherOp.delete) {\\n delta.push(otherOp);\\n }\\n else {\\n // We retain either their retain or insert\\n delta.retain(length_3, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.prototype.transformPosition = function (index, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var offset = 0;\\n while (thisIter.hasNext() && offset <= index) {\\n var length_4 = thisIter.peekLength();\\n var nextType = thisIter.peekType();\\n thisIter.next();\\n if (nextType === 'delete') {\\n index -= Math.min(length_4, index - offset);\\n continue;\\n }\\n else if (nextType === 'insert' && (offset < index || !priority)) {\\n index += length_4;\\n }\\n offset += length_4;\\n }\\n return index;\\n };\\n Delta.Op = Op_1.default;\\n Delta.AttributeMap = AttributeMap_1.default;\\n return Delta;\\n}());\\nmodule.exports = Delta;\\n//# sourceMappingURL=Delta.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Delta.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Iterator.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Iterator.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar Iterator = /** @class */ (function () {\\n function Iterator(ops) {\\n this.ops = ops;\\n this.index = 0;\\n this.offset = 0;\\n }\\n Iterator.prototype.hasNext = function () {\\n return this.peekLength() < Infinity;\\n };\\n Iterator.prototype.next = function (length) {\\n if (!length) {\\n length = Infinity;\\n }\\n var nextOp = this.ops[this.index];\\n if (nextOp) {\\n var offset = this.offset;\\n var opLength = Op_1.default.length(nextOp);\\n if (length >= opLength - offset) {\\n length = opLength - offset;\\n this.index += 1;\\n this.offset = 0;\\n }\\n else {\\n this.offset += length;\\n }\\n if (typeof nextOp.delete === 'number') {\\n return { delete: length };\\n }\\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 }\\n else if (typeof nextOp.insert === 'string') {\\n retOp.insert = nextOp.insert.substr(offset, length);\\n }\\n else {\\n // offset should === 0, length should === 1\\n retOp.insert = nextOp.insert;\\n }\\n return retOp;\\n }\\n }\\n else {\\n return { retain: Infinity };\\n }\\n };\\n Iterator.prototype.peek = function () {\\n return this.ops[this.index];\\n };\\n Iterator.prototype.peekLength = function () {\\n if (this.ops[this.index]) {\\n // Should never return 0 if our index is being managed correctly\\n return Op_1.default.length(this.ops[this.index]) - this.offset;\\n }\\n else {\\n return Infinity;\\n }\\n };\\n Iterator.prototype.peekType = function () {\\n if (this.ops[this.index]) {\\n if (typeof this.ops[this.index].delete === 'number') {\\n return 'delete';\\n }\\n else if (typeof this.ops[this.index].retain === 'number') {\\n return 'retain';\\n }\\n else {\\n return 'insert';\\n }\\n }\\n return 'retain';\\n };\\n Iterator.prototype.rest = function () {\\n if (!this.hasNext()) {\\n return [];\\n }\\n else if (this.offset === 0) {\\n return this.ops.slice(this.index);\\n }\\n else {\\n var offset = this.offset;\\n var index = this.index;\\n var next = this.next();\\n var rest = this.ops.slice(this.index);\\n this.offset = offset;\\n this.index = index;\\n return [next].concat(rest);\\n }\\n };\\n return Iterator;\\n}());\\nexports.default = Iterator;\\n//# sourceMappingURL=Iterator.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Iterator.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Op.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/quill-delta/dist/Op.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Iterator_1 = __importDefault(__webpack_require__(/*! ./Iterator */ \\\"./node_modules/quill-delta/dist/Iterator.js\\\"));\\nvar Op;\\n(function (Op) {\\n function iterator(ops) {\\n return new Iterator_1.default(ops);\\n }\\n Op.iterator = iterator;\\n function length(op) {\\n if (typeof op.delete === 'number') {\\n return op.delete;\\n }\\n else if (typeof op.retain === 'number') {\\n return op.retain;\\n }\\n else {\\n return typeof op.insert === 'string' ? op.insert.length : 1;\\n }\\n }\\n Op.length = length;\\n})(Op || (Op = {}));\\nexports.default = Op;\\n//# sourceMappingURL=Op.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Op.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/deep-equal/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/deep-equal/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/quill-delta/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/is-date-object/index.js\\\");\\n\\nvar getTime = Date.prototype.getTime;\\n\\nfunction deepEqual(actual, expected, options) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected;\\n }\\n\\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 */\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts);\\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') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts) {\\n /* eslint max-statements: [2, 50] */\\n var i, key;\\n if (typeof a !== typeof b) { return false; }\\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\\n\\n // an identical 'prototype' property.\\n if (a.prototype !== b.prototype) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if (aIsRegex || bIsRegex) {\\n return a.source === b.source && flags(a) === flags(b);\\n }\\n\\n if (isDate(a) && isDate(b)) {\\n return getTime.call(a) === getTime.call(b);\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n try {\\n var ka = objectKeys(a);\\n var 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 hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; }\\n }\\n // equivalent values for every corresponding key, and ~~~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\\n return true;\\n}\\n\\nmodule.exports = deepEqual;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/implementation.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/implementation.js ***!\n \\*****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/quill-delta/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/isArguments.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/implementation.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/implementation.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Object = Object;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function flags() {\\n\\tif (this != null && this !== $Object(this)) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\\n\\t}\\n\\tvar result = '';\\n\\tif (this.global) {\\n\\t\\tresult += 'g';\\n\\t}\\n\\tif (this.ignoreCase) {\\n\\t\\tresult += 'i';\\n\\t}\\n\\tif (this.multiline) {\\n\\t\\tresult += 'm';\\n\\t}\\n\\tif (this.dotAll) {\\n\\t\\tresult += 's';\\n\\t}\\n\\tif (this.unicode) {\\n\\t\\tresult += 'u';\\n\\t}\\n\\tif (this.sticky) {\\n\\t\\tresult += 'y';\\n\\t}\\n\\treturn result;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar callBind = __webpack_require__(/*! es-abstract/helpers/callBind */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/regexp.prototype.flags/shim.js\\\");\\n\\nvar flagsBound = callBind(implementation);\\n\\ndefine(flagsBound, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = flagsBound;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/polyfill.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/polyfill.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!supportsDescriptors) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tif ((/a/mig).flags === 'gim') {\\n\\t\\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\\n\\t\\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\\n\\t\\t\\treturn descriptor.get;\\n\\t\\t}\\n\\t}\\n\\treturn implementation;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/shim.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/shim.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar gOPD = Object.getOwnPropertyDescriptor;\\nvar defineProperty = Object.defineProperty;\\nvar TypeErr = TypeError;\\nvar getProto = Object.getPrototypeOf;\\nvar regex = /a/;\\n\\nmodule.exports = function shimFlags() {\\n\\tif (!supportsDescriptors || !getProto) {\\n\\t\\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tvar polyfill = getPolyfill();\\n\\tvar proto = getProto(regex);\\n\\tvar descriptor = gOPD(proto, 'flags');\\n\\tif (!descriptor || descriptor.get !== polyfill) {\\n\\t\\tdefineProperty(proto, 'flags', {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tget: polyfill\\n\\t\\t});\\n\\t}\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/shim.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/side-channel/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar inspect = __webpack_require__(/*! object-inspect */ \\\"./node_modules/object-inspect/index.js\\\");\\n\\nvar $TypeError = GetIntrinsic('%TypeError%');\\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\\nvar $Map = GetIntrinsic('%Map%', true);\\nvar $push = callBound('Array.prototype.push');\\n\\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSet = callBound('Map.prototype.set', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar objectGet = function (objects, key) { // eslint-disable-line consistent-return\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn objects[i].value;\\n\\t\\t}\\n\\t}\\n};\\nvar objectSet = function (objects, key, value) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\tobjects[i].value = value; // eslint-disable-line no-param-reassign\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t}\\n\\t$push(objects, {\\n\\t\\tkey: key,\\n\\t\\tvalue: value\\n\\t});\\n};\\nvar objectHas = function (objects, key) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getSideChannel() {\\n\\tvar $wm;\\n\\tvar $m;\\n\\tvar $o;\\n\\tvar channel = {\\n\\t\\tassert: function (key) {\\n\\t\\t\\tif (!channel.has(key)) {\\n\\t\\t\\t\\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tget: function (key) { // eslint-disable-line consistent-return\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapGet($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapGet($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectGet($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\thas: function (key) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapHas($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapHas($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectHas($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\tset: function (key, value) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif (!$wm) {\\n\\t\\t\\t\\t\\t$wm = new $WeakMap();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$weakMapSet($wm, key, value);\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif (!$m) {\\n\\t\\t\\t\\t\\t$m = new $Map();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$mapSet($m, key, value);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (!$o) {\\n\\t\\t\\t\\t\\t$o = [];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tobjectSet($o, key, value);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\treturn channel;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js ***!\n \\********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var g;\\n\\n// This works in non-strict mode\\ng = (function() {\\n\\treturn this;\\n})();\\n\\ntry {\\n\\t// This works if eval is allowed (see CSP)\\n\\tg = g || new Function(\\\"return this\\\")();\\n} catch (e) {\\n\\t// This works if the window reference is available\\n\\tif (typeof window === \\\"object\\\") g = window;\\n}\\n\\n// g can still be undefined, but nothing to do about it...\\n// We return undefined, instead of nothing here, so it's\\n// easier to handle this case. if(!global) { ...}\\n\\nmodule.exports = g;\\n\\n\\n//# sourceURL=webpack://Quill/(webpack)/buildin/global.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\nvar isNumber = __webpack_require__(/*! is-number-object */ \\\"./node_modules/is-number-object/index.js\\\");\\nvar isBoolean = __webpack_require__(/*! is-boolean-object */ \\\"./node_modules/is-boolean-object/index.js\\\");\\nvar isSymbol = __webpack_require__(/*! is-symbol */ \\\"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\\\");\\nvar isBigInt = __webpack_require__(/*! is-bigint */ \\\"./node_modules/is-bigint/index.js\\\");\\n\\n// eslint-disable-next-line consistent-return\\nmodule.exports = function whichBoxedPrimitive(value) {\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\\n\\t\\treturn null;\\n\\t}\\n\\tif (isString(value)) {\\n\\t\\treturn 'String';\\n\\t}\\n\\tif (isNumber(value)) {\\n\\t\\treturn 'Number';\\n\\t}\\n\\tif (isBoolean(value)) {\\n\\t\\treturn 'Boolean';\\n\\t}\\n\\tif (isSymbol(value)) {\\n\\t\\treturn 'Symbol';\\n\\t}\\n\\tif (isBigInt(value)) {\\n\\t\\treturn 'BigInt';\\n\\t}\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nif (hasSymbols) {\\n\\tvar symToStr = Symbol.prototype.toString;\\n\\tvar symStringRegex = /^Symbol\\\\(.*\\\\)$/;\\n\\tvar isSymbolObject = function isRealSymbolObject(value) {\\n\\t\\tif (typeof value.valueOf() !== 'symbol') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn symStringRegex.test(symToStr.call(value));\\n\\t};\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\tif (typeof value === 'symbol') {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t\\tif (toStr.call(value) !== '[object Symbol]') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn isSymbolObject(value);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n} else {\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\t// this environment does not support Symbols.\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-collection/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/which-collection/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\nvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\nvar isWeakMap = __webpack_require__(/*! is-weakmap */ \\\"./node_modules/is-weakmap/index.js\\\");\\nvar isWeakSet = __webpack_require__(/*! is-weakset */ \\\"./node_modules/is-weakset/index.js\\\");\\n\\nmodule.exports = function whichCollection(value) {\\n\\tif (value && typeof value === 'object') {\\n\\t\\tif (isMap(value)) {\\n\\t\\t\\treturn 'Map';\\n\\t\\t}\\n\\t\\tif (isSet(value)) {\\n\\t\\t\\treturn 'Set';\\n\\t\\t}\\n\\t\\tif (isWeakMap(value)) {\\n\\t\\t\\treturn 'WeakMap';\\n\\t\\t}\\n\\t\\tif (isWeakSet(value)) {\\n\\t\\t\\treturn 'WeakSet';\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-collection/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/which-typed-array/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tif (typeof global[typedArray] === 'function') {\\n\\t\\t\\tvar arr = new global[typedArray]();\\n\\t\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t\\t}\\n\\t\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\t\\tif (!descriptor) {\\n\\t\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t\\t}\\n\\t\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t\\t}\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar foundName = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!foundName) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar name = getter.call(value);\\n\\t\\t\\t\\tif (name === typedArray) {\\n\\t\\t\\t\\t\\tfoundName = name;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {}\\n\\t\\t}\\n\\t});\\n\\treturn foundName;\\n};\\n\\nvar isTypedArray = __webpack_require__(/*! is-typed-array */ \\\"./node_modules/is-typed-array/index.js\\\");\\n\\nmodule.exports = function whichTypedArray(value) {\\n\\tif (!isTypedArray(value)) { return false; }\\n\\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\*************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!*****************************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\*****************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./quill.js\":\n/*!******************!*\\\n !*** ./quill.js ***!\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 _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ \\\"./core.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_indent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formats/indent */ \\\"./formats/indent.js\\\");\\n/* harmony import */ var _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formats/blockquote */ \\\"./formats/blockquote.js\\\");\\n/* harmony import */ var _formats_header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formats/header */ \\\"./formats/header.js\\\");\\n/* harmony import */ var _formats_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formats/list */ \\\"./formats/list.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formats/size */ \\\"./formats/size.js\\\");\\n/* harmony import */ var _formats_bold__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./formats/bold */ \\\"./formats/bold.js\\\");\\n/* harmony import */ var _formats_italic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./formats/italic */ \\\"./formats/italic.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _formats_script__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./formats/script */ \\\"./formats/script.js\\\");\\n/* harmony import */ var _formats_strike__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./formats/strike */ \\\"./formats/strike.js\\\");\\n/* harmony import */ var _formats_underline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./formats/underline */ \\\"./formats/underline.js\\\");\\n/* harmony import */ var _formats_formula__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./formats/formula */ \\\"./formats/formula.js\\\");\\n/* harmony import */ var _formats_image__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formats/image */ \\\"./formats/image.js\\\");\\n/* harmony import */ var _formats_video__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formats/video */ \\\"./formats/video.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _modules_syntax__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/syntax */ \\\"./modules/syntax.js\\\");\\n/* harmony import */ var _modules_table__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/table */ \\\"./modules/table.js\\\");\\n/* harmony import */ var _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/toolbar */ \\\"./modules/toolbar.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./ui/icons */ \\\"./ui/icons.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n/* harmony import */ var _themes_bubble__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./themes/bubble */ \\\"./themes/bubble.js\\\");\\n/* harmony import */ var _themes_snow__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./themes/snow */ \\\"./themes/snow.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'attributors/attribute/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionAttribute\\\"],\\n 'attributors/class/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'attributors/class/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundClass\\\"],\\n 'attributors/class/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorClass\\\"],\\n 'attributors/class/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'attributors/class/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'attributors/class/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'attributors/style/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignStyle\\\"],\\n 'attributors/style/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'attributors/style/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'attributors/style/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionStyle\\\"],\\n 'attributors/style/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontStyle\\\"],\\n 'attributors/style/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeStyle\\\"]\\n}, true);\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'formats/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'formats/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'formats/indent': _formats_indent__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'formats/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'formats/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'formats/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'formats/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'formats/blockquote': _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'formats/code-block': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"default\\\"],\\n 'formats/header': _formats_header__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'formats/list': _formats_list__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'formats/bold': _formats_bold__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'formats/code': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"Code\\\"],\\n 'formats/italic': _formats_italic__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"],\\n 'formats/link': _formats_link__WEBPACK_IMPORTED_MODULE_13__[\\\"default\\\"],\\n 'formats/script': _formats_script__WEBPACK_IMPORTED_MODULE_14__[\\\"default\\\"],\\n 'formats/strike': _formats_strike__WEBPACK_IMPORTED_MODULE_15__[\\\"default\\\"],\\n 'formats/underline': _formats_underline__WEBPACK_IMPORTED_MODULE_16__[\\\"default\\\"],\\n 'formats/formula': _formats_formula__WEBPACK_IMPORTED_MODULE_17__[\\\"default\\\"],\\n 'formats/image': _formats_image__WEBPACK_IMPORTED_MODULE_18__[\\\"default\\\"],\\n 'formats/video': _formats_video__WEBPACK_IMPORTED_MODULE_19__[\\\"default\\\"],\\n 'modules/syntax': _modules_syntax__WEBPACK_IMPORTED_MODULE_21__[\\\"default\\\"],\\n 'modules/table': _modules_table__WEBPACK_IMPORTED_MODULE_22__[\\\"default\\\"],\\n 'modules/toolbar': _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__[\\\"default\\\"],\\n 'themes/bubble': _themes_bubble__WEBPACK_IMPORTED_MODULE_29__[\\\"default\\\"],\\n 'themes/snow': _themes_snow__WEBPACK_IMPORTED_MODULE_30__[\\\"default\\\"],\\n 'ui/icons': _ui_icons__WEBPACK_IMPORTED_MODULE_24__[\\\"default\\\"],\\n 'ui/picker': _ui_picker__WEBPACK_IMPORTED_MODULE_25__[\\\"default\\\"],\\n 'ui/icon-picker': _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__[\\\"default\\\"],\\n 'ui/color-picker': _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__[\\\"default\\\"],\\n 'ui/tooltip': _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__[\\\"default\\\"]\\n}, true);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./quill.js?\");\n\n/***/ }),\n\n/***/ \"./themes/base.js\":\n/*!************************!*\\\n !*** ./themes/base.js ***!\n \\************************/\n/*! exports provided: BaseTooltip, 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__, \\\"BaseTooltip\\\", function() { return BaseTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BaseTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_theme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/theme */ \\\"./core/theme.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n\\n\\n\\n\\n\\n\\n\\nconst ALIGNS = [false, 'center', 'right', 'justify'];\\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'];\\nconst FONTS = [false, 'serif', 'monospace'];\\nconst HEADERS = ['1', '2', '3', false];\\nconst SIZES = ['small', false, 'large', 'huge'];\\n\\nclass BaseTheme extends _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\n const listener = e => {\\n if (!document.body.contains(quill.root)) {\\n document.body.removeEventListener('click', listener);\\n return;\\n }\\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\\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\\n quill.emitter.listenDOM('click', document.body, listener);\\n }\\n\\n addModule(name) {\\n const module = super.addModule(name);\\n\\n if (name === 'toolbar') {\\n this.extendToolbar(module);\\n }\\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\\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\\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\\n return new _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"](select, icons.align);\\n }\\n\\n if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\\n\\n if (select.querySelector('option') == null) {\\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\\n }\\n\\n return new _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](select, icons[format]);\\n }\\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\\n return new _ui_picker__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"](select);\\n });\\n\\n const update = () => {\\n this.pickers.forEach(picker => {\\n picker.update();\\n });\\n };\\n\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, update);\\n }\\n\\n}\\n\\nBaseTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n formula() {\\n this.quill.theme.tooltip.edit('formula');\\n },\\n\\n image() {\\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\\n\\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\\n fileInput.click();\\n },\\n\\n video() {\\n this.quill.theme.tooltip.edit('video');\\n }\\n\\n }\\n }\\n }\\n});\\n\\nclass BaseTooltip extends _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__[\\\"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\\n if (preview != null) {\\n this.textbox.value = preview;\\n } else if (mode !== this.root.getAttribute('data-mode')) {\\n this.textbox.value = '';\\n }\\n\\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\\n this.textbox.select();\\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(\\\"data-\\\".concat(mode)) || '');\\n this.root.setAttribute('data-mode', mode);\\n }\\n\\n restoreFocus() {\\n const {\\n scrollTop\\n } = this.quill.scrollingContainer;\\n this.quill.focus();\\n this.quill.scrollingContainer.scrollTop = scrollTop;\\n }\\n\\n save() {\\n let {\\n value\\n } = this.textbox;\\n\\n switch (this.root.getAttribute('data-mode')) {\\n case 'link':\\n {\\n const {\\n scrollTop\\n } = this.quill.root;\\n\\n if (this.linkRange) {\\n this.quill.formatText(this.linkRange, 'link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n } else {\\n this.restoreFocus();\\n this.quill.format('link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.root.scrollTop = scrollTop;\\n break;\\n }\\n\\n case 'video':\\n {\\n value = extractVideoUrl(value);\\n }\\n // eslint-disable-next-line no-fallthrough\\n\\n case 'formula':\\n {\\n if (!value) break;\\n const range = this.quill.getSelection(true);\\n\\n if (range != null) {\\n const index = range.index + range.length;\\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (this.root.getAttribute('data-mode') === 'formula') {\\n this.quill.insertText(index + 1, ' ', _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(index + 2, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n break;\\n }\\n\\n default:\\n }\\n\\n this.textbox.value = '';\\n this.hide();\\n }\\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\\n if (match) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://www.youtube.com/embed/\\\").concat(match[2], \\\"?showinfo=0\\\");\\n } // eslint-disable-next-line no-cond-assign\\n\\n\\n if (match = url.match(/^(?:(https?):\\\\/\\\\/)?(?:www\\\\.)?vimeo\\\\.com\\\\/(\\\\d+)/)) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://player.vimeo.com/video/\\\").concat(match[2], \\\"/\\\");\\n }\\n\\n return url;\\n}\\n\\nfunction fillSelect(select, values, defaultValue = false) {\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value === defaultValue) {\\n option.setAttribute('selected', 'selected');\\n } else {\\n option.setAttribute('value', value);\\n }\\n\\n select.appendChild(option);\\n });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./themes/base.js?\");\n\n/***/ }),\n\n/***/ \"./themes/bubble.js\":\n/*!**************************!*\\\n !*** ./themes/bubble.js ***!\n \\**************************/\n/*! exports provided: BubbleTooltip, 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__, \\\"BubbleTooltip\\\", function() { return BubbleTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BubbleTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\\n header: 1\\n}, {\\n header: 2\\n}, 'blockquote']];\\n\\nclass BubbleTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"BaseTooltip\\\"] {\\n constructor(quill, bounds) {\\n super(quill, bounds);\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range, oldRange, source) => {\\n if (type !== _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE) return;\\n\\n if (range != null && range.length > 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.show(); // Lock our width so we will expand beyond our offsetParent boundaries\\n\\n this.root.style.left = '0px';\\n this.root.style.width = '';\\n this.root.style.width = \\\"\\\".concat(this.root.offsetWidth, \\\"px\\\");\\n const lines = this.quill.getLines(range.index, range.length);\\n\\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 _core_selection__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (shift !== 0) {\\n arrow.style.marginLeft = \\\"\\\".concat(-1 * shift - arrow.offsetWidth / 2, \\\"px\\\");\\n }\\n\\n return shift;\\n }\\n\\n}\\n\\nBubbleTooltip.TEMPLATE = ['', '
    ', '', '', '
    '].join('');\\n\\nclass BubbleTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n }\\n\\n}\\n\\nBubbleTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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});\\n\\n\\n//# sourceURL=webpack://Quill/./themes/bubble.js?\");\n\n/***/ }),\n\n/***/ \"./themes/snow.js\":\n/*!************************!*\\\n !*** ./themes/snow.js ***!\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 extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [[{\\n header: ['1', '2', '3', false]\\n}], ['bold', 'italic', 'underline', 'link'], [{\\n list: 'ordered'\\n}, {\\n list: 'bullet'\\n}], ['clean']];\\n\\nclass SnowTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n }\\n\\n event.preventDefault();\\n this.hide();\\n });\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE, (range, oldRange, source) => {\\n if (range == null) return;\\n\\n if (range.length === 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n const [link, offset] = this.quill.scroll.descendant(_formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], range.index);\\n\\n if (link != null) {\\n this.linkRange = new _core_selection__WEBPACK_IMPORTED_MODULE_4__[\\\"Range\\\"](range.index - offset, link.length());\\n const preview = _formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.hide();\\n });\\n }\\n\\n show() {\\n super.show();\\n this.root.removeAttribute('data-mode');\\n }\\n\\n}\\n\\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\\n\\nclass SnowTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\\n\\n if (toolbar.container.querySelector('.ql-link')) {\\n this.quill.keyboard.addBinding({\\n key: 'k',\\n shortKey: true\\n }, (range, context) => {\\n toolbar.handlers.link.call(toolbar, !context.format.link);\\n });\\n }\\n }\\n\\n}\\n\\nSnowTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n if (/^\\\\S+@\\\\S+\\\\.\\\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\\n preview = \\\"mailto:\\\".concat(preview);\\n }\\n\\n const {\\n tooltip\\n } = this.quill.theme;\\n tooltip.edit('link', preview);\\n } else {\\n this.quill.format('link', false);\\n }\\n }\\n\\n }\\n }\\n }\\n});\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass ColorPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass IconPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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 if (this.label.innerHTML === item.innerHTML) return;\\n this.label.innerHTML = item.innerHTML;\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/align-left.svg */ \\\"./assets/icons/align-left.svg\\\");\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/icons/align-center.svg */ \\\"./assets/icons/align-center.svg\\\");\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../assets/icons/align-right.svg */ \\\"./assets/icons/align-right.svg\\\");\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/icons/align-justify.svg */ \\\"./assets/icons/align-justify.svg\\\");\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/icons/background.svg */ \\\"./assets/icons/background.svg\\\");\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../assets/icons/blockquote.svg */ \\\"./assets/icons/blockquote.svg\\\");\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/icons/bold.svg */ \\\"./assets/icons/bold.svg\\\");\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/icons/clean.svg */ \\\"./assets/icons/clean.svg\\\");\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/icons/code.svg */ \\\"./assets/icons/code.svg\\\");\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__);\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/icons/color.svg */ \\\"./assets/icons/color.svg\\\");\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__);\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/icons/direction-ltr.svg */ \\\"./assets/icons/direction-ltr.svg\\\");\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__);\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/icons/direction-rtl.svg */ \\\"./assets/icons/direction-rtl.svg\\\");\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__);\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/icons/formula.svg */ \\\"./assets/icons/formula.svg\\\");\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__);\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/icons/header.svg */ \\\"./assets/icons/header.svg\\\");\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__);\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/icons/header-2.svg */ \\\"./assets/icons/header-2.svg\\\");\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__);\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/icons/italic.svg */ \\\"./assets/icons/italic.svg\\\");\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__);\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/icons/image.svg */ \\\"./assets/icons/image.svg\\\");\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__);\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/icons/indent.svg */ \\\"./assets/icons/indent.svg\\\");\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__);\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/icons/outdent.svg */ \\\"./assets/icons/outdent.svg\\\");\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__);\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/icons/link.svg */ \\\"./assets/icons/link.svg\\\");\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__);\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/icons/list-bullet.svg */ \\\"./assets/icons/list-bullet.svg\\\");\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__);\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/icons/list-check.svg */ \\\"./assets/icons/list-check.svg\\\");\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__);\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/icons/list-ordered.svg */ \\\"./assets/icons/list-ordered.svg\\\");\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__);\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/icons/subscript.svg */ \\\"./assets/icons/subscript.svg\\\");\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__);\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/icons/superscript.svg */ \\\"./assets/icons/superscript.svg\\\");\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__);\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/icons/strike.svg */ \\\"./assets/icons/strike.svg\\\");\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__);\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/icons/table.svg */ \\\"./assets/icons/table.svg\\\");\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__);\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/icons/underline.svg */ \\\"./assets/icons/underline.svg\\\");\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__);\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/icons/video.svg */ \\\"./assets/icons/video.svg\\\");\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__);\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ({\\n align: {\\n '': _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default.a,\\n center: _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default.a,\\n right: _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default.a,\\n justify: _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default.a\\n },\\n background: _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default.a,\\n blockquote: _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default.a,\\n bold: _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default.a,\\n clean: _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default.a,\\n code: _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n 'code-block': _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n color: _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default.a,\\n direction: {\\n '': _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default.a,\\n rtl: _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default.a\\n },\\n formula: _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default.a,\\n header: {\\n '1': _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default.a,\\n '2': _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default.a\\n },\\n italic: _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default.a,\\n image: _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default.a,\\n indent: {\\n '+1': _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default.a,\\n '-1': _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default.a\\n },\\n link: _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default.a,\\n list: {\\n bullet: _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default.a,\\n check: _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default.a,\\n ordered: _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default.a\\n },\\n script: {\\n sub: _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default.a,\\n super: _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default.a\\n },\\n strike: _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default.a,\\n table: _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default.a,\\n underline: _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default.a,\\n video: _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default.a\\n});\\n\\n//# sourceURL=webpack://Quill/./ui/icons.js?\");\n\n/***/ }),\n\n/***/ \"./ui/picker.js\":\n/*!**********************!*\\\n !*** ./ui/picker.js ***!\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 _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/dropdown.svg */ \\\"./assets/icons/dropdown.svg\\\");\\n/* harmony import */ var _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__);\\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 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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\n }\\n });\\n this.select.addEventListener('change', this.update.bind(this));\\n }\\n\\n togglePicker() {\\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\\n\\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\\n if (option.hasAttribute('value')) {\\n item.setAttribute('data-value', option.getAttribute('value'));\\n }\\n\\n if (option.textContent) {\\n item.setAttribute('data-label', option.textContent);\\n }\\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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\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 = _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default.a;\\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'); // Don't want screen readers to read this until options are visible\\n\\n options.setAttribute('aria-hidden', 'true');\\n options.tabIndex = '-1'; // Need a unique id for aria-controls\\n\\n options.id = \\\"ql-picker-options-\\\".concat(optionsCounter);\\n optionsCounter += 1;\\n this.label.setAttribute('aria-controls', options.id);\\n this.options = options;\\n Array.from(this.select.options).forEach(option => {\\n const item = this.buildItem(option);\\n options.appendChild(item);\\n\\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(); // Need setTimeout for accessibility to ensure that the browser executes\\n // focus on the next process thread and after any DOM content changes\\n\\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\\n if (selected != null) {\\n selected.classList.remove('ql-selected');\\n }\\n\\n if (item == null) return;\\n item.classList.add('ql-selected');\\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\\n\\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\\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\\n if (trigger) {\\n this.select.dispatchEvent(new Event('change'));\\n this.close();\\n }\\n }\\n\\n update() {\\n let option;\\n\\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\\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\\n this.label.classList.toggle('ql-active', isActive);\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Picker);\\n\\n//# sourceURL=webpack://Quill/./ui/picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/tooltip.js\":\n/*!***********************!*\\\n !*** ./ui/tooltip.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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\\n if (this.quill.root === this.quill.scrollingContainer) {\\n this.quill.root.addEventListener('scroll', () => {\\n this.root.style.marginTop = \\\"\\\".concat(-1 * this.quill.root.scrollTop, \\\"px\\\");\\n });\\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; // root.scrollTop should be 0 if scrollContainer !== root\\n\\n const top = reference.bottom + this.quill.root.scrollTop;\\n this.root.style.left = \\\"\\\".concat(left, \\\"px\\\");\\n this.root.style.top = \\\"\\\".concat(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\\n if (rootBounds.right > containerBounds.right) {\\n shift = containerBounds.right - rootBounds.right;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\n\\n if (rootBounds.left < containerBounds.left) {\\n shift = containerBounds.left - rootBounds.left;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\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 = \\\"\\\".concat(top - verticalShift, \\\"px\\\");\\n this.root.classList.add('ql-flip');\\n }\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/***/ 1:\n/*!********************************!*\\\n !*** ./util.inspect (ignored) ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"/* (ignored) */\\n\\n//# sourceURL=webpack://Quill/./util.inspect_(ignored)?\");\n\n/***/ })\n\n/******/ })[\"default\"];\n});","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 Action = function () {\n function Action(formatter) {\n _classCallCheck(this, Action);\n\n this.formatter = formatter;\n }\n\n _createClass(Action, [{\n key: 'onCreate',\n value: function onCreate() {}\n }, {\n key: 'onDestroy',\n value: function onDestroy() {}\n }, {\n key: 'onUpdate',\n value: function onUpdate() {}\n }]);\n\n return Action;\n}();\n\nexports.default = Action;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _Action = require('../actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _AlignAction = require('../actions/align/AlignAction');\n\nvar _AlignAction2 = _interopRequireDefault(_AlignAction);\n\nvar _ResizeAction = require('../actions/ResizeAction');\n\nvar _ResizeAction2 = _interopRequireDefault(_ResizeAction);\n\nvar _DeleteAction = require('../actions/DeleteAction');\n\nvar _DeleteAction2 = _interopRequireDefault(_DeleteAction);\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 BlotSpec = function () {\n function BlotSpec(formatter) {\n _classCallCheck(this, BlotSpec);\n\n this.formatter = formatter;\n }\n\n _createClass(BlotSpec, [{\n key: 'init',\n value: function init() {}\n }, {\n key: 'getActions',\n value: function getActions() {\n return [_AlignAction2.default, _ResizeAction2.default, _DeleteAction2.default];\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return null;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.getTargetElement();\n }\n }, {\n key: 'setSelection',\n value: function setSelection() {\n this.formatter.quill.setSelection(null);\n }\n }, {\n key: 'onHide',\n value: function onHide() {}\n }]);\n\n return BlotSpec;\n}();\n\nexports.default = BlotSpec;","/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* istanbul ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* istanbul ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* istanbul ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* istanbul ignore next */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* istanbul ignore next */\n utf8TextDecoder = null\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* istanbul ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n","/* global localStorage */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* istanbul ignore next */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} value\n */\n setItem (key, value) {\n this.map.set(key, value)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n\n/* istanbul ignore next */\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\n\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n /* istanbul ignore next */\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n }\n} catch (e) { }\n\n/* istanbul ignore next */\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\nexport const varStorage = _localStorage\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* istanbul ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\nconst perf = typeof performance === 'undefined' ? null : performance\n\nconst isoCrypto = typeof crypto === 'undefined' ? null : crypto\n\n/**\n * @type {function(number):ArrayBuffer}\n */\nconst cryptoRandomBuffer = isoCrypto !== null\n ? len => {\n // browser\n const arr = new Uint8Array(len)\n isoCrypto.getRandomValues(arr)\n return arr.buffer\n }\n : len => {\n // polyfill\n const arr = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n arr[i] = Math.ceil((Math.random() * 0xFFFFFFFF) >>> 0)\n }\n return arr.buffer\n }\n\nexports.performance = perf\nexports.cryptoRandomBuffer = cryptoRandomBuffer\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\n\nvar _ImageSpec = require('./specs/ImageSpec');\n\nvar _ImageSpec2 = _interopRequireDefault(_ImageSpec);\n\nvar _IframeVideoSpec = require('./specs/IframeVideoSpec');\n\nvar _IframeVideoSpec2 = _interopRequireDefault(_IframeVideoSpec);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultOptions = {\n specs: [_ImageSpec2.default, _IframeVideoSpec2.default],\n overlay: {\n className: 'blot-formatter__overlay',\n style: {\n position: 'absolute',\n boxSizing: 'border-box',\n border: '1px dashed #444'\n }\n },\n align: {\n attribute: 'data-align',\n aligner: {\n applyStyle: true\n },\n icons: {\n left: '\\n \\n \\n \\n \\n \\n ',\n center: '\\n \\n \\n \\n \\n \\n ',\n right: '\\n \\n \\n \\n \\n \\n '\n },\n toolbar: {\n allowDeselect: true,\n mainClassName: 'blot-formatter__toolbar',\n mainStyle: {\n position: 'absolute',\n top: '-12px',\n right: '0',\n left: '0',\n height: '0',\n minWidth: '100px',\n font: '12px/1.0 Arial, Helvetica, sans-serif',\n textAlign: 'center',\n color: '#333',\n boxSizing: 'border-box',\n cursor: 'default',\n zIndex: '1'\n },\n buttonClassName: 'blot-formatter__toolbar-button',\n addButtonSelectStyle: true,\n buttonStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n },\n svgStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n }\n }\n },\n resize: {\n handleClassName: 'blot-formatter__resize-handle',\n handleStyle: {\n position: 'absolute',\n height: '12px',\n width: '12px',\n backgroundColor: 'white',\n border: '1px solid #777',\n boxSizing: 'border-box',\n opacity: '0.80'\n }\n }\n};\n\nexports.default = DefaultOptions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('../Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _DefaultAligner = require('./DefaultAligner');\n\nvar _DefaultAligner2 = _interopRequireDefault(_DefaultAligner);\n\nvar _Aligner = require('./Aligner');\n\nvar _Toolbar = require('./Toolbar');\n\nvar _DefaultToolbar = require('./DefaultToolbar');\n\nvar _DefaultToolbar2 = _interopRequireDefault(_DefaultToolbar);\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 AlignAction = function (_Action) {\n _inherits(AlignAction, _Action);\n\n function AlignAction(formatter) {\n _classCallCheck(this, AlignAction);\n\n var _this = _possibleConstructorReturn(this, (AlignAction.__proto__ || Object.getPrototypeOf(AlignAction)).call(this, formatter));\n\n _this.aligner = new _DefaultAligner2.default(formatter.options.align);\n _this.toolbar = new _DefaultToolbar2.default();\n return _this;\n }\n\n _createClass(AlignAction, [{\n key: 'onCreate',\n value: function onCreate() {\n var toolbar = this.toolbar.create(this.formatter, this.aligner);\n this.formatter.overlay.appendChild(toolbar);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n var toolbar = this.toolbar.getElement();\n if (!toolbar) {\n return;\n }\n\n this.formatter.overlay.removeChild(toolbar);\n this.toolbar.destroy();\n }\n }]);\n\n return AlignAction;\n}(_Action3.default);\n\nexports.default = AlignAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Aligner = require('./Aligner');\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LEFT_ALIGN = 'left';\nvar CENTER_ALIGN = 'center';\nvar RIGHT_ALIGN = 'right';\n\nvar DefaultAligner = function () {\n function DefaultAligner(options) {\n var _this = this,\n _alignments;\n\n _classCallCheck(this, DefaultAligner);\n\n this.applyStyle = options.aligner.applyStyle;\n this.alignAttribute = options.attribute;\n this.alignments = (_alignments = {}, _defineProperty(_alignments, LEFT_ALIGN, {\n name: LEFT_ALIGN,\n icon: options.icons.left,\n apply: function apply(el) {\n _this.setAlignment(el, LEFT_ALIGN);\n _this.setStyle(el, 'inline', 'left', '0 1em 1em 0');\n }\n }), _defineProperty(_alignments, CENTER_ALIGN, {\n name: CENTER_ALIGN,\n icon: options.icons.center,\n apply: function apply(el) {\n _this.setAlignment(el, CENTER_ALIGN);\n _this.setStyle(el, 'block', null, 'auto');\n }\n }), _defineProperty(_alignments, RIGHT_ALIGN, {\n name: RIGHT_ALIGN,\n icon: options.icons.right,\n apply: function apply(el) {\n _this.setAlignment(el, RIGHT_ALIGN);\n _this.setStyle(el, 'inline', 'right', '0 0 1em 1em');\n }\n }), _alignments);\n }\n\n _createClass(DefaultAligner, [{\n key: 'getAlignments',\n value: function getAlignments() {\n var _this2 = this;\n\n return Object.keys(this.alignments).map(function (k) {\n return _this2.alignments[k];\n });\n }\n }, {\n key: 'clear',\n value: function clear(el) {\n el.removeAttribute(this.alignAttribute);\n this.setStyle(el, null, null, null);\n }\n }, {\n key: 'isAligned',\n value: function isAligned(el, alignment) {\n return el.getAttribute(this.alignAttribute) === alignment.name;\n }\n }, {\n key: 'setAlignment',\n value: function setAlignment(el, value) {\n el.setAttribute(this.alignAttribute, value);\n }\n }, {\n key: 'setStyle',\n value: function setStyle(el, display, float, margin) {\n if (this.applyStyle) {\n el.style.setProperty('display', display);\n el.style.setProperty('float', float);\n el.style.setProperty('margin', margin);\n }\n }\n }]);\n\n return DefaultAligner;\n}();\n\nexports.default = DefaultAligner;","'use strict';\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Toolbar = require('./Toolbar');\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 DefaultToolbar = function () {\n function DefaultToolbar() {\n _classCallCheck(this, DefaultToolbar);\n\n this.toolbar = null;\n this.buttons = [];\n }\n\n _createClass(DefaultToolbar, [{\n key: 'create',\n value: function create(formatter, aligner) {\n var toolbar = document.createElement('div');\n toolbar.classList.add(formatter.options.align.toolbar.mainClassName);\n this.addToolbarStyle(formatter, toolbar);\n this.addButtons(formatter, toolbar, aligner);\n\n this.toolbar = toolbar;\n return this.toolbar;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.toolbar = null;\n this.buttons = [];\n }\n }, {\n key: 'getElement',\n value: function getElement() {\n return this.toolbar;\n }\n }, {\n key: 'addToolbarStyle',\n value: function addToolbarStyle(formatter, toolbar) {\n if (formatter.options.align.toolbar.mainStyle) {\n Object.assign(toolbar.style, formatter.options.align.toolbar.mainStyle);\n }\n }\n }, {\n key: 'addButtonStyle',\n value: function addButtonStyle(button, index, formatter) {\n if (formatter.options.align.toolbar.buttonStyle) {\n Object.assign(button.style, formatter.options.align.toolbar.buttonStyle);\n if (index > 0) {\n button.style.borderLeftWidth = '0'; // eslint-disable-line no-param-reassign\n }\n }\n\n if (formatter.options.align.toolbar.svgStyle) {\n Object.assign(button.children[0].style, formatter.options.align.toolbar.svgStyle);\n }\n }\n }, {\n key: 'addButtons',\n value: function addButtons(formatter, toolbar, aligner) {\n var _this = this;\n\n aligner.getAlignments().forEach(function (alignment, i) {\n var button = document.createElement('span');\n button.classList.add(formatter.options.align.toolbar.buttonClassName);\n button.innerHTML = alignment.icon;\n button.addEventListener('click', function () {\n _this.onButtonClick(button, formatter, alignment, aligner);\n });\n _this.preselectButton(button, alignment, formatter, aligner);\n _this.addButtonStyle(button, i, formatter);\n _this.buttons.push(button);\n toolbar.appendChild(button);\n });\n }\n }, {\n key: 'preselectButton',\n value: function preselectButton(button, alignment, formatter, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n if (aligner.isAligned(target, alignment)) {\n this.selectButton(formatter, button);\n }\n }\n }, {\n key: 'onButtonClick',\n value: function onButtonClick(button, formatter, alignment, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n this.clickButton(button, target, formatter, alignment, aligner);\n }\n }, {\n key: 'clickButton',\n value: function clickButton(button, alignTarget, formatter, alignment, aligner) {\n var _this2 = this;\n\n this.buttons.forEach(function (b) {\n _this2.deselectButton(formatter, b);\n });\n if (aligner.isAligned(alignTarget, alignment)) {\n if (formatter.options.align.toolbar.allowDeselect) {\n aligner.clear(alignTarget);\n } else {\n this.selectButton(formatter, button);\n }\n } else {\n this.selectButton(formatter, button);\n alignment.apply(alignTarget);\n }\n\n formatter.update();\n }\n }, {\n key: 'selectButton',\n value: function selectButton(formatter, button) {\n button.classList.add('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.setProperty('filter', 'invert(20%)');\n }\n }\n }, {\n key: 'deselectButton',\n value: function deselectButton(formatter, button) {\n button.classList.remove('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.removeProperty('filter');\n }\n }\n }]);\n\n return DefaultToolbar;\n}();\n\nexports.default = DefaultToolbar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ResizeAction = function (_Action) {\n _inherits(ResizeAction, _Action);\n\n function ResizeAction(formatter) {\n _classCallCheck(this, ResizeAction);\n\n var _this = _possibleConstructorReturn(this, (ResizeAction.__proto__ || Object.getPrototypeOf(ResizeAction)).call(this, formatter));\n\n _this.onMouseDown = function (event) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n _this.dragHandle = event.target;\n _this.setCursor(_this.dragHandle.style.cursor);\n\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var rect = target.getBoundingClientRect();\n\n _this.dragStartX = event.clientX;\n _this.preDragWidth = rect.width;\n _this.targetRatio = rect.height / rect.width;\n\n document.addEventListener('mousemove', _this.onDrag);\n document.addEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.onDrag = function (event) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var deltaX = event.clientX - _this.dragStartX;\n var newWidth = 0;\n\n if (_this.dragHandle === _this.topLeftHandle || _this.dragHandle === _this.bottomLeftHandle) {\n newWidth = Math.round(_this.preDragWidth - deltaX);\n } else {\n newWidth = Math.round(_this.preDragWidth + deltaX);\n }\n\n var newHeight = _this.targetRatio * newWidth;\n\n target.setAttribute('width', '' + newWidth);\n target.setAttribute('height', '' + newHeight);\n\n _this.formatter.update();\n };\n\n _this.onMouseUp = function () {\n _this.setCursor('');\n document.removeEventListener('mousemove', _this.onDrag);\n document.removeEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.topLeftHandle = _this.createHandle('top-left', 'nwse-resize');\n _this.topRightHandle = _this.createHandle('top-right', 'nesw-resize');\n _this.bottomRightHandle = _this.createHandle('bottom-right', 'nwse-resize');\n _this.bottomLeftHandle = _this.createHandle('bottom-left', 'nesw-resize');\n _this.dragHandle = null;\n _this.dragStartX = 0;\n _this.preDragWidth = 0;\n _this.targetRatio = 0;\n return _this;\n }\n\n _createClass(ResizeAction, [{\n key: 'onCreate',\n value: function onCreate() {\n this.formatter.overlay.appendChild(this.topLeftHandle);\n this.formatter.overlay.appendChild(this.topRightHandle);\n this.formatter.overlay.appendChild(this.bottomRightHandle);\n this.formatter.overlay.appendChild(this.bottomLeftHandle);\n\n this.repositionHandles(this.formatter.options.resize.handleStyle);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n this.setCursor('');\n this.formatter.overlay.removeChild(this.topLeftHandle);\n this.formatter.overlay.removeChild(this.topRightHandle);\n this.formatter.overlay.removeChild(this.bottomRightHandle);\n this.formatter.overlay.removeChild(this.bottomLeftHandle);\n }\n }, {\n key: 'createHandle',\n value: function createHandle(position, cursor) {\n var box = document.createElement('div');\n box.classList.add(this.formatter.options.resize.handleClassName);\n box.setAttribute('data-position', position);\n box.style.cursor = cursor;\n\n if (this.formatter.options.resize.handleStyle) {\n Object.assign(box.style, this.formatter.options.resize.handleStyle);\n }\n\n box.addEventListener('mousedown', this.onMouseDown);\n\n return box;\n }\n }, {\n key: 'repositionHandles',\n value: function repositionHandles(handleStyle) {\n var handleXOffset = '0px';\n var handleYOffset = '0px';\n if (handleStyle) {\n if (handleStyle.width) {\n handleXOffset = -parseFloat(handleStyle.width) / 2 + 'px';\n }\n if (handleStyle.height) {\n handleYOffset = -parseFloat(handleStyle.height) / 2 + 'px';\n }\n }\n\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset });\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset });\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset });\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset });\n }\n }, {\n key: 'setCursor',\n value: function setCursor(value) {\n if (document.body) {\n document.body.style.cursor = value;\n }\n\n if (this.formatter.currentSpec) {\n var target = this.formatter.currentSpec.getOverlayElement();\n if (target) {\n target.style.cursor = value;\n }\n }\n }\n }]);\n\n return ResizeAction;\n}(_Action3.default);\n\nexports.default = ResizeAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _quill = require('quill');\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\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 DeleteAction = function (_Action) {\n _inherits(DeleteAction, _Action);\n\n function DeleteAction() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DeleteAction);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DeleteAction.__proto__ || Object.getPrototypeOf(DeleteAction)).call.apply(_ref, [this].concat(args))), _this), _this.onKeyUp = function (e) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n // delete or backspace\n if (e.keyCode === 46 || e.keyCode === 8) {\n var blot = _quill2.default.find(_this.formatter.currentSpec.getTargetElement());\n if (blot) {\n blot.deleteAt(0);\n }\n _this.formatter.hide();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DeleteAction, [{\n key: 'onCreate',\n value: function onCreate() {\n document.addEventListener('keyup', this.onKeyUp, true);\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n document.removeEventListener('keyup', this.onKeyUp);\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp);\n }\n }]);\n\n return DeleteAction;\n}(_Action3.default);\n\nexports.default = DeleteAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ImageSpec = function (_BlotSpec) {\n _inherits(ImageSpec, _BlotSpec);\n\n function ImageSpec(formatter) {\n _classCallCheck(this, ImageSpec);\n\n var _this = _possibleConstructorReturn(this, (ImageSpec.__proto__ || Object.getPrototypeOf(ImageSpec)).call(this, formatter));\n\n _this.onClick = function (event) {\n var el = event.target;\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return;\n }\n\n _this.img = el;\n _this.formatter.show(_this);\n };\n\n _this.img = null;\n return _this;\n }\n\n _createClass(ImageSpec, [{\n key: 'init',\n value: function init() {\n this.formatter.quill.root.addEventListener('click', this.onClick);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.img;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.img = null;\n }\n }]);\n\n return ImageSpec;\n}(_BlotSpec3.default);\n\nexports.default = ImageSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _UnclickableBlotSpec2 = require('./UnclickableBlotSpec');\n\nvar _UnclickableBlotSpec3 = _interopRequireDefault(_UnclickableBlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 IframeVideoSpec = function (_UnclickableBlotSpec) {\n _inherits(IframeVideoSpec, _UnclickableBlotSpec);\n\n function IframeVideoSpec(formatter) {\n _classCallCheck(this, IframeVideoSpec);\n\n return _possibleConstructorReturn(this, (IframeVideoSpec.__proto__ || Object.getPrototypeOf(IframeVideoSpec)).call(this, formatter, 'iframe.ql-video'));\n }\n\n return IframeVideoSpec;\n}(_UnclickableBlotSpec3.default);\n\nexports.default = IframeVideoSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 MOUSE_ENTER_ATTRIBUTE = 'data-blot-formatter-unclickable-bound';\nvar PROXY_IMAGE_CLASS = 'blot-formatter__proxy-image';\n\nvar UnclickableBlotSpec = function (_BlotSpec) {\n _inherits(UnclickableBlotSpec, _BlotSpec);\n\n function UnclickableBlotSpec(formatter, selector) {\n _classCallCheck(this, UnclickableBlotSpec);\n\n var _this = _possibleConstructorReturn(this, (UnclickableBlotSpec.__proto__ || Object.getPrototypeOf(UnclickableBlotSpec)).call(this, formatter));\n\n _this.onTextChange = function () {\n Array.from(document.querySelectorAll(_this.selector + ':not([' + MOUSE_ENTER_ATTRIBUTE + '])')).forEach(function (unclickable) {\n unclickable.setAttribute(MOUSE_ENTER_ATTRIBUTE, 'true');\n unclickable.addEventListener('mouseenter', _this.onMouseEnter);\n });\n };\n\n _this.onMouseEnter = function (event) {\n var unclickable = event.target;\n if (!(unclickable instanceof HTMLElement)) {\n return;\n }\n\n _this.nextUnclickable = unclickable;\n _this.repositionProxyImage(_this.nextUnclickable);\n };\n\n _this.onProxyImageClick = function () {\n _this.unclickable = _this.nextUnclickable;\n _this.nextUnclickable = null;\n _this.formatter.show(_this);\n _this.hideProxyImage();\n };\n\n _this.selector = selector;\n _this.unclickable = null;\n _this.nextUnclickable = null;\n return _this;\n }\n\n _createClass(UnclickableBlotSpec, [{\n key: 'init',\n value: function init() {\n if (document.body) {\n /*\n it's important that this is attached to the body instead of the root quill element.\n this prevents the click event from overlapping with ImageSpec\n */\n document.body.appendChild(this.createProxyImage());\n }\n\n this.hideProxyImage();\n this.proxyImage.addEventListener('click', this.onProxyImageClick);\n this.formatter.quill.on('text-change', this.onTextChange);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.unclickable;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.unclickable;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.hideProxyImage();\n this.nextUnclickable = null;\n this.unclickable = null;\n }\n }, {\n key: 'createProxyImage',\n value: function createProxyImage() {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n context.globalAlpha = 0;\n context.fillRect(0, 0, 1, 1);\n\n this.proxyImage = document.createElement('img');\n this.proxyImage.src = canvas.toDataURL('image/png');\n this.proxyImage.classList.add(PROXY_IMAGE_CLASS);\n\n Object.assign(this.proxyImage.style, {\n position: 'absolute',\n margin: '0'\n });\n\n return this.proxyImage;\n }\n }, {\n key: 'hideProxyImage',\n value: function hideProxyImage() {\n Object.assign(this.proxyImage.style, {\n display: 'none'\n });\n }\n }, {\n key: 'repositionProxyImage',\n value: function repositionProxyImage(unclickable) {\n var rect = unclickable.getBoundingClientRect();\n\n Object.assign(this.proxyImage.style, {\n display: 'block',\n left: rect.left + window.pageXOffset + 'px',\n top: rect.top + window.pageYOffset + 'px',\n width: rect.width + 'px',\n height: rect.height + 'px'\n });\n }\n }]);\n\n return UnclickableBlotSpec;\n}(_BlotSpec3.default);\n\nexports.default = UnclickableBlotSpec;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.QuillCursors=e():t.QuillCursors=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(6),i=function(){function t(t,e,n){this.id=t,this.name=e,this.color=n}return t.prototype.build=function(e){var n=document.createElement(t.CONTAINER_ELEMENT_TAG);n.classList.add(t.CURSOR_CLASS),n.id=\"ql-cursor-\"+this.id,n.innerHTML=e.template;var r=n.getElementsByClassName(t.SELECTION_CLASS)[0],i=n.getElementsByClassName(t.CARET_CONTAINER_CLASS)[0],o=i.getElementsByClassName(t.CARET_CLASS)[0],s=n.getElementsByClassName(t.FLAG_CLASS)[0];return s.style.backgroundColor=this.color,o.style.backgroundColor=this.color,n.getElementsByClassName(t.NAME_CLASS)[0].textContent=this.name,this._hideDelay=e.hideDelayMs+\"ms\",this._hideSpeedMs=e.hideSpeedMs,s.style.transitionDelay=this._hideDelay,s.style.transitionDuration=this._hideSpeedMs+\"ms\",this._el=n,this._selectionEl=r,this._caretEl=i,this._flagEl=s,this._el},t.prototype.show=function(){this._el.classList.remove(t.HIDDEN_CLASS)},t.prototype.hide=function(){this._el.classList.add(t.HIDDEN_CLASS)},t.prototype.remove=function(){this._el.parentNode.removeChild(this._el)},t.prototype.toggleFlag=function(e){var n=this;this._flagEl.classList.toggle(t.SHOW_FLAG_CLASS,e)||(this._flagEl.classList.add(t.NO_DELAY_CLASS),setTimeout((function(){return n._flagEl.classList.remove(t.NO_DELAY_CLASS)}),this._hideSpeedMs))},t.prototype.updateCaret=function(t){this._caretEl.style.top=t.top+\"px\",this._caretEl.style.left=t.left+\"px\",this._caretEl.style.height=t.height+\"px\",this._flagEl.style.top=t.top+\"px\",this._flagEl.style.left=t.left+\"px\"},t.prototype.updateSelection=function(t,e){var n=this;this._clearSelection(),t=t||[],t=Array.from(t),t=this._sanitize(t),(t=this._sortByDomPosition(t)).forEach((function(t){return n._addSelection(t,e)}))},t.prototype._clearSelection=function(){this._selectionEl.innerHTML=\"\"},t.prototype._addSelection=function(t,e){var n=this._selectionBlock(t,e);this._selectionEl.appendChild(n)},t.prototype._selectionBlock=function(e,n){var i=document.createElement(t.SELECTION_ELEMENT_TAG);return i.classList.add(t.SELECTION_BLOCK_CLASS),i.style.top=e.top-n.top+\"px\",i.style.left=e.left-n.left+\"px\",i.style.width=e.width+\"px\",i.style.height=e.height+\"px\",i.style.backgroundColor=r(this.color).setAlpha(.3).toString(),i},t.prototype._sortByDomPosition=function(t){return t.sort((function(t,e){return t.top===e.top?t.left-e.left:t.top-e.top}))},t.prototype._sanitize=function(t){var e=this,n=new Set;return t.filter((function(t){if(!t.width||!t.height)return!1;var r=e._serialize(t);return!n.has(r)&&(n.add(r),!0)}))},t.prototype._serialize=function(t){return[\"top:\"+t.top,\"right:\"+t.right,\"bottom:\"+t.bottom,\"left:\"+t.left].join(\";\")},t.CONTAINER_ELEMENT_TAG=\"SPAN\",t.SELECTION_ELEMENT_TAG=\"SPAN\",t.CURSOR_CLASS=\"ql-cursor\",t.SELECTION_CLASS=\"ql-cursor-selections\",t.SELECTION_BLOCK_CLASS=\"ql-cursor-selection-block\",t.CARET_CLASS=\"ql-cursor-caret\",t.CARET_CONTAINER_CLASS=\"ql-cursor-caret-container\",t.FLAG_CLASS=\"ql-cursor-flag\",t.SHOW_FLAG_CLASS=\"show-flag\",t.FLAG_FLAP_CLASS=\"ql-cursor-flag-flap\",t.NAME_CLASS=\"ql-cursor-name\",t.HIDDEN_CLASS=\"hidden\",t.NO_DELAY_CLASS=\"no-delay\",t}();e.default=i},function(t,e,n){var r=Array.prototype.slice,i=n(12),o=n(13),s=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?n.strict?t===e:t==e:function(t,e,n){var l,c;if(a(t)||a(e))return!1;if(t.prototype!==e.prototype)return!1;if(o(t))return!!o(e)&&(t=r.call(t),e=r.call(e),s(t,e,n));if(u(t)){if(!u(e))return!1;if(t.length!==e.length)return!1;for(l=0;l=0;l--)if(f[l]!=h[l])return!1;for(l=f.length-1;l>=0;l--)if(c=f[l],!s(t[c],e[c],n))return!1;return typeof t==typeof e}(t,e,n))};function a(t){return null==t}function u(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}},function(t,e,n){\"use strict\";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},u=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,n=r.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&r.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!n&&!o)return!1;for(e in t);return void 0===e||r.call(t,e)},l=function(t,e){o&&\"__proto__\"===e.name?o(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},c=function(t,e){if(\"__proto__\"===e){if(!r.call(t,e))return;if(s)return s(t,e).value}return t[e]};t.exports=function t(){var e,n,r,i,o,s,f=arguments[0],h=1,p=arguments.length,d=!1;for(\"boolean\"==typeof f&&(d=f,f=arguments[1]||{},h=2),(null==f||\"object\"!=typeof f&&\"function\"!=typeof f)&&(f={});h=0},t.prototype._handleTextChange=function(t){var e=this;window.setTimeout((function(){e._options.transformOnTextChange&&e._transformCursors(t),e._options.selectionChangeSource&&(e._emitSelection(),e.update())}))},t.prototype._emitSelection=function(){this._quill.emitter.emit(this._quill.constructor.events.SELECTION_CHANGE,this._quill.getSelection(),this._currentSelection,this._options.selectionChangeSource)},t.prototype._setDefaults=function(t){return(t=Object.assign({},t)).template=t.template||a.default,t.containerClass=t.containerClass||\"ql-cursors\",null!==t.selectionChangeSource&&(t.selectionChangeSource=t.selectionChangeSource||this._quill.constructor.sources.API),t.hideDelayMs=Number.isInteger(t.hideDelayMs)?t.hideDelayMs:3e3,t.hideSpeedMs=Number.isInteger(t.hideSpeedMs)?t.hideSpeedMs:400,t.transformOnTextChange=!!t.transformOnTextChange,t},t.prototype._lineRanges=function(t,e,n){var r=this._quill.getLines(t.range);return r.reduce((function(t,i,o){if(!i.children){var s=document.createRange();return s.selectNode(i.domNode),t.concat(s)}var a=0===o?e:i.path(0).pop(),u=a[0],l=a[1],c=o===r.length-1?n:i.path(i.length()-1).pop(),f=c[0],h=c[1],p=document.createRange();return p.setStart(u.domNode,l),p.setEnd(f.domNode,h),t.concat(p)}),[])},t.prototype._transformCursors=function(t){var e=this;t=new l(t),this.cursors().filter((function(t){return t.range})).forEach((function(n){n.range.index=t.transformPosition(n.range.index),e._updateCursor(n)}))},t}();e.default=c},function(t,e,n){var r;!function(i){var o=/^\\s+/,s=/\\s+$/,a=0,u=i.round,l=i.min,c=i.max,f=i.random;function h(t,e){if(e=e||{},(t=t||\"\")instanceof h)return t;if(!(this instanceof h))return new h(t,e);var n=function(t){var e={r:0,g:0,b:0},n=1,r=null,a=null,u=null,f=!1,h=!1;\"string\"==typeof t&&(t=function(t){t=t.replace(o,\"\").replace(s,\"\").toLowerCase();var e,n=!1;if(M[t])t=M[t],n=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=G.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=G.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=G.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=G.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=G.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=G.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=G.hex8.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),a:F(e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex6.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),format:n?\"name\":\"hex\"};if(e=G.hex4.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),a:F(e[4]+\"\"+e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex3.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),format:n?\"name\":\"hex\"};return!1}(t));\"object\"==typeof t&&(U(t.r)&&U(t.g)&&U(t.b)?(p=t.r,d=t.g,g=t.b,e={r:255*T(p,255),g:255*T(d,255),b:255*T(g,255)},f=!0,h=\"%\"===String(t.r).substr(-1)?\"prgb\":\"rgb\"):U(t.h)&&U(t.s)&&U(t.v)?(r=H(t.s),a=H(t.v),e=function(t,e,n){t=6*T(t,360),e=T(e,100),n=T(n,100);var r=i.floor(t),o=t-r,s=n*(1-e),a=n*(1-o*e),u=n*(1-(1-o)*e),l=r%6;return{r:255*[n,a,s,s,u,n][l],g:255*[u,n,n,a,s,s][l],b:255*[s,s,u,n,n,a][l]}}(t.h,r,a),f=!0,h=\"hsv\"):U(t.h)&&U(t.s)&&U(t.l)&&(r=H(t.s),u=H(t.l),e=function(t,e,n){var r,i,o;function s(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=T(t,360),e=T(e,100),n=T(n,100),0===e)r=i=o=n;else{var a=n<.5?n*(1+e):n+e-n*e,u=2*n-a;r=s(u,a,t+1/3),i=s(u,a,t),o=s(u,a,t-1/3)}return{r:255*r,g:255*i,b:255*o}}(t.h,r,u),f=!0,h=\"hsl\"),t.hasOwnProperty(\"a\")&&(n=t.a));var p,d,g;return n=j(n),{ok:f,format:t.format||h,r:l(255,c(e.r,0)),g:l(255,c(e.g,0)),b:l(255,c(e.b,0)),a:n}}(t);this._originalInput=t,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=u(100*this._a)/100,this._format=e.format||n.format,this._gradientType=e.gradientType,this._r<1&&(this._r=u(this._r)),this._g<1&&(this._g=u(this._g)),this._b<1&&(this._b=u(this._b)),this._ok=n.ok,this._tc_id=a++}function p(t,e,n){t=T(t,255),e=T(e,255),n=T(n,255);var r,i,o=c(t,e,n),s=l(t,e,n),a=(o+s)/2;if(o==s)r=i=0;else{var u=o-s;switch(i=a>.5?u/(2-o-s):u/(o+s),o){case t:r=(e-n)/u+(e>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(h(r));return o}function L(t,e){e=e||6;for(var n=h(t).toHsv(),r=n.h,i=n.s,o=n.v,s=[],a=1/e;e--;)s.push(h({h:r,s:i,v:o})),o=(o+a)%1;return s}h.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,n,r=this.toRgb();return t=r.r/255,e=r.g/255,n=r.b/255,.2126*(t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:i.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=j(t),this._roundA=u(100*this._a)/100,this},toHsv:function(){var t=d(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=d(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsva(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=p(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=p(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsla(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHex:function(t){return g(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,n,r,i){var o=[D(u(t).toString(16)),D(u(e).toString(16)),D(u(n).toString(16)),D(I(r))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:u(this._r),g:u(this._g),b:u(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\")\":\"rgba(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:u(100*T(this._r,255))+\"%\",g:u(100*T(this._g,255))+\"%\",b:u(100*T(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%)\":\"rgba(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(R[g(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+b(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=h(t);n=\"#\"+b(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+e+\",endColorstr=\"+n+\")\"},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&this._a>=0;return e||!r||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(n=this.toRgbString()),\"prgb\"===t&&(n=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(n=this.toHexString()),\"hex3\"===t&&(n=this.toHexString(!0)),\"hex4\"===t&&(n=this.toHex8String(!0)),\"hex8\"===t&&(n=this.toHex8String()),\"name\"===t&&(n=this.toName()),\"hsl\"===t&&(n=this.toHslString()),\"hsv\"===t&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return h(this.toString())},_applyModification:function(t,e){var n=t.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(m,arguments)},brighten:function(){return this._applyModification(A,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(v,arguments)},saturate:function(){return this._applyModification(_,arguments)},greyscale:function(){return this._applyModification(y,arguments)},spin:function(){return this._applyModification(C,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(S,arguments)},monochromatic:function(){return this._applyCombination(L,arguments)},splitcomplement:function(){return this._applyCombination(O,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(E,arguments)}},h.fromRatio=function(t,e){if(\"object\"==typeof t){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=\"a\"===r?t[r]:H(t[r]));t=n}return h(t,e)},h.equals=function(t,e){return!(!t||!e)&&h(t).toRgbString()==h(e).toRgbString()},h.random=function(){return h.fromRatio({r:f(),g:f(),b:f()})},h.mix=function(t,e,n){n=0===n?0:n||50;var r=h(t).toRgb(),i=h(e).toRgb(),o=n/100;return h({r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a})},h.readability=function(t,e){var n=h(t),r=h(e);return(i.max(n.getLuminance(),r.getLuminance())+.05)/(i.min(n.getLuminance(),r.getLuminance())+.05)},h.isReadable=function(t,e,n){var r,i,o=h.readability(t,e);switch(i=!1,(r=function(t){var e,n;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),n=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==n&&\"large\"!==n&&(n=\"small\");return{level:e,size:n}}(n)).level+r.size){case\"AAsmall\":case\"AAAlarge\":i=o>=4.5;break;case\"AAlarge\":i=o>=3;break;case\"AAAsmall\":i=o>=7}return i},h.mostReadable=function(t,e,n){var r,i,o,s,a=null,u=0;i=(n=n||{}).includeFallbackColors,o=n.level,s=n.size;for(var l=0;lu&&(u=r,a=h(e[l]));return h.isReadable(t,a,{level:o,size:s})||!i?a:(n.includeFallbackColors=!1,h.mostReadable(t,[\"#fff\",\"#000\"],n))};var M=h.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},R=h.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(M);function j(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function T(t,e){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(t)&&(t=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(t);return t=l(e,c(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),i.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function N(t){return l(1,c(0,t))}function q(t){return parseInt(t,16)}function D(t){return 1==t.length?\"0\"+t:\"\"+t}function H(t){return t<=1&&(t=100*t+\"%\"),t}function I(t){return i.round(255*parseFloat(t)).toString(16)}function F(t){return q(t)/255}var P,B,z,G=(B=\"[\\\\s|\\\\(]+(\"+(P=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",z=\"[\\\\s|\\\\(]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(P),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+z),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+z),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!G.CSS_UNIT.exec(t)}t.exports?t.exports=h:void 0===(r=function(){return h}.call(e,n,e,t))||(t.exports=r)}(Math)},function(t,e,n){var r,i;\n/*!\n * RangeFix v0.2.8\n * https://github.com/edg2s/rangefix\n *\n * Copyright 2014-17 Ed Sanders.\n * Released under the MIT license\n */void 0===(i=\"function\"==typeof(r=function(){var t,e={};function n(t){var e;return t?screen.deviceXDPI===screen.logicalXDPI?t:\"length\"in t?Array.prototype.map.call(t,n):(e=screen.deviceXDPI/screen.logicalXDPI,{top:t.top/e,bottom:t.bottom/e,left:t.left/e,right:t.right/e,width:t.width/e,height:t.height/e}):t}function r(t,e){var n,r=0;if(1024>=e.length)return Array.prototype.push.apply(t,e);for(;r1,t.getClientRects||(a.setEnd(o,1),t.getClientRects=t.getBoundingClientRect=2===a.getClientRects().length),t.getBoundingClientRect||(a.setEnd(a.startContainer,a.startOffset),e=a.getBoundingClientRect(),t.getBoundingClientRect=0===e.top&&0===e.left),document.body.removeChild(n),u=window.ActiveXObject&&new Function(\"/*@cc_on return @_jscript_version; @*/\")(),t.ieZoom=!!u&&u<=10),t},e.getClientRects=function(t){var e,i,o,s,a,u=this.isBroken();if(u.ieZoom)return n(t.getClientRects());if(!u.getClientRects)return t.getClientRects();for(e=[],o=[],i=t.endContainer,s=t.endOffset,a=document.createRange();i!==t.commonAncestorContainer;)a.setStart(i,0),a.setEnd(i,s),r(o,a.getClientRects()),s=Array.prototype.indexOf.call(i.parentNode.childNodes,i),i=i.parentNode;return(a=t.cloneRange()).setEnd(i,s),r(e,a.getClientRects()),r(e,o),e},e.getBoundingClientRect=function(t){var e,r,i,o,s,a,u=this.getClientRects(t);if(0===u.length)return null;if(s=t.getBoundingClientRect(),(a=this.isBroken()).ieZoom)return n(s);if(!a.getBoundingClientRect)return s;if(0===s.width&&0===s.height)return u[0];for(e=0,r=u.length;e\\n \\n \\n \\n
    \\n \\n \\n
    \\n';e.default=o},function(t,e,n){\"use strict\";n.r(e),function(t){var n=function(){if(\"undefined\"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return(function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n0},t.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),a?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?\"\":e;s.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),l=function(t,e){for(var n=0,r=Object.keys(e);n0},t}(),A=\"undefined\"!=typeof WeakMap?new WeakMap:new n,x=function t(e){if(!(this instanceof t))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=u.getInstance(),r=new m(e,n,this);A.set(this,r)};[\"observe\",\"unobserve\",\"disconnect\"].forEach((function(t){x.prototype[t]=function(){var e;return(e=A.get(this))[t].apply(e,arguments)}}));var C=void 0!==i.ResizeObserver?i.ResizeObserver:x;e.default=C}.call(this,n(10))},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},i=r(n(1)),o=r(n(2)),s=r(n(14)),a=r(n(15)),u=r(n(3)),l=String.fromCharCode(0),c=function(){function t(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]}return t.prototype.insert=function(t,e){var n={};return\"string\"==typeof t&&0===t.length?this:(n.insert=t,null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n))},t.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},t.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},t.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=o.default(!0,{},t),\"object\"==typeof n){if(\"number\"==typeof t.delete&&\"number\"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if(\"number\"==typeof n.delete&&null!=t.insert&&(e-=1,\"object\"!=typeof(n=this.ops[e-1])))return this.ops.unshift(t),this;if(i.default(t.attributes,n.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},t.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},t.prototype.filter=function(t){return this.ops.filter(t)},t.prototype.forEach=function(t){this.ops.forEach(t)},t.prototype.map=function(t){return this.ops.map(t)},t.prototype.partition=function(t){var e=[],n=[];return this.forEach((function(r){(t(r)?e:n).push(r)})),[e,n]},t.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},t.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+u.default.length(e):e.delete?t-e.delete:t}),0)},t.prototype.length=function(){return this.reduce((function(t,e){return t+u.default.length(e)}),0)},t.prototype.slice=function(e,n){void 0===e&&(e=0),void 0===n&&(n=1/0);for(var r=[],i=u.default.iterator(this.ops),o=0;o0&&r.next(s.retain-l)}for(var c=new t(o);n.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())c.push(r.next());else if(\"delete\"===n.peekType())c.push(n.next());else{var f=Math.min(n.peekLength(),r.peekLength()),h=n.next(f),p=r.next(f);if(\"number\"==typeof p.retain){var d={};\"number\"==typeof h.retain?d.retain=f:d.insert=h.insert;var g=a.default.compose(h.attributes,p.attributes,\"number\"==typeof h.retain);if(g&&(d.attributes=g),c.push(d),!r.hasNext()&&i.default(c.ops[c.ops.length-1],d)){var b=new t(n.rest());return c.concat(b).chop()}}else\"number\"==typeof p.delete&&\"number\"==typeof h.retain&&c.push(p)}return c.chop()},t.prototype.concat=function(e){var n=new t(this.ops.slice());return e.ops.length>0&&(n.push(e.ops[0]),n.ops=n.ops.concat(e.ops.slice(1))),n},t.prototype.diff=function(e,n){if(this.ops===e.ops)return new t;var r=[this,e].map((function(t){return t.map((function(n){if(null!=n.insert)return\"string\"==typeof n.insert?n.insert:l;throw new Error(\"diff() called \"+(t===e?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new t,c=s.default(r[0],r[1],n),f=u.default.iterator(this.ops),h=u.default.iterator(e.ops);return c.forEach((function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case s.default.INSERT:n=Math.min(h.peekLength(),e),o.push(h.next(n));break;case s.default.DELETE:n=Math.min(e,f.peekLength()),f.next(n),o.delete(n);break;case s.default.EQUAL:n=Math.min(f.peekLength(),h.peekLength(),e);var r=f.next(n),u=h.next(n);i.default(r.insert,u.insert)?o.retain(n,a.default.diff(r.attributes,u.attributes)):o.push(u).delete(n)}e-=n}})),o.chop()},t.prototype.eachLine=function(e,n){void 0===n&&(n=\"\\n\");for(var r=u.default.iterator(this.ops),i=new t,o=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var s=r.peek(),a=u.default.length(s)-r.peekLength(),l=\"string\"==typeof s.insert?s.insert.indexOf(n,a)-a:-1;if(l<0)i.push(r.next());else if(l>0)i.push(r.next(l));else{if(!1===e(i,r.next(1).attributes||{},o))return;o+=1,i=new t}}i.length()>0&&e(i,{},o)},t.prototype.invert=function(e){var n=new t;return this.reduce((function(t,r){if(r.insert)n.delete(u.default.length(r));else{if(r.retain&&null==r.attributes)return n.retain(r.retain),t+r.retain;if(r.delete||r.retain&&r.attributes){var i=r.delete||r.retain;return e.slice(t,t+i).forEach((function(t){r.delete?n.push(t):r.retain&&r.attributes&&n.retain(u.default.length(t),a.default.invert(r.attributes,t.attributes))})),t+i}}return t}),0),n.chop()},t.prototype.transform=function(e,n){if(void 0===n&&(n=!1),n=!!n,\"number\"==typeof e)return this.transformPosition(e,n);for(var r=e,i=u.default.iterator(this.ops),o=u.default.iterator(r.ops),s=new t;i.hasNext()||o.hasNext();)if(\"insert\"!==i.peekType()||!n&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())s.push(o.next());else{var l=Math.min(i.peekLength(),o.peekLength()),c=i.next(l),f=o.next(l);if(c.delete)continue;f.delete?s.push(f):s.retain(l,a.default.transform(c.attributes,f.attributes,n))}else s.retain(u.default.length(i.next()));return s.chop()},t.prototype.transformPosition=function(t,e){void 0===e&&(e=!1),e=!!e;for(var n=u.default.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var i=n.peekLength(),o=n.peekType();n.next(),\"delete\"!==o?(\"insert\"===o&&(rs)){var p=e.slice(0,h);if((m=e.slice(h))===l){var d=Math.min(a,h),g=u.slice(0,d),b=p.slice(0,d);if(g===b){var v=u.slice(d),_=p.slice(d);return c(g,v,_,l)}}}if(null===f||f===a){var y=a,m=(p=e.slice(0,y),e.slice(y));if(p===u){var A=Math.min(o-y,s-y),x=l.slice(l.length-A),C=m.slice(m.length-A);if(x===C){v=l.slice(0,l.length-A),_=m.slice(0,m.length-A);return c(u,v,_,x)}}}}if(r.length>0&&i&&0===i.length){g=t.slice(0,r.index),x=t.slice(r.index+r.length),d=g.length,A=x.length;if(!(se.length?t:e,u=t.length>e.length?e:t,l=a.indexOf(u);if(-1!==l)return s=[[1,a.substring(0,l)],[0,u],[1,a.substring(l+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1===u.length)return[[-1,t],[1,e]];var c=function(t,e){var n=t.length>e.length?t:e,r=t.length>e.length?e:t;if(n.length<4||2*r.length=t.length?[r,s,a,u,f]:null}var a,u,l,c,f,h=s(n,r,Math.ceil(n.length/4)),p=s(n,r,Math.ceil(n.length/2));if(!h&&!p)return null;a=p?h&&h[4].length>p[4].length?h:p:h;t.length>e.length?(u=a[0],l=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],l=a[3]);var d=a[4];return[u,l,c,f,d]}(t,e);if(c){var f=c[0],h=c[1],p=c[2],d=c[3],g=c[4],b=n(f,p),v=n(h,d);return b.concat([[0,g]],v)}return function(t,e){for(var n=t.length,i=e.length,o=Math.ceil((n+i)/2),s=o,a=2*o,u=new Array(a),l=new Array(a),c=0;cn)d+=2;else if(m>i)p+=2;else if(h){if((C=s+f-_)>=0&&C=A)return r(t,e,w,m)}}}for(var x=-v+g;x<=v-b;x+=2){for(var C=s+x,S=(A=x===-v||x!==v&&l[C-1]n)b+=2;else if(S>i)g+=2;else if(!h){if((y=s+f-x)>=0&&y=(A=n-A))return r(t,e,w,m)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-h),e=e.substring(0,e.length-h));return p&&g.unshift([0,p]),d&&g.push([0,d]),function t(e,n){e.push([0,\"\"]);var r,s=0,a=0,c=0,f=\"\",h=\"\";for(;s=0&&l(e[p][1])){var d=e[p][1].slice(-1);if(e[p][1]=e[p][1].slice(0,-1),f=d+f,h=d+h,!e[p][1]){e.splice(p,1),s--;var g=p-1;e[g]&&1===e[g][0]&&(c++,h=e[g][1]+h,g--),e[g]&&-1===e[g][0]&&(a++,f=e[g][1]+f,g--),p=g}}if(u(e[s][1])){d=e[s][1].charAt(0);e[s][1]=e[s][1].slice(1),f+=d,h+=d}}if(s0||h.length>0){f.length>0&&h.length>0&&(0!==(r=i(h,f))&&(p>=0?e[p][1]+=h.substring(0,r):(e.splice(0,0,[0,h.substring(0,r)]),s++),h=h.substring(r),f=f.substring(r)),0!==(r=o(h,f))&&(e[s][1]=h.substring(h.length-r)+e[s][1],h=h.substring(0,h.length-r),f=f.substring(0,f.length-r)));var b=c+a;0===f.length&&0===h.length?(e.splice(s-b,b),s-=b):0===f.length?(e.splice(s-b,b,[1,h]),s=s-b+1):0===h.length?(e.splice(s-b,b,[-1,f]),s=s-b+1):(e.splice(s-b,b,[-1,f],[1,h]),s=s-b+2)}0!==s&&0===e[s-1][0]?(e[s-1][1]+=e[s][1],e.splice(s,1)):s++,c=0,a=0,f=\"\",h=\"\"}\"\"===e[e.length-1][1]&&e.pop();var v=!1;s=1;for(;s=55296&&t<=56319}function a(t){return t>=56320&&t<=57343}function u(t){return a(t.charCodeAt(0))}function l(t){return s(t.charCodeAt(t.length-1))}function c(t,e,n,r){return l(t)||u(r)?null:function(t){for(var e=[],n=0;n0&&e.push(t[n]);return e}([[0,t],[-1,e],[1,n],[0,r]])}function f(t,e,r){return n(t,e,r,!0)}f.INSERT=1,f.DELETE=-1,f.EQUAL=0,t.exports=f},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(n(1)),s=r(n(2));!function(t){t.compose=function(t,e,n){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var r=s.default(!0,{},e);for(var i in n||(r=Object.keys(r).reduce((function(t,e){return null!=r[e]&&(t[e]=r[e]),t}),{})),t)void 0!==t[i]&&void 0===e[i]&&(r[i]=t[i]);return Object.keys(r).length>0?r:void 0},t.diff=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce((function(n,r){return o.default(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n}),{});return Object.keys(n).length>0?n:void 0},t.invert=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),t=t||{};var n=Object.keys(e).reduce((function(n,r){return e[r]!==t[r]&&void 0!==t[r]&&(n[r]=e[r]),n}),{});return Object.keys(t).reduce((function(n,r){return t[r]!==e[r]&&void 0===e[r]&&(n[r]=null),n}),n)},t.transform=function(t,e,n){if(void 0===n&&(n=!1),\"object\"!=typeof t)return e;if(\"object\"==typeof e){if(!n)return e;var r=Object.keys(e).reduce((function(n,r){return void 0===t[r]&&(n[r]=e[r]),n}),{});return Object.keys(r).length>0?r:void 0}}}(i||(i={})),e.default=i},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(n(3)),o=function(){function t(t){this.ops=t,this.index=0,this.offset=0}return t.prototype.hasNext=function(){return this.peekLength()<1/0},t.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=i.default.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),\"number\"==typeof e.retain?o.retain=t:\"string\"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},t.prototype.peek=function(){return this.ops[this.index]},t.prototype.peekLength=function(){return this.ops[this.index]?i.default.length(this.ops[this.index])-this.offset:1/0},t.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},t.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=t,this.index=e,[n].concat(r)}return[]},t}();e.default=o},function(t,e,n){var r=n(18),i=n(19);\"string\"==typeof(i=i.__esModule?i.default:i)&&(i=[[t.i,i,\"\"]]);var o={insert:\"head\",singleton:!1},s=(r(t.i,i,o),i.locals?i.locals:{});t.exports=s},function(t,e,n){\"use strict\";var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s={};function a(t,e,n){for(var r=0;r2?arguments[2]:{},o=n(e);i&&(o=a.call(o,Object.getOwnPropertySymbols(e)));for(var s=0;s0&&(r.attributes=e),this.push(r))},p.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},p.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&\"object\"===o(e)&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},p.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=s(!0,{},t),\"object\"===o(r)){if(\"number\"==typeof t.delete&&\"number\"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if(\"number\"==typeof r.delete&&null!=t.insert&&(e-=1,\"object\"!==o(r=this.ops[e-1])))return this.ops.unshift(t),this;if(i(t.attributes,r.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},p.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},p.prototype.filter=function(t){return this.ops.filter(t)},p.prototype.forEach=function(t){this.ops.forEach(t)},p.prototype.map=function(t){return this.ops.map(t)},p.prototype.partition=function(t){var e=[],r=[];return this.forEach((function(o){(t(o)?e:r).push(o)})),[e,r]},p.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},p.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+a.length(e):e.delete?t-e.delete:t}),0)},p.prototype.length=function(){return this.reduce((function(t,e){return t+a.length(e)}),0)},p.prototype.slice=function(t,e){t=t||0,\"number\"!=typeof e&&(e=1/0);for(var r=[],o=a.iterator(this.ops),n=0;n0&&r.next(n.retain-s)}for(var u=new p(o);e.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())u.push(r.next());else if(\"delete\"===e.peekType())u.push(e.next());else{var c=Math.min(e.peekLength(),r.peekLength()),f=e.next(c),l=r.next(c);if(\"number\"==typeof l.retain){var y={};\"number\"==typeof f.retain?y.retain=c:y.insert=f.insert;var h=a.attributes.compose(f.attributes,l.attributes,\"number\"==typeof f.retain);if(h&&(y.attributes=h),u.push(y),!r.hasNext()&&i(u.ops[u.ops.length-1],y)){var b=new p(e.rest());return u.concat(b).chop()}}else\"number\"==typeof l.delete&&\"number\"==typeof f.retain&&u.push(l)}return u.chop()},p.prototype.concat=function(t){var e=new p(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},p.prototype.diff=function(t,e){if(this.ops===t.ops)return new p;var r=[this,t].map((function(e){return e.map((function(r){if(null!=r.insert)return\"string\"==typeof r.insert?r.insert:u;throw new Error(\"diff() called \"+(e===t?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new p,s=n(r[0],r[1],e),c=a.iterator(this.ops),f=a.iterator(t.ops);return s.forEach((function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),o.push(f.next(r));break;case n.DELETE:r=Math.min(e,c.peekLength()),c.next(r),o.delete(r);break;case n.EQUAL:r=Math.min(c.peekLength(),f.peekLength(),e);var s=c.next(r),u=f.next(r);i(s.insert,u.insert)?o.retain(r,a.attributes.diff(s.attributes,u.attributes)):o.push(u).delete(r)}e-=r}})),o.chop()},p.prototype.eachLine=function(t,e){e=e||\"\\n\";for(var r=a.iterator(this.ops),o=new p,n=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var i=r.peek(),s=a.length(i)-r.peekLength(),u=\"string\"==typeof i.insert?i.insert.indexOf(e,s)-s:-1;if(u<0)o.push(r.next());else if(u>0)o.push(r.next(u));else{if(!1===t(o,r.next(1).attributes||{},n))return;n+=1,o=new p}}o.length()>0&&t(o,{},n)},p.prototype.transform=function(t,e){if(e=!!e,\"number\"==typeof t)return this.transformPosition(t,e);for(var r=a.iterator(this.ops),o=a.iterator(t.ops),n=new p;r.hasNext()||o.hasNext();)if(\"insert\"!==r.peekType()||!e&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())n.push(o.next());else{var i=Math.min(r.peekLength(),o.peekLength()),s=r.next(i),u=o.next(i);if(s.delete)continue;u.delete?n.push(u):n.retain(i,a.attributes.transform(s.attributes,u.attributes,e))}else n.retain(a.length(r.next()));return n.chop()},p.prototype.transformPosition=function(t,e){e=!!e;for(var r=a.iterator(this.ops),o=0;r.hasNext()&&o<=t;){var n=r.peekLength(),i=r.peekType();r.next(),\"delete\"!==i?(\"insert\"===i&&(o=0;s--)if(v[s]!=S[s])return!1;for(s=v.length-1;s>=0;s--)if(h=v[s],!f(t[h],e[h],r))return!1;return!0}(t,e,h))}function l(t){return null==t}function y(t){return!(!t||\"object\"!==o(t)||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}t.exports=f},function(t,e,r){\"use strict\";var o=Array.prototype.slice,n=r(5),i=Object.keys,s=i?function(t){return i(t)}:r(17),a=Object.keys;s.shim=function(){Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(o.call(t)):a(t)}):Object.keys=s;return Object.keys||s},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.toString;t.exports=function(t){var e=n.call(t),r=\"[object Arguments]\"===e;return r||(r=\"[object Array]\"!==e&&null!==t&&\"object\"===o(t)&&\"number\"==typeof t.length&&t.length>=0&&\"[object Function]\"===n.call(t.callee)),r}},function(t,e,r){\"use strict\";var o=r(1),n=r(21)(\"%Function%\"),i=n.apply,s=n.call;t.exports=function(){return o.apply(s,arguments)},t.exports.apply=function(){return o.apply(i,arguments)}},function(t,e){function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var o;o=function(){return this}();try{o=o||new Function(\"return this\")()}catch(t){\"object\"===(\"undefined\"==typeof window?\"undefined\":r(window))&&(o=window)}t.exports=o},function(t,e,r){\"use strict\";var o=function(t){return t!=t};t.exports=function(t,e){return 0===t&&0===e?1/t==1/e:t===e||!(!o(t)||!o(e))}},function(t,e,r){\"use strict\";var o=r(8);t.exports=function(){return\"function\"==typeof Object.is?Object.is:o}},function(t,e,r){\"use strict\";var o=Object,n=TypeError;t.exports=function(){if(null!=this&&this!==o(this))throw new n(\"RegExp.prototype.flags getter called on non-object\");var t=\"\";return this.global&&(t+=\"g\"),this.ignoreCase&&(t+=\"i\"),this.multiline&&(t+=\"m\"),this.dotAll&&(t+=\"s\"),this.unicode&&(t+=\"u\"),this.sticky&&(t+=\"y\"),t}},function(t,e,r){\"use strict\";var o=r(10),n=r(0).supportsDescriptors,i=Object.getOwnPropertyDescriptor,s=TypeError;t.exports=function(){if(!n)throw new s(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");if(\"gim\"===/a/gim.flags){var t=i(RegExp.prototype,\"flags\");if(t&&\"function\"==typeof t.get&&\"boolean\"==typeof/a/.dotAll)return t.get}return o}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,u=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},p=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,r=n.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||n.call(t,e)},c=function(t,e){s&&\"__proto__\"===e.name?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},f=function(t,e){if(\"__proto__\"===e){if(!n.call(t,e))return;if(a)return a(t,e).value}return t[e]};t.exports=function t(){var e,r,n,i,s,a,l=arguments[0],y=1,h=arguments.length,b=!1;for(\"boolean\"==typeof l&&(b=l,l=arguments[1]||{},y=2),(null==l||\"object\"!==o(l)&&\"function\"!=typeof l)&&(l={});yt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var u=a.pathname.split(\"/\"),f=u[u.length-1];c(f,e.removeDirectoryIndex)&&(u=u.slice(0,u.length-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(var l=0,y=i(a.searchParams.keys());lt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var i=new n.a,s=e.data;o.forEach((function(e){var r=s.split(e),o=r.shift();i.insert(o),i.insert(e,{link:t.normalize(e)}),s=r.join(e)})),i.insert(s),r.ops=i.ops}return r}}))}},{key:\"registerTypeListener\",value:function(){var t=this;this.quill.on(\"text-change\",(function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var o=r[r.length-1];o.insert&&\"string\"==typeof o.insert&&o.insert.match(/\\s/)&&t.checkTextForUrl()}}))}},{key:\"checkTextForUrl\",value:function(){var t=this.quill.getSelection();if(t){var e=a(this.quill.getLeaf(t.index),1)[0];if(e.text&&\"a\"!==e.parent.domNode.localName){var r=e.text.match(this.options.urlRegularExpression);if(r){var o=this.quill.getIndex(e)+r.index;this.textToUrl(o,r[0])}}}}},{key:\"textToUrl\",value:function(t,e){var r=(new n.a).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:\"normalize\",value:function(t){if(this.options.normalizeRegularExpression.test(t))try{return s()(t,this.options.normalizeUrlOptions)}catch(t){console.error(t)}return t}}])&&l(e.prototype,r),o&&l(e,o),t}();window.Quill&&window.Quill.register(\"modules/magicUrl\",h)},function(t,e){function r(t,e,s){if(t==e)return t?[[0,t]]:[];(s<0||t.lengthe.length?t:e,u=t.length>e.length?e:t,p=a.indexOf(u);if(-1!=p)return s=[[1,a.substring(0,p)],[0,u],[1,a.substring(p+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1==u.length)return[[-1,t],[1,e]];var c=function(t,e){var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.length=t.length?[o,s,a,u,f]:null}var a,u,p,c,f,l=s(r,o,Math.ceil(r.length/4)),y=s(r,o,Math.ceil(r.length/2));if(!l&&!y)return null;a=y?l&&l[4].length>y[4].length?l:y:l;t.length>e.length?(u=a[0],p=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],p=a[3]);var h=a[4];return[u,p,c,f,h]}(t,e);if(c){var f=c[0],l=c[1],y=c[2],h=c[3],b=c[4],m=r(f,y),d=r(l,h);return m.concat([[0,b]],d)}return function(t,e){for(var r=t.length,n=e.length,i=Math.ceil((r+n)/2),s=i,a=2*i,u=new Array(a),p=new Array(a),c=0;cr)h+=2;else if(S>n)y+=2;else if(l){if((w=s+f-g)>=0&&w=j)return o(t,e,A,S)}}}for(var O=-d+b;O<=d-m;O+=2){for(var w=s+O,x=(j=O==-d||O!=d&&p[w-1]r)m+=2;else if(x>n)b+=2;else if(!l){if((v=s+f-O)>=0&&v=(j=r-j))return o(t,e,A,S)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-u),e=e.substring(0,e.length-u));return p&&f.unshift([0,p]),c&&f.push([0,c]),function t(e){e.push([0,\"\"]);var r,o=0,s=0,a=0,u=\"\",p=\"\";for(;o1?(0!==s&&0!==a&&(0!==(r=n(p,u))&&(o-s-a>0&&0==e[o-s-a-1][0]?e[o-s-a-1][1]+=p.substring(0,r):(e.splice(0,0,[0,p.substring(0,r)]),o++),p=p.substring(r),u=u.substring(r)),0!==(r=i(p,u))&&(e[o][1]=p.substring(p.length-r)+e[o][1],p=p.substring(0,p.length-r),u=u.substring(0,u.length-r))),0===s?e.splice(o-a,s+a,[1,p]):0===a?e.splice(o-s,s+a,[-1,u]):e.splice(o-s-a,s+a,[-1,u],[1,p]),o=o-s-a+(s?1:0)+(a?1:0)+1):0!==o&&0==e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,a=0,s=0,u=\"\",p=\"\"}\"\"===e[e.length-1][1]&&e.pop();var c=!1;o=1;for(;o0&&o.splice(n+2,0,[s[0],u]),a(o,n,3)}return t}(f,s)),f=function(t){for(var e=!1,r=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},o=2;o=55296&&n.charCodeAt(n.length-1)<=56319)&&-1===t[o-1][0]&&r(t[o-1][1])&&1===t[o][0]&&r(t[o][1])&&(e=!0,t[o-1][1]=t[o-2][1].slice(-1)+t[o-1][1],t[o][1]=t[o-2][1].slice(-1)+t[o][1],t[o-2][1]=t[o-2][1].slice(0,-1));var n;if(!e)return t;var i=[];for(o=0;o0&&i.push(t[o]);return i}(f)}function o(t,e,o,n){var i=t.substring(0,o),s=e.substring(0,n),a=t.substring(o),u=e.substring(n),p=r(i,s),c=r(a,u);return p.concat(c)}function n(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,o=Math.min(t.length,e.length),n=o,i=0;r=0&&o>=e-1;o--)if(o+10&&!i.call(t,0))for(var m=0;m0)for(var d=0;d=0&&\"[object Array]\"!==i.call(t)&&\"[object Function]\"===i.call(t.callee)},u=function(){return s(arguments)}();s.isLegacyArguments=a,t.exports=u?s:a},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(8),s=r(9),a=r(24),u=n(s(),Object);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=\"Function.prototype.bind called on incompatible \",n=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if(\"function\"!=typeof e||\"[object Function]\"!==i.call(e))throw new TypeError(o+e);for(var r,s=n.call(arguments,1),a=function(){if(this instanceof r){var o=e.apply(this,s.concat(n.call(arguments)));return Object(o)===o?o:this}return e.apply(t,s.concat(n.call(arguments)))},u=Math.max(0,e.length-s.length),p=[],c=0;c1&&\"boolean\"!=typeof e)throw new TypeError('\"allowMissing\" argument must be a boolean');for(var r=m(t),o=d(\"%\"+(r.length>0?r[0]:\"\")+\"%\",e),s=1;s=r.length){var a=i(o,r[s]);if(!e&&!(r[s]in o))throw new n(\"base intrinsic for \"+t+\" exists, but the property is not available.\");o=a?a.get||a.value:o[r[s]]}else o=o[r[s]];return o}},function(t,e,r){\"use strict\";(function(e){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=e.Symbol,i=r(23);t.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"===o(n(\"foo\"))&&(\"symbol\"===o(Symbol(\"bar\"))&&i())))}}).call(this,r(7))},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"===o(Symbol.iterator))return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){\"use strict\";var o=r(9),n=r(0);t.exports=function(){var t=o();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(26),i=RegExp.prototype.exec,s=Object.getOwnPropertyDescriptor,a=Object.prototype.toString,u=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){if(!t||\"object\"!==o(t))return!1;if(!u)return\"[object RegExp]\"===a.call(t);var e=s(t,\"lastIndex\");return!(!e||!n(e,\"value\"))&&function(t){try{var e=t.lastIndex;return t.lastIndex=0,i.call(t),!0}catch(t){return!1}finally{t.lastIndex=e}}(t)}},function(t,e,r){\"use strict\";var o=r(1);t.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(10),s=r(11),a=r(28),u=n(i);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=r(0).supportsDescriptors,n=r(11),i=Object.getOwnPropertyDescriptor,s=Object.defineProperty,a=TypeError,u=Object.getPrototypeOf,p=/a/;t.exports=function(){if(!o||!u)throw new a(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");var t=n(),e=u(p),r=i(e,\"flags\");return r&&r.get===t||s(e,\"flags\",{configurable:!0,enumerable:!1,get:t}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Date.prototype.getDay,i=Object.prototype.toString,s=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){return\"object\"===o(t)&&null!==t&&(s?function(t){try{return n.call(t),!0}catch(t){return!1}}(t):\"[object Date]\"===i.call(t))}},function(t,e,r){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(3),i=r(12),s={attributes:{compose:function(t,e,r){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var n=i(!0,{},e);for(var s in r||(n=Object.keys(n).reduce((function(t,e){return null!=n[e]&&(t[e]=n[e]),t}),{})),t)void 0!==t[s]&&void 0===e[s]&&(n[s]=t[s]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce((function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r}),{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if(\"object\"!==o(t))return e;if(\"object\"===o(e)){if(!r)return e;var n=Object.keys(e).reduce((function(r,o){return void 0===t[o]&&(r[o]=e[o]),r}),{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new a(t)},length:function(t){return\"number\"==typeof t.delete?t.delete:\"number\"==typeof t.retain?t.retain:\"string\"==typeof t.insert?t.insert.length:1}};function a(t){this.ops=t,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,o=s.length(e);if(t>=o-r?(t=o-r,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var n={};return e.attributes&&(n.attributes=e.attributes),\"number\"==typeof e.retain?n.retain=t:\"string\"==typeof e.insert?n.insert=e.insert.substr(r,t):n.insert=e.insert,n}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?s.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,r=this.next(),o=this.ops.slice(this.index);return this.offset=t,this.index=e,[r].concat(o)}return[]},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(32),i=r(34);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=S,e.resolve=function(t,e){return S(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?S(t,!1,!0).resolveObject(e):e},e.format=function(t){i.isString(t)&&(t=S(t));return t instanceof s?t.format():s.prototype.format.call(t)},e.Url=s;var a=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,p=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,c=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),f=[\"'\"].concat(c),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(f),y=[\"/\",\"?\",\"#\"],h=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,\"javascript:\":!0},d={javascript:!0,\"javascript:\":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},v=r(35);function S(t,e,r){if(t&&i.isObject(t)&&t instanceof s)return t;var o=new s;return o.parse(t,e,r),o}s.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError(\"Parameter 'url' must be a string, not \"+o(t));var s=t.indexOf(\"?\"),u=-1!==s&&s127?F+=\"x\":F+=C[D];if(!F.match(h)){var N=R.slice(0,I),$=R.slice(I+1),L=C.match(b);L&&(N.push(L[1]),$.unshift(L[2])),$.length&&(S=\"/\"+$.join(\".\")+S),this.hostname=N.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),U||(this.hostname=n.toASCII(this.hostname));var _=this.port?\":\"+this.port:\"\",q=this.hostname||\"\";this.host=q+_,this.href+=this.host,U&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==S[0]&&(S=\"/\"+S))}if(!m[w])for(I=0,T=f.length;I0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift());return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!w.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var A=w.slice(-1)[0],P=(r.host||t.host||w.length>1)&&(\".\"===A||\"..\"===A)||\"\"===A,E=0,I=w.length;I>=0;I--)\".\"===(A=w[I])?w.splice(I,1):\"..\"===A?(w.splice(I,1),E++):E&&(w.splice(I,1),E--);if(!j&&!O)for(;E--;E)w.unshift(\"..\");!j||\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0)||w.unshift(\"\"),P&&\"/\"!==w.join(\"/\").substr(-1)&&w.push(\"\");var k,U=\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0);x&&(r.hostname=r.host=U?\"\":w.length?w.shift():\"\",(k=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift()));return(j=j||r.host&&w.length)&&!U&&w.unshift(\"\"),w.length?r.pathname=w.join(\"/\"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},s.prototype.parseHost=function(){var t=this.host,e=u.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){(function(t,o){var n;function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}\n/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){var a=\"object\"==i(e)&&e&&!e.nodeType&&e,u=\"object\"==i(t)&&t&&!t.nodeType&&t,p=\"object\"==(void 0===o?\"undefined\":i(o))&&o;p.global!==p&&p.window!==p&&p.self!==p||(s=p);var c,f,l=2147483647,y=/^xn--/,h=/[^\\x20-\\x7E]/,b=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,m={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,g=String.fromCharCode;function v(t){throw new RangeError(m[t])}function S(t,e){for(var r=t.length,o=[];r--;)o[r]=e(t[r]);return o}function j(t,e){var r=t.split(\"@\"),o=\"\";return r.length>1&&(o=r[0]+\"@\",t=r[1]),o+S((t=t.replace(b,\".\")).split(\".\"),e).join(\".\")}function O(t){for(var e,r,o=[],n=0,i=t.length;n=55296&&e<=56319&&n65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join(\"\")}function x(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var o=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;o+=36)t=d(t/35);return d(o+36*t/(t+38))}function P(t){var e,r,o,n,i,s,a,u,p,c,f,y=[],h=t.length,b=0,m=128,g=72;for((r=t.lastIndexOf(\"-\"))<0&&(r=0),o=0;o=128&&v(\"not-basic\"),y.push(t.charCodeAt(o));for(n=r>0?r+1:0;n=h&&v(\"invalid-input\"),((u=(f=t.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:36)>=36||u>d((l-b)/s))&&v(\"overflow\"),b+=u*s,!(u<(p=a<=g?1:a>=g+26?26:a-g));a+=36)s>d(l/(c=36-p))&&v(\"overflow\"),s*=c;g=A(b-i,e=y.length+1,0==i),d(b/e)>l-m&&v(\"overflow\"),m+=d(b/e),b%=e,y.splice(b++,0,m)}return w(y)}function E(t){var e,r,o,n,i,s,a,u,p,c,f,y,h,b,m,S=[];for(y=(t=O(t)).length,e=128,r=0,i=72,s=0;s=e&&fd((l-r)/(h=o+1))&&v(\"overflow\"),r+=(a-e)*h,e=a,s=0;sl&&v(\"overflow\"),f==e){for(u=r,p=36;!(u<(c=p<=i?1:p>=i+26?26:p-i));p+=36)m=u-c,b=36-c,S.push(g(x(c+m%b,0))),u=d(m/b);S.push(g(x(u,0))),i=A(r,h,o==n),r=0,++o}++r,++e}return S.join(\"\")}if(c={version:\"1.4.1\",ucs2:{decode:O,encode:w},decode:P,encode:E,toASCII:function(t){return j(t,(function(t){return h.test(t)?\"xn--\"+E(t):t}))},toUnicode:function(t){return j(t,(function(t){return y.test(t)?P(t.slice(4).toLowerCase()):t}))}},\"object\"==i(r(13))&&r(13))void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n);else if(a&&u)if(t.exports==a)u.exports=c;else for(f in c)c.hasOwnProperty(f)&&(a[f]=c[f]);else s.punycode=c}(this)}).call(this,r(33)(t),r(7))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports={isString:function(t){return\"string\"==typeof t},isObject:function(t){return\"object\"===o(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,r){\"use strict\";e.decode=e.parse=r(36),e.encode=e.stringify=r(37)},function(t,e,r){\"use strict\";function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||\"&\",r=r||\"=\";var s={};if(\"string\"!=typeof t||0===t.length)return s;var a=/\\+/g;t=t.split(e);var u=1e3;i&&\"number\"==typeof i.maxKeys&&(u=i.maxKeys);var p=t.length;u>0&&p>u&&(p=u);for(var c=0;c=0?(f=b.substr(0,m),l=b.substr(m+1)):(f=b,l=\"\"),y=decodeURIComponent(f),h=decodeURIComponent(l),o(s,y)?n(s[y])?s[y].push(h):s[y]=[s[y],h]:s[y]=h}return s};var n=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=function(t){switch(o(t)){case\"string\":return t;case\"boolean\":return t?\"true\":\"false\";case\"number\":return isFinite(t)?t:\"\";default:return\"\"}};t.exports=function(t,e,r,u){return e=e||\"&\",r=r||\"=\",null===t&&(t=void 0),\"object\"===o(t)?s(a(t),(function(o){var a=encodeURIComponent(n(o))+r;return i(t[o])?s(t[o],(function(t){return a+encodeURIComponent(n(t))})).join(e):a+encodeURIComponent(n(t[o]))})).join(e):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(t)):\"\"};var i=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function s(t,e){if(t.map)return t.map(e);for(var r=[],o=0;o\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set} set\n * @return {Array}\n */\nexport const toArray = set => Array.from(set)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {Array} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array}\n */\nexport const create = () => /** @type {Array} */ ([])\n\n/**\n * @template D\n * @param {Array} a\n * @return {Array}\n */\nexport const copy = a => /** @type {Array} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array} dest\n * @param {Array} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike|Iterable} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n *\n * @param {Array} arr\n * @param {function(ITEM, number, Array):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => arr.every(f)\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @param {Array} arr\n * @param {function(S, number, Array):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => arr.some(f)\n\n/**\n * @template ELEM\n *\n * @param {Array} a\n * @param {Array} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n *\n * @template N\n */\nexport class Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map}\n */\n this._observers = map.create()\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, name, set.create).add(f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, f)\n f(...args)\n }\n this.on(name, _f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n","/**\n * Isomorphic library exports from isomorphic.js.\n *\n * @module isomorphic\n */\n\n// @ts-ignore\nimport iso from 'isomorphic.js'\n\nexport const performance = /** @type {any} */ (iso.performance)\nexport const cryptoRandomBuffer = /** @type {any} */ (iso.cryptoRandomBuffer)\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* istanbul ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object} obj\n */\nexport const keys = Object.keys\n\n/**\n * @param {Object} obj\n * @param {function(any,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @template R\n * @param {Object} obj\n * @param {function(any,string):R} f\n * @return {Array}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @param {Object} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object} a\n * @param {Object} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array} fs\n * @param {Array} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array|object} a\n * @param {Array|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((a instanceof Array && array.equalFlat(a, /** @type {Array} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array>} arr\n * @param {function(L, R):X} f\n * @return {Array}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* istanbul ignore next */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const createTextNode = text => doc.createTextNode(text)\n\n/* istanbul ignore next */\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\n/* istanbul ignore next */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array|HTMLCollection} children\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array} nodes\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\n/* istanbul ignore next */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array|pair.Pair>} attrs Array of key-value pairs\n * @param {Array} children\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\n/* istanbul ignore next */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair} pair\n */\n/* istanbul ignore next */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array>} pairs\n * @return {string}\n */\n/* istanbul ignore next */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map} m\n * @return {string}\n */\n/* istanbul ignore next */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\n/* istanbul ignore next */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf}\n */\n/* istanbul ignore next */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nconst _parse = html => domParser.parseFromString(`${html}`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\n/* istanbul ignore next */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* istanbul ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/* istanbul ignore next */\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* istanbul ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/* istanbul ignore next */\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* istanbul ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as symbol from './symbol.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as time from './time.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/**\n * @type {Object>}\n */\nconst _browserStyleMap = {\n [BOLD]: pair.create('font-weight', 'bold'),\n [UNBOLD]: pair.create('font-weight', 'normal'),\n [BLUE]: pair.create('color', 'blue'),\n [GREEN]: pair.create('color', 'green'),\n [GREY]: pair.create('color', 'grey'),\n [RED]: pair.create('color', 'red'),\n [PURPLE]: pair.create('color', 'purple'),\n [ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [UNCOLOR]: pair.create('color', 'black')\n}\n\nconst _nodeStyleMap = {\n [BOLD]: '\\u001b[1m',\n [UNBOLD]: '\\u001b[2m',\n [BLUE]: '\\x1b[34m',\n [GREEN]: '\\x1b[32m',\n [GREY]: '\\u001b[37m',\n [RED]: '\\x1b[31m',\n [PURPLE]: '\\x1b[35m',\n [ORANGE]: '\\x1b[38;5;208m',\n [UNCOLOR]: '\\x1b[0m'\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeBrowserLoggingArgs = args => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeNodeLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n /* istanbul ignore else */\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/* istanbul ignore next */\nconst computeLoggingArgs = env.isNode ? computeNodeLoggingArgs : computeBrowserLoggingArgs\n\n/**\n * @param {Array} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(ORANGE)\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Error} err\n */\nexport const printError = err => {\n console.error(err)\n vconsoles.forEach(vc => vc.printError(err))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log('%c ', `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`)\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach(vc => vc.printImg(url, height))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} base64\n * @param {number} height\n */\nexport const printImgBase64 = (base64, height) => printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.group(args))\n}\n\n/**\n * @param {Array} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupEnd())\n}\n\n/* istanbul ignore next */\n/**\n * @param {function():Node} createNode\n */\nexport const printDom = createNode =>\n vconsoles.forEach(vc => vc.printDom(createNode()))\n\n/* istanbul ignore next */\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\nexport const printCanvas = (canvas, height) => printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = new Set()\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst _computeLineSpans = args => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [pair.create('style', dom.mapToStyleString(currentStyle))], [dom.text(arg)])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(dom.element('span', [], [dom.text(/** @type {string} */ (content))]))\n }\n }\n return spans\n}\n\nconst lineStyle = 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* istanbul ignore next */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [pair.create('hidden', collapsed), pair.create('style', 'color:grey;font-size:120%;')], [dom.text('▼')])\n const triangleRight = dom.element('span', [pair.create('hidden', !collapsed), pair.create('style', 'color:grey;font-size:125%;')], [dom.text('▶')])\n const content = dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], [triangleDown, triangleRight, dom.text(' ')].concat(_computeLineSpans(args)))\n const nextContainer = dom.element('div', [pair.create('hidden', collapsed)])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', event => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], _computeLineSpans(args))])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([RED, BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('img', [pair.create('src', url), pair.create('height', `${math.round(height * 1.5)}px`)])])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n\n/* istanbul ignore next */\n/**\n * @param {Element} dom\n */\nexport const createVConsole = dom => new VConsole(dom)\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/**\n * @param {string} moduleName\n * @return {function(...any)}\n */\nexport const createModuleLogger = moduleName => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null && (debugRegexVar === '*' || debugRegexVar === 'true' || new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n\n return !doLogging ? func.nop : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n print(color, moduleName, UNCOLOR, ...args.map(arg => (typeof arg === 'string' || typeof arg === 'symbol') ? arg : JSON.stringify(arg)), color, ' +' + timeDiff + 'ms')\n }\n}\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator} iterator\n * @param {function(T):R} f\n * @return {IterableIterator}\n */\nexport const mapIterator = (iterator, f) => ({\n /**\n * @param {function(T):R} f\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult} next\n * @return {IterableIterator}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","import { Observable } from 'lib0/observable.js';\nimport { appendTo, last } from 'lib0/array.js';\nimport { floor, min, max, abs } from 'lib0/math.js';\nimport { setIfUndefined, any, create as create$2, copy } from 'lib0/map.js';\nimport { writeVarUint, Encoder, toUint8Array, IntDiffOptRleEncoder, UintOptRleEncoder, RleEncoder, writeUint8, StringEncoder, createEncoder, writeVarUint8Array, writeUint8Array, writeAny, writeVarString } from 'lib0/encoding.js';\nimport { readVarUint, createDecoder, readUint8, IntDiffOptRleDecoder, readVarUint8Array, UintOptRleDecoder, RleDecoder, StringDecoder, readAny, readVarString } from 'lib0/decoding.js';\nimport { uint32 } from 'lib0/random.js';\nimport { copyUint8Array } from 'lib0/buffer.js';\nimport { unexpectedCase, methodUnimplemented, create as create$1 } from 'lib0/error.js';\nimport { BITS5, BIT8, BIT7, BIT6, BIT2, BIT4, BIT1, BIT3 } from 'lib0/binary.js';\nimport { callAll } from 'lib0/function.js';\nimport { create } from 'lib0/set.js';\nimport { print, ORANGE, BOLD, UNBOLD, RED } from 'lib0/logging.js';\nimport { getUnixTime } from 'lib0/time.js';\nimport { iteratorFilter, iteratorMap } from 'lib0/iterator.js';\nimport { equalFlat } from 'lib0/object.js';\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {Observable}\n */\nclass AbstractConnector extends Observable {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super();\n this.doc = ydoc;\n this.awareness = awareness;\n }\n}\n\nclass DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock;\n /**\n * @type {number}\n */\n this.len = len;\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nclass DeleteSet {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(clientid));\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i];\n iterateStructs(transaction, structs, del.clock, del.len, f);\n }\n });\n\n/**\n * @param {Array} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nconst findIndexDS = (dis, clock) => {\n let left = 0;\n let right = dis.length - 1;\n while (left <= right) {\n const midindex = floor((left + right) / 2);\n const mid = dis[midindex];\n const midclock = mid.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client);\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n};\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock);\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j;\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1];\n const right = dels[i];\n if (left.clock + left.len === right.clock) {\n left.len += right.len;\n } else {\n if (j < i) {\n dels[j] = right;\n }\n j++;\n }\n }\n dels.length = j;\n });\n};\n\n/**\n * @param {Array} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nconst mergeDeleteSets = dss => {\n const merged = new DeleteSet();\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array}\n */\n const dels = delsLeft.slice();\n for (let i = dssI + 1; i < dss.length; i++) {\n appendTo(dels, dss[i].clients.get(client) || []);\n }\n merged.clients.set(client, dels);\n }\n });\n }\n sortAndMergeDeleteSet(merged);\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nconst addToDeleteSet = (ds, client, clock, length) => {\n setIfUndefined(ds.clients, client, () => []).push(new DeleteItem(clock, length));\n};\n\nconst createDeleteSet = () => new DeleteSet();\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nconst createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet();\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array}\n */\n const dsitems = [];\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i];\n if (struct.deleted) {\n const clock = struct.id.clock;\n let len = struct.length;\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.id.clock === clock + len && next.deleted; next = structs[++i + 1]) {\n len += next.length;\n }\n }\n dsitems.push(new DeleteItem(clock, len));\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems);\n }\n });\n return ds\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst writeDeleteSet = (encoder, ds) => {\n writeVarUint(encoder.restEncoder, ds.clients.size);\n ds.clients.forEach((dsitems, client) => {\n encoder.resetDsCurVal();\n writeVarUint(encoder.restEncoder, client);\n const len = dsitems.length;\n writeVarUint(encoder.restEncoder, len);\n for (let i = 0; i < len; i++) {\n const item = dsitems[i];\n encoder.writeDsClock(item.clock);\n encoder.writeDsLen(item.len);\n }\n });\n};\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nconst readDeleteSet = decoder => {\n const ds = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n if (numberOfDeletes > 0) {\n const dsField = setIfUndefined(ds.clients, client, () => []);\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));\n }\n }\n }\n return ds\n};\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n const structs = store.clients.get(client) || [];\n const state = getState(store, client);\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock();\n const clockEnd = clock + decoder.readDsLen();\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state);\n }\n let index = findIndexSS(structs, clock);\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index];\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n index++; // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++];\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock));\n }\n struct.delete(transaction);\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock);\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n // TODO: no need for encoding+decoding ds anymore\n const unappliedDSEncoder = new DSEncoderV2();\n writeDeleteSet(unappliedDSEncoder, unappliedDS);\n store.pendingDeleteReaders.push(new DSDecoderV2(createDecoder((unappliedDSEncoder.toUint8Array()))));\n }\n};\n\n/**\n * @module Y\n */\n\nconst generateNewClientId = uint32;\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends Observable\n */\nclass Doc extends Observable {\n /**\n * @param {Object} conf configuration\n * @param {boolean} [conf.gc] Disable garbage collection (default: gc=true)\n * @param {function(Item):boolean} [conf.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n */\n constructor ({ gc = true, gcFilter = () => true } = {}) {\n super();\n this.gc = gc;\n this.gcFilter = gcFilter;\n this.clientID = generateNewClientId();\n /**\n * @type {Map>}\n */\n this.share = new Map();\n this.store = new StructStore();\n /**\n * @type {Transaction | null}\n */\n this._transaction = null;\n /**\n * @type {Array}\n */\n this._transactionCleanups = [];\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @param {function(Transaction):void} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n *\n * @public\n */\n transact (f, origin = null) {\n transact(this, f, origin);\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `y.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `y.define(name, Y.Array) === y.define(name, Y.Array)`\n *\n * After this method is called, the type is also available on `y.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Yjs instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @example\n * const y = new Y(..)\n * const appState = {\n * document: y.getText('document')\n * comments: y.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Function} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {AbstractType} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = AbstractType) {\n const type = setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor();\n t._integrate(this, null);\n return t\n });\n const Constr = type.constructor;\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor();\n t._map = type._map;\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t;\n }\n });\n t._start = type._start;\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t;\n }\n t._length = type._length;\n this.share.set(name, t);\n t._integrate(this, null);\n return t\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return type\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray}\n *\n * @public\n */\n getArray (name = '') {\n // @ts-ignore\n return this.get(name, YArray)\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n // @ts-ignore\n return this.get(name, YText)\n }\n\n /**\n * @param {string} [name]\n * @return {YMap}\n *\n * @public\n */\n getMap (name = '') {\n // @ts-ignore\n return this.get(name, YMap)\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n // @ts-ignore\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const doc = {};\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON();\n });\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n this.emit('destroyed', [true]);\n super.destroy();\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n on (eventName, f) {\n super.on(eventName, f);\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n off (eventName, f) {\n super.off(eventName, f);\n }\n}\n\nclass DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return readVarUint(this.restDecoder)\n }\n}\n\nclass UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return copyUint8Array(readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return readVarString(this.restDecoder)\n }\n}\n\nclass DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.dsCurrVal = 0;\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n readDsClock () {\n this.dsCurrVal += readVarUint(this.restDecoder);\n return this.dsCurrVal\n }\n\n readDsLen () {\n const diff = readVarUint(this.restDecoder) + 1;\n this.dsCurrVal += diff;\n return diff\n }\n}\n\nclass UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder);\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array}\n */\n this.keys = [];\n readUint8(decoder); // read feature flag - currently unused\n this.keyClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.clientDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.leftClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.rightClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.infoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.stringDecoder = new StringDecoder(readVarUint8Array(decoder));\n this.parentInfoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.typeRefDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.lenDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read();\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read();\n this.keys.push(key);\n return key\n }\n }\n}\n\nclass DSEncoderV1 {\n constructor () {\n this.restEncoder = new Encoder();\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n writeVarUint(this.restEncoder, clock);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n}\n\nclass UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n writeVarUint(this.restEncoder, client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n writeUint8(this.restEncoder, info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n writeVarString(this.restEncoder, s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n writeVarUint(this.restEncoder, isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n writeVarUint(this.restEncoder, info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n writeVarString(this.restEncoder, JSON.stringify(embed));\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n writeVarString(this.restEncoder, key);\n }\n}\n\nclass DSEncoderV2 {\n constructor () {\n this.restEncoder = new Encoder(); // encodes all the rest / non-optimized\n this.dsCurrVal = 0;\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal;\n this.dsCurrVal = clock;\n writeVarUint(this.restEncoder, diff);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n unexpectedCase();\n }\n writeVarUint(this.restEncoder, len - 1);\n this.dsCurrVal += len;\n }\n}\n\nclass UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super();\n /**\n * @type {Map}\n */\n this.keyMap = new Map();\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0;\n this.keyClockEncoder = new IntDiffOptRleEncoder();\n this.clientEncoder = new UintOptRleEncoder();\n this.leftClockEncoder = new IntDiffOptRleEncoder();\n this.rightClockEncoder = new IntDiffOptRleEncoder();\n this.infoEncoder = new RleEncoder(writeUint8);\n this.stringEncoder = new StringEncoder();\n this.parentInfoEncoder = new RleEncoder(writeUint8);\n this.typeRefEncoder = new UintOptRleEncoder();\n this.lenEncoder = new UintOptRleEncoder();\n }\n\n toUint8Array () {\n const encoder = createEncoder();\n writeUint8(encoder, 0); // this is a feature flag that we might use in the future\n writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.clientEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.infoEncoder));\n writeVarUint8Array(encoder, this.stringEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.parentInfoEncoder));\n writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.lenEncoder.toUint8Array());\n // @note The rest encoder is appended! (note the missing var)\n writeUint8Array(encoder, toUint8Array(this.restEncoder));\n return toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client);\n this.leftClockEncoder.write(id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client);\n this.rightClockEncoder.write(id.clock);\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n writeAny(this.restEncoder, embed);\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key);\n if (clock === undefined) {\n this.keyClockEncoder.write(this.keyClock++);\n this.stringEncoder.write(key);\n } else {\n this.keyClockEncoder.write(this.keyClock++);\n }\n }\n}\n\nlet DefaultDSEncoder = DSEncoderV1;\nlet DefaultDSDecoder = DSDecoderV1;\nlet DefaultUpdateEncoder = UpdateEncoderV1;\nlet DefaultUpdateDecoder = UpdateDecoderV1;\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Array} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n const startNewStructs = findIndexSS(structs, clock);\n // write # encoded structs\n writeVarUint(encoder.restEncoder, structs.length - startNewStructs);\n encoder.writeClient(client);\n writeVarUint(encoder.restEncoder, clock);\n const firstStruct = structs[startNewStructs];\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock);\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {StructStore} store\n * @param {Map} _sm\n *\n * @private\n * @function\n */\nconst writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map();\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock);\n }\n });\n getStateVector(store).forEach((clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0);\n }\n });\n // write # states that were updated\n writeVarUint(encoder.restEncoder, sm.size);\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n Array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n // @ts-ignore\n writeStructs(encoder, store.clients.get(client), client, clock);\n });\n};\n\n/**\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Map>} clientRefs\n * @param {Doc} doc\n * @return {Map>}\n *\n * @private\n * @function\n */\nconst readClientsStructRefs = (decoder, clientRefs, doc) => {\n const numOfStateUpdates = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = readVarUint(decoder.restDecoder);\n /**\n * @type {Array}\n */\n const refs = new Array(numberOfStructs);\n const client = decoder.readClient();\n let clock = readVarUint(decoder.restDecoder);\n // const start = performance.now()\n clientRefs.set(client, refs);\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n if ((BITS5 & info) !== 0) {\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (BIT7 | BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n (info & BIT8) === BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & BIT7) === BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & BIT6) === BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct;\n clock += struct.length;\n } else {\n const len = decoder.readLen();\n refs[i] = new GC(createID(client, clock), len);\n clock += len;\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n};\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst resumeStructIntegration = (transaction, store) => {\n const stack = store.pendingStack; // @todo don't forget to append stackhead at the end\n const clientsStructRefs = store.pendingClientsStructRefs;\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n const clientsStructRefsIds = Array.from(clientsStructRefs.keys()).sort((a, b) => a - b);\n if (clientsStructRefsIds.length === 0) {\n return\n }\n const getNextStructTarget = () => {\n let nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop();\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n } else {\n store.pendingClientsStructRefs.clear();\n return null\n }\n }\n return nextStructsTarget\n };\n let curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null && stack.length === 0) {\n return\n }\n /**\n * @type {GC|Item}\n */\n let stackHead = stack.length > 0\n ? /** @type {GC|Item} */ (stack.pop())\n : /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++];\n // caching the state because it is used very often\n const state = new Map();\n // iterate over all struct readers until we are done\n while (true) {\n const localClock = setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client));\n const offset = stackHead.id.clock < localClock ? localClock - stackHead.id.clock : 0;\n if (stackHead.id.clock + offset !== localClock) {\n // A previous message from this client is missing\n // check if there is a pending structRef with a smaller clock and switch them\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(stackHead.id.client) || { refs: [], i: 0 };\n if (structRefs.refs.length !== structRefs.i) {\n const r = structRefs.refs[structRefs.i];\n if (r.id.clock < stackHead.id.clock) {\n // put ref with smaller clock on stack instead and continue\n structRefs.refs[structRefs.i] = stackHead;\n stackHead = r;\n // sort the set because this approach might bring the list out of order\n structRefs.refs = structRefs.refs.slice(structRefs.i).sort((r1, r2) => r1.id.clock - r2.id.clock);\n structRefs.i = 0;\n continue\n }\n }\n // wait until missing struct is available\n stack.push(stackHead);\n return\n }\n const missing = stackHead.getMissing(transaction, store);\n if (missing === null) {\n if (offset === 0 || offset < stackHead.length) {\n stackHead.integrate(transaction, offset);\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length);\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop());\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n } else {\n curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n }\n }\n } else {\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(missing) || { refs: [], i: 0 };\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message.\n stack.push(stackHead);\n return\n }\n stack.push(stackHead);\n stackHead = structRefs.refs[structRefs.i++];\n }\n }\n store.pendingClientsStructRefs.clear();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst tryResumePendingDeleteReaders = (transaction, store) => {\n const pendingReaders = store.pendingDeleteReaders;\n store.pendingDeleteReaders = [];\n for (let i = 0; i < pendingReaders.length; i++) {\n readAndApplyDeleteSet(pendingReaders[i], transaction, store);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nconst writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState);\n\n/**\n * @param {StructStore} store\n * @param {Map>} clientsStructsRefs\n *\n * @private\n * @function\n */\nconst mergeReadStructsIntoPendingReads = (store, clientsStructsRefs) => {\n const pendingClientsStructRefs = store.pendingClientsStructRefs;\n clientsStructsRefs.forEach((structRefs, client) => {\n const pendingStructRefs = pendingClientsStructRefs.get(client);\n if (pendingStructRefs === undefined) {\n pendingClientsStructRefs.set(client, { refs: structRefs, i: 0 });\n } else {\n // merge into existing structRefs\n const merged = pendingStructRefs.i > 0 ? pendingStructRefs.refs.slice(pendingStructRefs.i) : pendingStructRefs.refs;\n for (let i = 0; i < structRefs.length; i++) {\n merged.push(structRefs[i]);\n }\n pendingStructRefs.i = 0;\n pendingStructRefs.refs = merged.sort((r1, r2) => r1.id.clock - r2.id.clock);\n }\n });\n};\n\n/**\n * @param {Map,i:number}>} pendingClientsStructRefs\n */\nconst cleanupPendingStructs = pendingClientsStructRefs => {\n // cleanup pendingClientsStructs if not fully finished\n pendingClientsStructRefs.forEach((refs, client) => {\n if (refs.i === refs.refs.length) {\n pendingClientsStructRefs.delete(client);\n } else {\n refs.refs.splice(0, refs.i);\n refs.i = 0;\n }\n });\n};\n\n/**\n * Read the next Item in a Decoder and fill this Item with the read data.\n *\n * This is called when data is received from a remote peer.\n *\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readStructs = (decoder, transaction, store) => {\n const clientsStructRefs = new Map();\n // let start = performance.now()\n readClientsStructRefs(decoder, clientsStructRefs, transaction.doc);\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n mergeReadStructsIntoPendingReads(store, clientsStructRefs);\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n resumeStructIntegration(transaction, store);\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n cleanupPendingStructs(store.pendingClientsStructRefs);\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n tryResumePendingDeleteReaders(transaction, store);\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n};\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {AbstractUpdateDecoder} [structDecoder]\n *\n * @function\n */\nconst readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n readStructs(structDecoder, transaction, ydoc.store);\n readAndApplyDeleteSet(structDecoder, transaction, ydoc.store);\n }, transactionOrigin, false);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new DefaultUpdateDecoder(decoder));\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nconst applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = createDecoder(update);\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder));\n};\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, DefaultUpdateDecoder);\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {AbstractUpdateEncoder} encoder\n * @param {Doc} doc\n * @param {Map} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nconst writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector);\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store));\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {AbstractUpdateEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdateV2 = (doc, encodedTargetStateVector, encoder = new UpdateEncoderV2()) => {\n const targetStateVector = encodedTargetStateVector == null ? new Map() : decodeStateVector(encodedTargetStateVector);\n writeStateAsUpdate(encoder, doc, targetStateVector);\n return encoder.toUint8Array()\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new DefaultUpdateEncoder());\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {AbstractDSDecoder} decoder\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst readStateVector = decoder => {\n const ss = new Map();\n const ssLength = readVarUint(decoder.restDecoder);\n for (let i = 0; i < ssLength; i++) {\n const client = readVarUint(decoder.restDecoder);\n const clock = readVarUint(decoder.restDecoder);\n ss.set(client, clock);\n }\n return ss\n};\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(createDecoder(decodedState)));\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVector = decodedState => readStateVector(new DefaultDSDecoder(createDecoder(decodedState)));\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Map} sv\n * @function\n */\nconst writeStateVector = (encoder, sv) => {\n writeVarUint(encoder.restEncoder, sv.size);\n sv.forEach((clock, client) => {\n writeVarUint(encoder.restEncoder, client); // @todo use a special client decoder that is based on mapping\n writeVarUint(encoder.restEncoder, clock);\n });\n return encoder\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Doc} doc\n *\n * @function\n */\nconst writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store));\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n writeDocumentStateVector(encoder, doc);\n return encoder.toUint8Array()\n};\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVector = doc => encodeStateVectorV2(doc, new DefaultDSEncoder());\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nclass EventHandler {\n constructor () {\n /**\n * @type {Array}\n */\n this.l = [];\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler}\n *\n * @private\n * @function\n */\nconst createEventHandler = () => new EventHandler();\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nconst addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f);\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nconst removeEventHandlerListener = (eventHandler, f) => {\n eventHandler.l = eventHandler.l.filter(g => f !== g);\n};\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nconst callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n callAll(eventHandler.l, [arg0, arg1]);\n\nclass ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client;\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock;\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock);\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nconst createID = (client, clock) => new ID(client, clock);\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nconst writeID = (encoder, id) => {\n writeVarUint(encoder, id.client);\n writeVarUint(encoder, id.clock);\n};\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nconst readID = decoder =>\n createID(readVarUint(decoder), readVarUint(decoder));\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType} type\n * @return {string}\n *\n * @private\n * @function\n */\nconst findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw unexpectedCase()\n};\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nconst isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType} */ (child.parent)._item;\n }\n return false\n};\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType} type\n */\nconst logType = type => {\n const res = [];\n let n = type._start;\n while (n) {\n res.push(n);\n n = n.right;\n }\n console.log('Children: ', res);\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content));\n};\n\nclass PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map}\n */\n const dss = new Map();\n this.yusers = storeType;\n this.doc = doc;\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map}\n */\n this.clients = new Map();\n this.dss = dss;\n /**\n * @param {YMap} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray}\n */\n const ds = user.get('ds');\n const ids = user.get('ids');\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription);\n ds.observe(/** @param {YArrayEvent} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(createDecoder(encodedDs)))]));\n }\n });\n });\n });\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(encodedDs)))));\n ids.observe(/** @param {YArrayEvent} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n );\n ids.forEach(addClientId);\n };\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n );\n });\n // add intial data\n storeType.forEach(initUser);\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} [conf]\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers;\n let user = users.get(userDescription);\n if (!user) {\n user = new YMap();\n user.set('ids', new YArray());\n user.set('ds', new YArray());\n users.set(userDescription, user);\n }\n user.get('ids').push([clientid]);\n users.observe(event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription);\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite;\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid]);\n }\n });\n const encoder = new DSEncoderV1();\n const ds = this.dss.get(userDescription);\n if (ds) {\n writeDeleteSet(encoder, ds);\n user.get('ds').push([encoder.toUint8Array()]);\n }\n }\n }, 0);\n });\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds');\n const ds = transaction.deleteSet;\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1();\n writeDeleteSet(encoder, ds);\n yds.push([encoder.toUint8Array()]);\n }\n });\n });\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nclass RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n */\n constructor (type, tname, item) {\n /**\n * @type {ID|null}\n */\n this.type = type;\n /**\n * @type {string|null}\n */\n this.tname = tname;\n /**\n * @type {ID | null}\n */\n this.item = item;\n }\n}\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock));\n\nclass AbsolutePosition {\n /**\n * @param {AbstractType} type\n * @param {number} index\n */\n constructor (type, index) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n /**\n * @type {number}\n */\n this.index = index;\n }\n}\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n *\n * @function\n */\nconst createAbsolutePosition = (type, index) => new AbsolutePosition(type, index);\n\n/**\n * @param {AbstractType} type\n * @param {ID|null} item\n *\n * @function\n */\nconst createRelativePosition = (type, item) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = findRootTypeKey(type);\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock);\n }\n return new RelativePosition(typeid, tname, item)\n};\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromTypeIndex = (type, index) => {\n let t = type._start;\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index))\n }\n index -= t.length;\n }\n t = t.right;\n }\n return createRelativePosition(type, null)\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nconst writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item } = rpos;\n if (item !== null) {\n writeVarUint(encoder, 0);\n writeID(encoder, item);\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n writeUint8(encoder, 1);\n writeVarString(encoder, tname);\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n writeUint8(encoder, 2);\n writeID(encoder, type);\n } else {\n throw unexpectedCase()\n }\n return encoder\n};\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition|null}\n *\n * @function\n */\nconst readRelativePosition = decoder => {\n let type = null;\n let tname = null;\n let itemID = null;\n switch (readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder);\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = readVarString(decoder);\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder);\n }\n }\n return new RelativePosition(type, tname, itemID)\n};\n\n/**\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nconst createAbsolutePositionFromRelativePosition = (rpos, doc) => {\n const store = doc.store;\n const rightID = rpos.item;\n const typeID = rpos.type;\n const tname = rpos.tname;\n let type = null;\n let index = 0;\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followRedone(store, rightID);\n const right = res.item;\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType} */ (right.parent);\n if (type._item === null || !type._item.deleted) {\n index = right.deleted || !right.countable ? 0 : res.diff;\n let n = right.left;\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length;\n }\n n = n.left;\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname);\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followRedone(store, typeID);\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type;\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw unexpectedCase()\n }\n index = type._length;\n }\n return createAbsolutePosition(type, index)\n};\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n *\n * @function\n */\nconst compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type)\n);\n\nclass Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds;\n /**\n * State Map\n * @type {Map}\n */\n this.sv = sv;\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nconst equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients;\n const ds2 = snap2.ds.clients;\n const sv1 = snap1.sv;\n const sv2 = snap2.sv;\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || [];\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i];\n const dsitem2 = dsitems2[i];\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n */\nconst encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds);\n writeStateVector(encoder, snapshot.sv);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nconst encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DefaultDSEncoder());\n\n/**\n * @param {Uint8Array} buf\n * @param {AbstractDSDecoder} [decoder]\n * @return {Snapshot}\n */\nconst decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n};\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nconst decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(createDecoder(buf)));\n\n/**\n * @param {DeleteSet} ds\n * @param {Map} sm\n * @return {Snapshot}\n */\nconst createSnapshot = (ds, sm) => new Snapshot(ds, sm);\n\nconst emptySnapshot = createSnapshot(createDeleteSet(), new Map());\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nconst snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store));\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nconst isVisible = (item, snapshot) => snapshot === undefined ? !item.deleted : (\n snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id)\n);\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nconst splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, create);\n const store = transaction.doc.store;\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n });\n iterateDeletedStructs(transaction, snapshot.ds, item => {});\n meta.add(snapshot);\n }\n};\n\nclass StructStore {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n /**\n * Store incompleted struct reads here\n * `i` denotes to the next read operation\n * We could shift the array of refs instead, but shift is incredible\n * slow in Chrome for arrays with more than 100k elements\n * @see tryResumePendingStructRefs\n * @type {Map}>}\n */\n this.pendingClientsStructRefs = new Map();\n /**\n * Stack of pending structs waiting for struct dependencies\n * Maximum length of stack is structReaders.size\n * @type {Array}\n */\n this.pendingStack = [];\n /**\n * @type {Array}\n */\n this.pendingDeleteReaders = [];\n }\n}\n\n/**\n * Return the states as a Map.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map}\n *\n * @public\n * @function\n */\nconst getStateVector = store => {\n const sm = new Map();\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1];\n sm.set(client, struct.id.clock + struct.length);\n });\n return sm\n};\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nconst getState = (store, client) => {\n const structs = store.clients.get(client);\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1];\n return lastStruct.id.clock + lastStruct.length\n};\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nconst addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client);\n if (structs === undefined) {\n structs = [];\n store.clients.set(struct.id.client, structs);\n } else {\n const lastStruct = structs[structs.length - 1];\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw unexpectedCase()\n }\n }\n structs.push(struct);\n};\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nconst findIndexSS = (structs, clock) => {\n let left = 0;\n let right = structs.length - 1;\n let mid = structs[right];\n let midclock = mid.id.clock;\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = floor((clock / (midclock + mid.length - 1)) * right); // pivoting the search\n while (left <= right) {\n mid = structs[midindex];\n midclock = mid.id.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n midindex = floor((left + right) / 2);\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw unexpectedCase()\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nconst find = (store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n return structs[findIndexSS(structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nconst getItem = /** @type {function(StructStore,ID):Item} */ (find);\n\n/**\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clock\n */\nconst findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock);\n const struct = structs[index];\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n return index + 1\n }\n return index\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(id.client));\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n const index = findIndexSS(structs, id.clock);\n const struct = structs[index];\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1));\n }\n return struct\n};\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nconst replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array} */ (store.clients.get(struct.id.client));\n structs[findIndexSS(structs, struct.id.clock)] = newStruct;\n};\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len;\n let index = findIndexCleanStart(transaction, structs, clockStart);\n let struct;\n do {\n struct = structs[index++];\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd);\n }\n f(struct);\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n};\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const map = y.define('map', YMap)\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * y.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nclass Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet();\n /**\n * Holds the state before the transaction started.\n * @type {Map}\n */\n this.beforeState = getStateVector(doc.store);\n /**\n * Holds the state after the transaction.\n * @type {Map}\n */\n this.afterState = new Map();\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map,Set>}\n */\n this.changed = new Map();\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map,Array>}\n */\n this.changedParentTypes = new Map();\n /**\n * @type {Array}\n */\n this._mergeStructs = [];\n /**\n * @type {any}\n */\n this.origin = origin;\n /**\n * Stores meta information on the transaction\n * @type {Map}\n */\n this.meta = new Map();\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local;\n }\n}\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nconst writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet);\n writeStructsFromTransaction(encoder, transaction);\n writeDeleteSet(encoder, transaction.deleteSet);\n return true\n};\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType} type\n * @param {string|null} parentSub\n */\nconst addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item;\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n setIfUndefined(transaction.changed, type, create).add(parentSub);\n }\n};\n\n/**\n * @param {Array} structs\n * @param {number} pos\n */\nconst tryToMergeWithLeft = (structs, pos) => {\n const left = structs[pos - 1];\n const right = structs[pos];\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n structs.splice(pos, 1);\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left));\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n const endDeleteItemClock = deleteItem.clock + deleteItem.len;\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si];\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false);\n }\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiecy and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1));\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[--si]\n ) {\n tryToMergeWithLeft(structs, si);\n }\n }\n });\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter);\n tryMergeDeleteSet(ds, store);\n};\n\n/**\n * @param {Array} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i];\n const doc = transaction.doc;\n const store = doc.store;\n const ds = transaction.deleteSet;\n const mergeStructs = transaction._mergeStructs;\n try {\n sortAndMergeDeleteSet(ds);\n transaction.afterState = getStateVector(transaction.doc.store);\n doc._transaction = null;\n doc.emit('beforeObserverCalls', [transaction, doc]);\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array}\n */\n const fs = [];\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs);\n }\n })\n );\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) =>\n fs.push(() => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._item === null || !type._item.deleted) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n );\n events\n .forEach(event => {\n event.currentTarget = type;\n });\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction);\n }\n })\n );\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]));\n });\n callAll(fs, []);\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter);\n }\n tryMergeDeleteSet(ds, store);\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0;\n if (beforeClock !== clock) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = max(findIndexSS(structs, beforeClock), 1);\n for (let i = structs.length - 1; i >= firstChangePos; i--) {\n tryToMergeWithLeft(structs, i);\n }\n }\n });\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = 0; i < mergeStructs.length; i++) {\n const { client, clock } = mergeStructs[i].id;\n const structs = /** @type {Array} */ (store.clients.get(client));\n const replacedStructPos = findIndexSS(structs, clock);\n if (replacedStructPos + 1 < structs.length) {\n tryToMergeWithLeft(structs, replacedStructPos + 1);\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLeft(structs, replacedStructPos);\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n doc.clientID = generateNewClientId();\n print(ORANGE, BOLD, '[yjs] ', UNBOLD, RED, 'Changed the client-id because another client seems to be using it.');\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc]);\n if (doc._observers.has('update')) {\n const encoder = new DefaultUpdateEncoder();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = [];\n doc.emit('afterAllTransactions', [doc, transactionCleanups]);\n } else {\n cleanupTransactions(transactionCleanups, i + 1);\n }\n }\n }\n};\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @param {Doc} doc\n * @param {function(Transaction):void} f\n * @param {any} [origin=true]\n *\n * @function\n */\nconst transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups;\n let initialCall = false;\n if (doc._transaction === null) {\n initialCall = true;\n doc._transaction = new Transaction(doc, origin, local);\n transactionCleanups.push(doc._transaction);\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc]);\n }\n doc.emit('beforeTransaction', [doc._transaction, doc]);\n }\n try {\n f(doc._transaction);\n } finally {\n if (initialCall && transactionCleanups[0] === doc._transaction) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0);\n }\n }\n};\n\nclass StackItem {\n /**\n * @param {DeleteSet} ds\n * @param {Map} beforeState\n * @param {Map} afterState\n */\n constructor (ds, beforeState, afterState) {\n this.ds = ds;\n this.beforeState = beforeState;\n this.afterState = afterState;\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map();\n }\n}\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array} stack\n * @param {string} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Whether a change happened\n * @type {StackItem?}\n */\n let result = null;\n const doc = undoManager.doc;\n const scope = undoManager.scope;\n transact(doc, transaction => {\n while (stack.length > 0 && result === null) {\n const store = doc.store;\n const stackItem = /** @type {StackItem} */ (stack.pop());\n /**\n * @type {Set}\n */\n const itemsToRedo = new Set();\n /**\n * @type {Array}\n */\n const itemsToDelete = [];\n let performedChange = false;\n stackItem.afterState.forEach((endClock, client) => {\n const startClock = stackItem.beforeState.get(client) || 0;\n const len = endClock - startClock;\n // @todo iterateStructs should not need the structs parameter\n const structs = /** @type {Array} */ (store.clients.get(client));\n if (startClock !== endClock) {\n // make sure structs don't overlap with the range of created operations [stackItem.start, stackItem.start + stackItem.end)\n // this must be executed before deleted structs are iterated.\n getItemCleanStart(transaction, createID(client, startClock));\n if (endClock < getState(doc.store, client)) {\n getItemCleanStart(transaction, createID(client, endClock));\n }\n iterateStructs(transaction, structs, startClock, len, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id);\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff));\n }\n if (item.length > len) {\n getItemCleanStart(transaction, createID(item.id.client, endClock));\n }\n struct = item;\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct);\n }\n }\n });\n }\n });\n iterateDeletedStructs(transaction, stackItem.ds, struct => {\n const id = struct.id;\n const clock = id.clock;\n const client = id.client;\n const startClock = stackItem.beforeState.get(client) || 0;\n const endClock = stackItem.afterState.get(client) || 0;\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in [stackItem.start, stackItem.start + stackItem.end) because they were created and deleted in the same capture interval.\n !(clock >= startClock && clock < endClock)\n ) {\n itemsToRedo.add(struct);\n }\n });\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo) !== null || performedChange;\n });\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i];\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction);\n performedChange = true;\n }\n }\n result = stackItem;\n if (result != null) {\n undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType }, undoManager]);\n }\n }\n }, undoManager);\n return result\n};\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter whan an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set} [UndoManagerOptions.trackedOrigins=new Set([null])]\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {Observable<'stack-item-added'|'stack-item-popped'>}\n */\nclass UndoManager extends Observable {\n /**\n * @param {AbstractType|Array>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, { captureTimeout, deleteFilter = () => true, trackedOrigins = new Set([null]) } = {}) {\n if (captureTimeout == null) {\n captureTimeout = 500;\n }\n super();\n this.scope = typeScope instanceof Array ? typeScope : [typeScope];\n this.deleteFilter = deleteFilter;\n trackedOrigins.add(this);\n this.trackedOrigins = trackedOrigins;\n /**\n * @type {Array}\n */\n this.undoStack = [];\n /**\n * @type {Array}\n */\n this.redoStack = [];\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false;\n this.redoing = false;\n this.doc = /** @type {Doc} */ (this.scope[0].doc);\n this.lastChange = 0;\n this.doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n // Only track certain transactions\n if (!this.scope.some(type => transaction.changedParentTypes.has(type)) || (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))) {\n return\n }\n const undoing = this.undoing;\n const redoing = this.redoing;\n const stack = undoing ? this.redoStack : this.undoStack;\n if (undoing) {\n this.stopCapturing(); // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.redoStack = [];\n }\n const beforeState = transaction.beforeState;\n const afterState = transaction.afterState;\n const now = getUnixTime();\n if (now - this.lastChange < captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1];\n lastOp.ds = mergeDeleteSets([lastOp.ds, transaction.deleteSet]);\n lastOp.afterState = afterState;\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, beforeState, afterState));\n }\n if (!undoing && !redoing) {\n this.lastChange = now;\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true);\n }\n });\n this.emit('stack-item-added', [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo' }, this]);\n });\n }\n\n clear () {\n this.doc.transact(transaction => {\n /**\n * @param {StackItem} stackItem\n */\n const clearItem = stackItem => {\n iterateDeletedStructs(transaction, stackItem.ds, item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false);\n }\n });\n };\n this.undoStack.forEach(clearItem);\n this.redoStack.forEach(clearItem);\n });\n this.undoStack = [];\n this.redoStack = [];\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0;\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true;\n let res;\n try {\n res = popStackItem(this, this.undoStack, 'undo');\n } finally {\n this.undoing = false;\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true;\n let res;\n try {\n res = popStackItem(this, this.redoStack, 'redo');\n } finally {\n this.redoing = false;\n }\n return res\n }\n}\n\n/**\n * YEvent describes the changes on a YType.\n */\nclass YEvent {\n /**\n * @param {AbstractType} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {AbstractType}\n */\n this.target = target;\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType}\n */\n this.currentTarget = target;\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction;\n /**\n * @type {Object|null}\n */\n this._changes = null;\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n // @ts-ignore _item is defined because target is integrated\n return getPathTo(this.currentTarget, this.target)\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * @return {{added:Set,deleted:Set,delta:Array<{insert:Array}|{delete:number}|{retain:number}>}}\n */\n get changes () {\n let changes = this._changes;\n if (changes === null) {\n const target = this.target;\n const added = create();\n const deleted = create();\n /**\n * @type {Array<{insert:Array}|{delete:number}|{retain:number}>}\n */\n const delta = [];\n /**\n * @type {Map}\n */\n const keys = new Map();\n changes = {\n added, deleted, delta, keys\n };\n const changed = /** @type Set */ (this.transaction.changed.get(target));\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null;\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp);\n }\n };\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp();\n lastOp = { delete: 0 };\n }\n lastOp.delete += item.length;\n deleted.add(item);\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp();\n lastOp = { insert: [] };\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent());\n added.add(item);\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp();\n lastOp = { retain: 0 };\n }\n lastOp.retain += item.length;\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp();\n }\n }\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key));\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action;\n let oldValue;\n if (this.adds(item)) {\n let prev = item.left;\n while (prev !== null && this.adds(prev)) {\n prev = prev.left;\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete';\n oldValue = last(prev.content.getContent());\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update';\n oldValue = last(prev.content.getContent());\n } else {\n action = 'add';\n oldValue = undefined;\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete';\n oldValue = last(/** @type {Item} */ item.content.getContent());\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue });\n }\n });\n this._changes = changes;\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType} parent\n * @param {AbstractType} child target\n * @return {Array} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = [];\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub);\n } else {\n // parent is array-ish\n let i = 0;\n let c = /** @type {AbstractType} */ (child._item.parent)._start;\n while (c !== child._item && c !== null) {\n if (!c.deleted) {\n i++;\n }\n c = c.right;\n }\n path.unshift(i);\n }\n child = /** @type {AbstractType} */ (child._item.parent);\n }\n return path\n};\n\nconst maxSearchMarker = 80;\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0;\n\nclass ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true;\n this.p = p;\n this.index = index;\n this.timestamp = globalSearchMarkerTimestamp++;\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++; };\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false;\n marker.p = p;\n p.marker = true;\n marker.index = index;\n marker.timestamp = globalSearchMarkerTimestamp++;\n};\n\n/**\n * @param {Array} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b);\n overwriteMarker(marker, p, index);\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index);\n searchMarker.push(pm);\n return pm\n }\n};\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType} yarray\n * @param {number} index\n */\nconst findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => abs(index - a.index) < abs(index - b.index) ? a : b);\n let p = yarray._start;\n let pindex = 0;\n if (marker !== null) {\n p = marker.p;\n pindex = marker.index;\n refreshMarkerTimestamp(marker); // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length;\n }\n p = p.right;\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && abs(marker.index - pindex) < /** @type {YText|YArray} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex);\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n};\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nconst updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i];\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p;\n p.marker = false;\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left;\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length;\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1);\n continue\n }\n m.p = p;\n p.marker = true;\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = max(index, m.index + len);\n }\n }\n};\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType} t\n * @return {Array}\n */\nconst getTypeChildren = t => {\n let s = t._start;\n const arr = [];\n while (s) {\n arr.push(s);\n s = s.right;\n }\n return arr\n};\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nconst callTypeObservers = (type, transaction, event) => {\n const changedType = type;\n const changedParentTypes = transaction.changedParentTypes;\n while (true) {\n // @ts-ignore\n setIfUndefined(changedParentTypes, type, () => []).push(event);\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType} */ (type._item.parent);\n }\n callEventHandlerListeners(changedType._eH, event, transaction);\n};\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nclass AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null;\n /**\n * @type {Map}\n */\n this._map = new Map();\n /**\n * @type {Item|null}\n */\n this._start = null;\n /**\n * @type {Doc|null}\n */\n this.doc = null;\n this._length = 0;\n /**\n * Event handlers\n * @type {EventHandler}\n */\n this._eH = createEventHandler();\n /**\n * Deep event handlers\n * @type {EventHandler,Transaction>}\n */\n this._dEH = createEventHandler();\n /**\n * @type {null | Array}\n */\n this._searchMarker = null;\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y;\n this._item = item;\n }\n\n /**\n * @return {AbstractType}\n */\n _copy () {\n throw methodUnimplemented()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0;\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f);\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f);\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType} type\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArray = type => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType} type\n * @param {Snapshot} snapshot\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArraySnapshot = (type, snapshot) => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {AbstractType} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nconst typeListForEach = (type, f) => {\n let index = 0;\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type);\n }\n }\n n = n.right;\n }\n};\n\n/**\n * @template C,R\n * @param {AbstractType} type\n * @param {function(C,number,AbstractType):R} f\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListMap = (type, f) => {\n /**\n * @type {Array}\n */\n const result = [];\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type));\n });\n return result\n};\n\n/**\n * @param {AbstractType} type\n * @return {IterableIterator}\n *\n * @private\n * @function\n */\nconst typeListCreateIterator = type => {\n let n = type._start;\n /**\n * @type {Array|null}\n */\n let currentContent = null;\n let currentContentIndex = 0;\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right;\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent();\n currentContentIndex = 0;\n n = n.right; // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++];\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null;\n }\n return {\n done: false,\n value\n }\n }\n }\n};\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nconst typeListGet = (type, index) => {\n const marker = findMarker(type, index);\n let n = type._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length;\n }\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {Item?} referenceItem\n * @param {Array|Array|boolean|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const store = doc.store;\n const right = referenceItem === null ? parent._start : referenceItem.right;\n /**\n * @type {Array|number>}\n */\n let jsonContent = [];\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent));\n left.integrate(transaction, 0);\n jsonContent = [];\n }\n };\n content.forEach(c => {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c);\n break\n default:\n packJsonContent();\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))));\n left.integrate(transaction, 0);\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c));\n left.integrate(transaction, 0);\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n });\n packJsonContent();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {Array|Array|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev; // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0;\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n break\n }\n index -= n.length;\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nconst typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index;\n const startLength = length;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n index -= n.length;\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length));\n }\n n.delete(transaction);\n length -= n.length;\n }\n n = n.right;\n }\n if (length > 0) {\n throw create$1('array length exceeded')\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nconst typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key);\n if (c !== undefined) {\n c.delete(transaction);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Object|number|Array|string|Uint8Array|AbstractType} value\n *\n * @private\n * @function\n */\nconst typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let content;\n if (value == null) {\n content = new ContentAny([value]);\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value]);\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value));\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value);\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0);\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGet = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType} parent\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAll = (parent) => {\n /**\n * @type {Object}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst typeMapHas = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n};\n\n/**\n * @param {Map} map\n * @return {IterableIterator>}\n *\n * @private\n * @function\n */\nconst createMapIterator = map => iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted);\n\n/**\n * @module YArray\n */\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n */\nclass YArrayEvent extends YEvent {\n /**\n * @param {YArray} yarray The changed type\n * @param {Transaction} transaction The transaction object\n */\n constructor (yarray, transaction) {\n super(yarray, transaction);\n this._transaction = transaction;\n }\n}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YArray extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array?}\n * @private\n */\n this._prelimContent = [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YArray()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction));\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, 0, ...content);\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content);\n }\n\n /**\n * Preppends content to this YArray.\n *\n * @param {Array} content Array of content to preppend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, length);\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template T,M\n * @param {function(T,number,YArray):M} f Function that produces an element of the new Array\n * @return {Array} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {function(T,number,YArray):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYArray = decoder => new YArray();\n\n/**\n * @template T\n * Event that describes the changes on a YMap.\n */\nclass YMapEvent extends YEvent {\n /**\n * @param {YMap} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction);\n this.keysChanged = subs;\n }\n}\n\n/**\n * @template T number|string|Object|Array|Uint8Array\n * A shared Map implementation.\n *\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YMap extends AbstractType {\n /**\n *\n * @param {Iterable=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super();\n /**\n * @type {Map?}\n * @private\n */\n this._prelimContent = null;\n\n if (entries === undefined) {\n this._prelimContent = new Map();\n } else {\n this._prelimContent = new Map(entries);\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value);\n });\n this._prelimContent = null;\n }\n\n _copy () {\n return new YMap()\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs));\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1];\n map[key] = v instanceof AbstractType ? v.toJSON() : v;\n }\n });\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n keys () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n values () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator}\n */\n entries () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => [v[0], v[1].content.getContent()[v[1].length - 1]])\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(T,string,YMap):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this);\n }\n });\n return map\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).delete(key);\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {T} value The value of the element to add\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, value);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).set(key, value);\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {T|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYMap = decoder => new YMap();\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && equalFlat(a, b));\n\nclass ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left;\n this.right = right;\n this.index = index;\n this.currentAttributes = currentAttributes;\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n unexpectedCase();\n }\n switch (this.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!this.right.deleted) {\n this.index += this.right.length;\n }\n break\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content));\n }\n break\n }\n this.left = this.right;\n this.right = this.right.right;\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count));\n }\n pos.index += pos.right.length;\n count -= pos.right.length;\n }\n break\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content));\n }\n break\n }\n pos.left = pos.right;\n pos.right = pos.right.right;\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index) => {\n const currentAttributes = new Map();\n const marker = findMarker(parent, index);\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes);\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes);\n return findNextPosition(transaction, pos, index)\n }\n};\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key);\n }\n currPos.forward();\n }\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let left = currPos.left;\n const right = currPos.right;\n negatedAttributes.forEach((val, key) => {\n left = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n left.integrate(transaction, 0);\n });\n};\n\n/**\n * @param {Map} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format;\n if (value === null) {\n currentAttributes.delete(key);\n } else {\n currentAttributes.set(key, value);\n }\n};\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] || null, /** @type {ContentFormat} */ (currPos.right.content).value))) ; else {\n break\n }\n currPos.forward();\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n * @return {Map}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const negatedAttributes = new Map();\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key];\n const currentVal = currPos.currentAttributes.get(key) || null;\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal);\n const { left, right } = currPos;\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n }\n return negatedAttributes\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object} text\n * @param {Object} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null;\n }\n });\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : new ContentEmbed(text);\n let { left, right, index } = currPos;\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength());\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content);\n right.integrate(transaction, 0);\n currPos.right = right;\n currPos.index = index;\n currPos.forward();\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n while (length > 0 && currPos.right !== null) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key);\n } else {\n negatedAttributes.set(key, value);\n }\n currPos.right.delete(transaction);\n }\n break\n }\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n break\n }\n }\n currPos.forward();\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = '';\n for (; length > 0; length--) {\n newlines += '\\n';\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} end exclusive end, automatically iterates to the next Content Item\n * @param {Map} startAttributes\n * @param {Map} endAttributes This attribute is modified!\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, end, startAttributes, endAttributes) => {\n while (end && end.content.constructor !== ContentString && end.content.constructor !== ContentEmbed) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n updateCurrentAttributes(endAttributes, /** @type {ContentFormat} */ (end.content));\n }\n end = end.right;\n }\n let cleanups = 0;\n while (start !== end) {\n if (!start.deleted) {\n const content = start.content;\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content);\n if ((endAttributes.get(key) || null) !== value || (startAttributes.get(key) || null) === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction);\n cleanups++;\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right);\n }\n return cleanups\n};\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || (item.right.content.constructor !== ContentString && item.right.content.constructor !== ContentEmbed))) {\n item = item.right;\n }\n const attrs = new Set();\n // iterate back until a content item is found\n while (item && (item.deleted || (item.content.constructor !== ContentString && item.content.constructor !== ContentEmbed))) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key;\n if (attrs.has(key)) {\n item.delete(transaction);\n } else {\n attrs.add(key);\n }\n }\n item = item.left;\n }\n};\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nconst cleanupYTextFormatting = type => {\n let res = 0;\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start);\n let end = type._start;\n let startAttributes = create$2();\n const currentAttributes = copy(startAttributes);\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content));\n break\n case ContentEmbed:\n case ContentString:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes);\n startAttributes = copy(currentAttributes);\n start = end;\n break\n }\n }\n end = end.right;\n }\n });\n return res\n};\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length;\n const startAttrs = copy(currPos.currentAttributes);\n const start = currPos.right;\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n currPos.right.delete(transaction);\n break\n }\n }\n currPos.forward();\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, copy(currPos.currentAttributes));\n }\n const parent = /** @type {AbstractType} */ (/** @type {Item} */ (currPos.left || currPos.right).parent);\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length);\n }\n return currPos\n};\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @typedef {Object} DeltaItem\n * @property {number|undefined} DeltaItem.delete\n * @property {number|undefined} DeltaItem.retain\n * @property {string|undefined} DeltaItem.string\n * @property {Object} DeltaItem.attributes\n */\n\n/**\n * Event that describes the changes on a YText type.\n */\nclass YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n */\n constructor (ytext, transaction) {\n super(ytext, transaction);\n /**\n * @type {Array|null}\n */\n this._delta = null;\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc);\n this._delta = [];\n transact(y, transaction => {\n const delta = /** @type {Array} */ (this._delta);\n const currentAttributes = new Map(); // saves all current attributes for insert\n const oldAttributes = new Map();\n let item = this.target._start;\n /**\n * @type {string?}\n */\n let action = null;\n /**\n * @type {Object}\n */\n const attributes = {}; // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = '';\n let retain = 0;\n let deleteLen = 0;\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op;\n switch (action) {\n case 'delete':\n op = { delete: deleteLen };\n deleteLen = 0;\n break\n case 'insert':\n op = { insert };\n if (currentAttributes.size > 0) {\n op.attributes = {};\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value;\n }\n });\n }\n insert = '';\n break\n case 'retain':\n op = { retain };\n if (Object.keys(attributes).length > 0) {\n op.attributes = {};\n for (const key in attributes) {\n op.attributes[key] = attributes[key];\n }\n }\n retain = 0;\n break\n }\n delta.push(op);\n action = null;\n }\n };\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp();\n action = 'insert';\n insert = /** @type {ContentEmbed} */ (item.content).embed;\n addOp();\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += 1;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += 1;\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp();\n action = 'insert';\n }\n insert += /** @type {ContentString} */ (item.content).str;\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += item.length;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += item.length;\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content);\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (equalAttrs(value, (oldAttributes.get(key) || null))) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else {\n item.delete(transaction);\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value);\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n attributes[key] = curVal;\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (value === null) {\n attributes[key] = value;\n } else {\n delete attributes[key];\n }\n } else {\n item.delete(transaction);\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp();\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content));\n }\n break\n }\n }\n item = item.right;\n }\n addOp();\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1];\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop();\n } else {\n break\n }\n }\n });\n }\n return this._delta\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType\n */\nclass YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super();\n /**\n * Array of pending operations on this type\n * @type {Array?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n try {\n /** @type {Array} */ (this._pending).forEach(f => f());\n } catch (e) {\n console.error(e);\n }\n this._pending = null;\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n const event = new YTextEvent(this, transaction);\n const doc = transaction.doc;\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local) {\n // check if another formatting item was inserted\n let foundFormattingItem = false;\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0;\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (!item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n if (foundFormattingItem) {\n break\n }\n }\n if (!foundFormattingItem) {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || foundFormattingItem) {\n return\n }\n if (item.parent === this && item.content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n }\n transact(doc, (t) => {\n if (foundFormattingItem) {\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n cleanupYTextFormatting(this);\n } else {\n // If no formatting attribute was inserted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n iterateDeletedStructs(t, t.deleteSet, item => {\n if (item instanceof GC) {\n return\n }\n if (item.parent === this) {\n cleanupContextlessFormattingGap(t, item);\n }\n });\n }\n });\n }\n callTypeObservers(this, transaction, event);\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = '';\n /**\n * @type {Item|null}\n */\n let n = this._start;\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str;\n }\n n = n.right;\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} [opts]\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map());\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i];\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert;\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {});\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {});\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete);\n }\n }\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.applyDelta(delta));\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array}\n */\n const ops = [];\n const currentAttributes = new Map();\n const doc = /** @type {Doc} */ (this.doc);\n let str = '';\n let n = this._start;\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object}\n */\n const attributes = {};\n let addAttributes = false;\n currentAttributes.forEach((value, key) => {\n addAttributes = true;\n attributes[key] = value;\n });\n /**\n * @type {Object}\n */\n const op = { insert: str };\n if (addAttributes) {\n op.attributes = attributes;\n }\n ops.push(op);\n str = '';\n }\n }\n // snapshots are merged again after the transaction, so we need to keep the\n // transalive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot);\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot);\n }\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange');\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'removed') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' });\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'added') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' });\n }\n } else if (cur !== undefined) {\n packStr();\n currentAttributes.delete('ychange');\n }\n str += /** @type {ContentString} */ (n.content).str;\n break\n }\n case ContentEmbed: {\n packStr();\n /**\n * @type {Object}\n */\n const op = {\n insert: /** @type {ContentEmbed} */ (n.content).embed\n };\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object} */ ({});\n op.attributes = attrs;\n currentAttributes.forEach((value, key) => {\n attrs[key] = value;\n });\n }\n ops.push(op);\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr();\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content));\n }\n break\n }\n }\n n = n.right;\n }\n packStr();\n }, splitSnapshotAffectedStructs);\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (!attributes) {\n attributes = {};\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v; });\n }\n insertText(transaction, this, pos, text, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insert(index, text, attributes));\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object} embed The Object that represents the embed.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes = {}) {\n if (embed.constructor !== Object) {\n throw new Error('Embed must be an Object')\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n insertText(transaction, this, pos, embed, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes));\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index), length);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.delete(index, length));\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.format(index, length, attributes));\n }\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nconst readYText = decoder => new YText();\n\n/**\n * @module YXml\n */\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable}\n */\nclass YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f;\n this._root = root;\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start);\n this._firstCall = true;\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode;\n let type = /** @type {any} */ (n.content).type;\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type;\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start;\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right;\n break\n } else if (n.parent === this._root) {\n n = null;\n } else {\n n = /** @type {AbstractType} */ (n.parent)._item;\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false;\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n;\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType\n */\nclass YXmlFragment extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array|null}\n */\n this._prelimContent = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase();\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query);\n const next = iterator.next();\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase();\n // @ts-ignore\n return Array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction));\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment();\n if (binding !== undefined) {\n binding._createAssociation(fragment, this);\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null);\n });\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content);\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length);\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nconst readYXmlFragment = decoder => new YXmlFragment();\n\n/**\n * An YXmlElement imitates the behavior of a\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}.\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n */\nclass YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super();\n this.nodeName = nodeName;\n /**\n * @type {Map|null}\n */\n this._prelimAttrs = new Map();\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value);\n });\n this._prelimAttrs = null;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes();\n const stringBuilder = [];\n const keys = [];\n for (const key in attrs) {\n keys.push(key);\n }\n keys.sort();\n const keysLen = keys.length;\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i];\n stringBuilder.push(key + '=\"' + attrs[key] + '\"');\n }\n const nodeName = this.nodeName.toLocaleLowerCase();\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : '';\n return `<${nodeName}${attrsString}>${super.toString()}`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).delete(attributeName);\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {String} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).set(attributeName, attributeValue);\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {String} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @param {Snapshot} [snapshot]\n * @return {Object} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes (snapshot) {\n return typeMapGetAll(this)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName);\n const attrs = this.getAttributes();\n for (const key in attrs) {\n dom.setAttribute(key, attrs[key]);\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding));\n });\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID);\n encoder.writeKey(this.nodeName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nconst readYXmlElement = decoder => new YXmlElement(decoder.readKey());\n\n/**\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nclass YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlFragment} target The target on which the event is created.\n * @param {Set} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set}\n */\n this.attributesChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.attributesChanged.add(sub);\n }\n });\n }\n}\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap}\n */\nclass YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super();\n /**\n * @type {string}\n */\n this.hookName = hookName;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName];\n let dom;\n if (hook !== undefined) {\n dom = hook.createDom(this);\n } else {\n dom = document.createElement(this.hookName);\n }\n dom.setAttribute('data-yjs-hook', this.hookName);\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID);\n encoder.writeKey(this.hookName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nconst readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey());\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nclass YXmlText extends YText {\n _copy () {\n return new YXmlText()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString());\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = [];\n for (const nodeName in delta.attributes) {\n const attrs = [];\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] });\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1);\n nestedNodes.push({ nodeName, attrs });\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1);\n // now convert to dom string\n let str = '';\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i];\n str += `<${node.nodeName}`;\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j];\n str += ` ${attr.key}=\"${attr.value}\"`;\n }\n str += '>';\n }\n str += delta.insert;\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += ``;\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nconst readYXmlText = decoder => new YXmlText();\n\nclass AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id;\n this.length = length;\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw methodUnimplemented()\n }\n}\n\nconst structGCRefNumber = 0;\n\n/**\n * @private\n */\nclass GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.length -= offset;\n }\n addStruct(transaction.doc.store, this);\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber);\n encoder.writeLen(this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\nclass ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentBinary}\n */\nconst readContentBinary = decoder => new ContentBinary(decoder.readBuf());\n\nclass ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset);\n this.len = offset;\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len);\n item.markDeleted();\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentDeleted}\n */\nconst readContentDeleted = decoder => new ContentDeleted(decoder.readLen());\n\n/**\n * @private\n */\nclass ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentEmbed}\n */\nconst readContentEmbed = decoder => new ContentEmbed(decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key;\n this.value = value;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} offset\n * @return {ContentFormat}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n /** @type {AbstractType} */ (item.parent)._searchMarker = null;\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key);\n encoder.writeJSON(this.value);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentFormat}\n */\nconst readContentFormat = decoder => new ContentFormat(decoder.readString(), decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentJSON {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c));\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentJSON}\n */\nconst readContentJSON = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n const c = decoder.readString();\n if (c === 'undefined') {\n cs.push(undefined);\n } else {\n cs.push(JSON.parse(c));\n }\n }\n return new ContentJSON(cs)\n};\n\nclass ContentAny {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeAny(c);\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentAny}\n */\nconst readContentAny = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny());\n }\n return new ContentAny(cs)\n};\n\n/**\n * @private\n */\nclass ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset));\n this.str = this.str.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset));\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentString}\n */\nconst readContentString = decoder => new ContentString(decoder.readString());\n\n/**\n * @type {Array>}\n * @private\n */\nconst typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n];\n\nconst YArrayRefID = 0;\nconst YMapRefID = 1;\nconst YTextRefID = 2;\nconst YXmlElementRefID = 3;\nconst YXmlFragmentRefID = 4;\nconst YXmlHookRefID = 5;\nconst YXmlTextRefID = 6;\n\n/**\n * @private\n */\nclass ContentType {\n /**\n * @param {AbstractType} type\n */\n constructor (type) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item);\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start;\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // Whis will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item);\n }\n item = item.right;\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // same as above\n transaction._mergeStructs.push(item);\n }\n });\n transaction.changed.delete(this.type);\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start;\n while (item !== null) {\n item.gc(store, true);\n item = item.right;\n }\n this.type._start = null;\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true);\n item = item.left;\n }\n });\n this.type._map = new Map();\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentType}\n */\nconst readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder));\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nconst followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id;\n let diff = 0;\n let item;\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff);\n }\n item = getItem(store, nextID);\n diff = nextID.clock - item.id.clock;\n nextID = item.redone;\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n};\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nconst keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep;\n item = /** @type {AbstractType} */ (item.parent)._item;\n }\n};\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nconst splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id;\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n );\n if (leftItem.deleted) {\n rightItem.markDeleted();\n }\n if (leftItem.keep) {\n rightItem.keep = true;\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff);\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem;\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem;\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem);\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem);\n }\n leftItem.length = diff;\n return rightItem\n};\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set} redoitems\n *\n * @return {Item|null}\n *\n * @private\n */\nconst redoItem = (transaction, item, redoitems) => {\n const doc = transaction.doc;\n const store = doc.store;\n const ownClientID = doc.clientID;\n const redone = item.redone;\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType} */ (item.parent)._item;\n /**\n * @type {Item|null}\n */\n let left;\n /**\n * @type {Item|null}\n */\n let right;\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left;\n right = item;\n } else {\n // Is a map item. Insert as current value\n left = item;\n while (left.right !== null) {\n left = left.right;\n if (left.id.client !== ownClientID) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n }\n if (left.right !== null) {\n left = /** @type {Item} */ (/** @type {AbstractType} */ (item.parent)._map.get(item.parentSub));\n }\n right = null;\n }\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true && parentItem.redone === null) {\n // try to undo parent if it will be undone anyway\n if (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems) === null) {\n return null\n }\n }\n if (parentItem !== null && parentItem.redone !== null) {\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone);\n }\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left;\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone);\n }\n if (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace;\n break\n }\n left = left.left;\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right;\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone);\n }\n if (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace;\n break\n }\n right = right.right;\n }\n }\n const nextClock = getState(store, ownClientID);\n const nextId = createID(ownClientID, nextClock);\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentItem === null ? item.parent : /** @type {ContentType} */ (parentItem.content).type,\n item.parentSub,\n item.content.copy()\n );\n item.redone = nextId;\n keepItem(redoneItem, true);\n redoneItem.integrate(transaction, 0);\n return redoneItem\n};\n\n/**\n * Abstract class that represents any content.\n */\nclass Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength());\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin;\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left;\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right;\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin;\n /**\n * @type {AbstractType|ID|null}\n */\n this.parent = parent;\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub;\n /**\n * If this type's effect is reundone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null;\n /**\n * @type {AbstractContent}\n */\n this.content = content;\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? BIT2 : 0;\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & BIT4) > 0) !== isMarked) {\n this.info ^= BIT4;\n }\n }\n\n get marker () {\n return (this.info & BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= BIT1;\n }\n }\n\n get countable () {\n return (this.info & BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= BIT3;\n }\n }\n\n markDeleted () {\n this.info |= BIT3;\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin);\n this.origin = this.left.lastId;\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin);\n this.rightOrigin = this.right.id;\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null;\n }\n // only set parent if this shouldn't be garbage collected\n if (!this.parent) {\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent;\n this.parentSub = this.left.parentSub;\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent;\n this.parentSub = this.right.parentSub;\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent);\n if (parentItem.constructor === GC) {\n this.parent = null;\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type;\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1));\n this.origin = this.left.lastId;\n this.content = this.content.splice(offset);\n this.length -= offset;\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left;\n\n /**\n * @type {Item|null}\n */\n let o;\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right;\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (o !== null && o.left !== null) {\n o = o.left;\n }\n } else {\n o = /** @type {AbstractType} */ (this.parent)._start;\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set}\n */\n const conflictingItems = new Set();\n /**\n * @type {Set}\n */\n const itemsBeforeOrigin = new Set();\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o);\n conflictingItems.add(o);\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o;\n conflictingItems.clear();\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o;\n conflictingItems.clear();\n }\n } else {\n break\n }\n o = o.right;\n }\n this.left = left;\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right;\n this.right = right;\n this.left.right = this;\n } else {\n let r;\n if (this.parentSub !== null) {\n r = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (r !== null && r.left !== null) {\n r = r.left;\n }\n } else {\n r = /** @type {AbstractType} */ (this.parent)._start\n ;/** @type {AbstractType} */ (this.parent)._start = this;\n }\n this.right = r;\n }\n if (this.right !== null) {\n this.right.left = this;\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType} */ (this.parent)._map.set(this.parentSub, this);\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction);\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType} */ (this.parent)._length += this.length;\n }\n addStruct(transaction.doc.store, this);\n this.content.integrate(transaction, this);\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType} */ (this.parent), this.parentSub);\n if ((/** @type {AbstractType} */ (this.parent)._item !== null && /** @type {AbstractType} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction);\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0);\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left;\n while (n !== null && n.deleted) {\n n = n.left;\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n if (right.keep) {\n this.keep = true;\n }\n this.right = right.right;\n if (this.right !== null) {\n this.right.left = this;\n }\n this.length += right.length;\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType} */ (this.parent);\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length;\n }\n this.markDeleted();\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length);\n setIfUndefined(transaction.changed, parent, create).add(this.parentSub);\n this.content.delete(transaction);\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw unexpectedCase()\n }\n this.content.gc(store);\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length));\n } else {\n this.content = new ContentDeleted(this.length);\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin;\n const rightOrigin = this.rightOrigin;\n const parentSub = this.parentSub;\n const info = (this.content.getRef() & BITS5) |\n (origin === null ? 0 : BIT8) | // origin is defined\n (rightOrigin === null ? 0 : BIT7) | // right origin is defined\n (parentSub === null ? 0 : BIT6); // parentSub is non-null\n encoder.writeInfo(info);\n if (origin !== null) {\n encoder.writeLeftID(origin);\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin);\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType} */ (this.parent);\n const parentItem = parent._item;\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent);\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(ykey);\n } else {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parentItem.id);\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub);\n }\n }\n this.content.write(encoder, offset);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @param {number} info\n */\nconst readItemContent = (decoder, info) => contentRefs[info & BITS5](decoder);\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array}\n */\nconst contentRefs = [\n () => { throw unexpectedCase() }, // GC is not ItemContent\n readContentDeleted,\n readContentJSON,\n readContentBinary,\n readContentString,\n readContentEmbed,\n readContentFormat,\n readContentType,\n readContentAny\n];\n\nexport { AbstractConnector, AbstractStruct, AbstractType, YArray as Array, ContentAny, ContentBinary, ContentDeleted, ContentEmbed, ContentFormat, ContentJSON, ContentString, ContentType, Doc, GC, ID, Item, YMap as Map, PermanentUserData, RelativePosition, Snapshot, YText as Text, Transaction, UndoManager, YXmlElement as XmlElement, YXmlFragment as XmlFragment, YXmlHook as XmlHook, YXmlText as XmlText, YArrayEvent, YEvent, YMapEvent, YTextEvent, YXmlEvent, applyUpdate, applyUpdateV2, compareIDs, compareRelativePositions, createAbsolutePositionFromRelativePosition, createDeleteSet, createDeleteSetFromStructStore, createID, createRelativePositionFromJSON, createRelativePositionFromTypeIndex, createSnapshot, decodeSnapshot, decodeSnapshotV2, decodeStateVector, decodeStateVectorV2, emptySnapshot, encodeSnapshot, encodeSnapshotV2, encodeStateAsUpdate, encodeStateAsUpdateV2, encodeStateVector, encodeStateVectorV2, equalSnapshots, findRootTypeKey, getState, getTypeChildren, isDeleted, isParentOf, iterateDeletedStructs, logType, readRelativePosition, readUpdate, readUpdateV2, snapshot, transact, tryGc, typeListToArraySnapshot, typeMapGetSnapshot, writeRelativePosition };\n//# sourceMappingURL=yjs.mjs.map\n","/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map}\n */\nconst channels = new Map()\n\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null\n addEventListener('storage', e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') }))\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n}\n\n// Use BroadcastChannel or Polyfill\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = new Set()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n bc.onmessage = e => subs.forEach(sub => sub(e.data))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const subscribe = (room, f) => getChannel(room).subs.add(f)\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const unsubscribe = (room, f) => getChannel(room).subs.delete(f)\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n */\nexport const publish = (room, data) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data))\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map} StateMap\n */\n\n/**\n * Core Yjs defines three message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the the client is assured that\n * it received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server shoul only reply to requests, and not initiate them.\n * Therefore it is necesarry that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep1)\n const sv = Y.encodeStateVector(doc)\n encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep2)\n encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n encoding.writeVarUint(encoder, messageYjsUpdate)\n encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Will not be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc)\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin)\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin)\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n}\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nexport const createMutex = () => {\n let token = true\n return (f, g) => {\n if (token) {\n token = false\n try {\n f()\n } finally {\n token = true\n }\n } else if (g !== undefined) {\n g()\n }\n }\n}\n","/*\nUnlike stated in the LICENSE file, it is not necessary to include the copyright notice and permission notice when you copy code from this file.\n*/\n\n/**\n * @module provider/websocket\n */\n\n/* eslint-env browser */\n\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as bc from 'lib0/broadcastchannel.js'\nimport * as time from 'lib0/time.js'\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as syncProtocol from 'y-protocols/sync.js'\nimport * as authProtocol from 'y-protocols/auth.js'\nimport * as awarenessProtocol from 'y-protocols/awareness.js'\nimport * as mutex from 'lib0/mutex.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as math from 'lib0/math.js'\nimport * as url from 'lib0/url.js'\n\nconst messageSync = 0\nconst messageQueryAwareness = 3\nconst messageAwareness = 1\nconst messageAuth = 2\n\nconst reconnectTimeoutBase = 1200\nconst maxReconnectTimeout = 2500\n// @todo - this should depend on awareness.outdatedTime\nconst messageReconnectTimeout = 30000\n\n/**\n * @param {WebsocketProvider} provider\n * @param {string} reason\n */\nconst permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.\\n${reason}`)\n\n/**\n * @param {WebsocketProvider} provider\n * @param {Uint8Array} buf\n * @param {boolean} emitSynced\n * @return {encoding.Encoder}\n */\nconst readMessage = (provider, buf, emitSynced) => {\n const decoder = decoding.createDecoder(buf)\n const encoder = encoding.createEncoder()\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageSync: {\n encoding.writeVarUint(encoder, messageSync)\n const syncMessageType = syncProtocol.readSyncMessage(decoder, encoder, provider.doc, provider)\n if (emitSynced && syncMessageType === syncProtocol.messageYjsSyncStep2 && !provider.synced) {\n provider.synced = true\n }\n break\n }\n case messageQueryAwareness:\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, Array.from(provider.awareness.getStates().keys())))\n break\n case messageAwareness:\n awarenessProtocol.applyAwarenessUpdate(provider.awareness, decoding.readVarUint8Array(decoder), provider)\n break\n case messageAuth:\n authProtocol.readAuthMessage(decoder, provider.doc, permissionDeniedHandler)\n break\n default:\n console.error('Unable to compute message')\n return encoder\n }\n return encoder\n}\n\n/**\n * @param {WebsocketProvider} provider\n */\nconst setupWS = provider => {\n if (provider.shouldConnect && provider.ws === null) {\n const websocket = new provider._WS(provider.url)\n websocket.binaryType = 'arraybuffer'\n provider.ws = websocket\n provider.wsconnecting = true\n provider.wsconnected = false\n provider.synced = false\n websocket.onmessage = event => {\n provider.wsLastMessageReceived = time.getUnixTime()\n const encoder = readMessage(provider, new Uint8Array(event.data), true)\n if (encoding.length(encoder) > 1) {\n websocket.send(encoding.toUint8Array(encoder))\n }\n }\n websocket.onclose = () => {\n provider.ws = null\n provider.wsconnecting = false\n if (provider.wsconnected) {\n provider.wsconnected = false\n provider.synced = false\n // update awareness (all users left)\n awarenessProtocol.removeAwarenessStates(provider.awareness, Array.from(provider.awareness.getStates().keys()), provider)\n provider.emit('status', [{\n status: 'disconnected'\n }])\n } else {\n provider.wsUnsuccessfulReconnects++\n }\n // Start with no reconnect timeout and increase timeout by\n // log10(wsUnsuccessfulReconnects).\n // The idea is to increase reconnect timeout slowly and have no reconnect\n // timeout at the beginning (log(1) = 0)\n setTimeout(setupWS, math.min(math.log10(provider.wsUnsuccessfulReconnects + 1) * reconnectTimeoutBase, maxReconnectTimeout), provider)\n }\n websocket.onopen = () => {\n provider.wsLastMessageReceived = time.getUnixTime()\n provider.wsconnecting = false\n provider.wsconnected = true\n provider.wsUnsuccessfulReconnects = 0\n provider.emit('status', [{\n status: 'connected'\n }])\n // always send sync step 1 when connected\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, provider.doc)\n websocket.send(encoding.toUint8Array(encoder))\n // broadcast local awareness state\n if (provider.awareness.getLocalState() !== null) {\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, [provider.doc.clientID]))\n websocket.send(encoding.toUint8Array(encoderAwarenessState))\n }\n }\n }\n}\n\n/**\n * @param {WebsocketProvider} provider\n * @param {ArrayBuffer} buf\n */\nconst broadcastMessage = (provider, buf) => {\n if (provider.wsconnected) {\n // @ts-ignore We know that wsconnected = true\n provider.ws.send(buf)\n }\n if (provider.bcconnected) {\n provider.mux(() => {\n bc.publish(provider.url, buf)\n })\n }\n}\n\n/**\n * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.\n * The document name is attached to the provided url. I.e. the following example\n * creates a websocket connection to http://localhost:1234/my-document-name\n *\n * @example\n * import * as Y from 'yjs'\n * import { WebsocketProvider } from 'y-websocket'\n * const doc = new Y.Doc()\n * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)\n *\n * @extends {Observable}\n */\nexport class WebsocketProvider extends Observable {\n /**\n * @param {string} serverUrl\n * @param {string} roomname\n * @param {Y.Doc} doc\n * @param {object} [opts]\n * @param {boolean} [opts.connect]\n * @param {awarenessProtocol.Awareness} [opts.awareness]\n * @param {Object} [opts.params]\n * @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill\n * @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds\n */\n constructor (serverUrl, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), params = {}, WebSocketPolyfill = WebSocket, resyncInterval = -1 } = {}) {\n super()\n // ensure that url is always ends with /\n while (serverUrl[serverUrl.length - 1] === '/') {\n serverUrl = serverUrl.slice(0, serverUrl.length - 1)\n }\n const encodedParams = url.encodeQueryParams(params)\n this.bcChannel = serverUrl + '/' + roomname\n this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '?' + encodedParams)\n this.roomname = roomname\n this.doc = doc\n this._WS = WebSocketPolyfill\n /**\n * @type {Object}\n */\n this._localAwarenessState = {}\n this.awareness = awareness\n this.wsconnected = false\n this.wsconnecting = false\n this.bcconnected = false\n this.wsUnsuccessfulReconnects = 0\n this.mux = mutex.createMutex()\n /**\n * @type {boolean}\n */\n this._synced = false\n /**\n * @type {WebSocket?}\n */\n this.ws = null\n this.wsLastMessageReceived = 0\n /**\n * Whether to connect to other peers or not\n * @type {boolean}\n */\n this.shouldConnect = connect\n\n /**\n * @type {NodeJS.Timeout | number}\n */\n this._resyncInterval = 0\n if (resyncInterval > 0) {\n this._resyncInterval = setInterval(() => {\n if (this.ws) {\n if (!this.synced) {\n alert(`\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message..`)\n console.warn('Client was unsynced anyway')\n }\n // resend sync step 1\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, doc)\n this.ws.send(encoding.toUint8Array(encoder))\n }\n }, resyncInterval)\n }\n\n /**\n * @param {ArrayBuffer} data\n */\n this._bcSubscriber = data => {\n this.mux(() => {\n const encoder = readMessage(this, new Uint8Array(data), false)\n if (encoding.length(encoder) > 1) {\n bc.publish(this.bcChannel, encoding.toUint8Array(encoder))\n }\n })\n }\n /**\n * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)\n * @param {Uint8Array} update\n * @param {any} origin\n */\n this._updateHandler = (update, origin) => {\n if (origin !== this || origin === null) {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeUpdate(encoder, update)\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n }\n this.doc.on('update', this._updateHandler)\n /**\n * @param {any} changed\n * @param {any} origin\n */\n this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => {\n const changedClients = added.concat(updated).concat(removed)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n window.addEventListener('beforeunload', () => {\n awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload')\n })\n awareness.on('update', this._awarenessUpdateHandler)\n this._checkInterval = setInterval(() => {\n if (this.wsconnected && messageReconnectTimeout < time.getUnixTime() - this.wsLastMessageReceived) {\n // no message received in a long time - not even your own awareness\n // updates (which are updated every 15 seconds)\n /** @type {WebSocket} */ (this.ws).close()\n }\n }, messageReconnectTimeout / 10)\n if (connect) {\n this.connect()\n }\n }\n\n /**\n * @type {boolean}\n */\n get synced () {\n return this._synced\n }\n\n set synced (state) {\n if (this._synced !== state) {\n this._synced = state\n this.emit('sync', [state])\n }\n }\n\n destroy () {\n if (this._resyncInterval !== 0) {\n clearInterval(/** @type {NodeJS.Timeout} */ (this._resyncInterval))\n }\n clearInterval(this._checkInterval)\n this.disconnect()\n this.awareness.off('update', this._awarenessUpdateHandler)\n this.doc.off('update', this._updateHandler)\n super.destroy()\n }\n\n connectBc () {\n if (!this.bcconnected) {\n bc.subscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = true\n }\n // send sync step1 to bc\n this.mux(() => {\n // write sync step 1\n const encoderSync = encoding.createEncoder()\n encoding.writeVarUint(encoderSync, messageSync)\n syncProtocol.writeSyncStep1(encoderSync, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderSync))\n // broadcast local state\n const encoderState = encoding.createEncoder()\n encoding.writeVarUint(encoderState, messageSync)\n syncProtocol.writeSyncStep2(encoderState, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderState))\n // write queryAwareness\n const encoderAwarenessQuery = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessQuery))\n // broadcast local awareness state\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID]))\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessState))\n })\n }\n\n disconnectBc () {\n // broadcast message with local awareness state set to null (indicating disconnect)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map()))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n if (this.bcconnected) {\n bc.unsubscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = false\n }\n }\n\n disconnect () {\n this.shouldConnect = false\n this.disconnectBc()\n if (this.ws !== null) {\n this.ws.close()\n }\n }\n\n connect () {\n this.shouldConnect = true\n if (!this.wsconnected && this.ws === null) {\n setupWS(this)\n this.connectBc()\n }\n }\n}\n","\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\n\nexport const messagePermissionDenied = 0\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {string} reason\n */\nexport const writePermissionDenied = (encoder, reason) => {\n encoding.writeVarUint(encoder, messagePermissionDenied)\n encoding.writeVarString(encoder, reason)\n}\n\n/**\n * @callback PermissionDeniedHandler\n * @param {any} y\n * @param {string} reason\n */\n\n/**\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} y\n * @param {PermissionDeniedHandler} permissionDeniedHandler\n */\nexport const readAuthMessage = (decoder, y, permissionDeniedHandler) => {\n switch (decoding.readVarUint(decoder)) {\n case messagePermissionDenied: permissionDeniedHandler(y, decoding.readVarString(decoder))\n }\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (var i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * @module bindings/quill\n */\n\nimport { createMutex } from 'lib0/mutex.js'\nimport * as Y from 'yjs' // eslint-disable-line\nimport { Awareness } from 'y-protocols/awareness.js' // eslint-disable-line\n\n/**\n * Removes the pending '\\n's if it has no attributes.\n */\nexport const normQuillDelta = delta => {\n if (delta.length > 0) {\n const d = delta[delta.length - 1]\n const insert = d.insert\n if (d.attributes === undefined && insert !== undefined && insert.slice(-1) === '\\n') {\n delta = delta.slice()\n let ins = insert.slice(0, -1)\n while (ins.slice(-1) === '\\n') {\n ins = ins.slice(0, -1)\n }\n delta[delta.length - 1] = { insert: ins }\n if (ins.length === 0) {\n delta.pop()\n }\n return delta\n }\n }\n return delta\n}\n\n/**\n * @param {any} quillCursors\n */\nconst updateCursor = (quillCursors, aw, clientId, doc, type) => {\n try {\n if (aw && aw.cursor && clientId !== doc.clientID) {\n const user = aw.user || {}\n const color = user.color || '#ffa500'\n const name = user.name || `User: ${clientId}`\n quillCursors.createCursor(clientId.toString(), name, color)\n const anchor = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.anchor), doc)\n const head = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.head), doc)\n if (anchor && head && anchor.type === type) {\n quillCursors.moveCursor(clientId.toString(), { index: anchor.index, length: head.index - anchor.index })\n }\n } else {\n quillCursors.removeCursor(clientId.toString())\n }\n } catch (err) {\n console.error(err)\n }\n}\n\nexport class QuillBinding {\n /**\n * @param {Y.Text} type\n * @param {any} quill\n * @param {Awareness} [awareness]\n */\n constructor (type, quill, awareness) {\n const mux = createMutex()\n const doc = /** @type {Y.Doc} */ (type.doc)\n this.mux = mux\n this.type = type\n this.doc = doc\n this.quill = quill\n const quillCursors = quill.getModule('cursors') || null\n this.quillCursors = quillCursors\n // This object contains all attributes used in the quill instance\n this._negatedUsedFormats = {}\n this.awareness = awareness\n this._awarenessChange = ({ added, removed, updated }) => {\n const states = /** @type {Awareness} */ (awareness).getStates()\n added.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n updated.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n removed.forEach(id => {\n quillCursors.removeCursor(id.toString())\n })\n }\n this._typeObserver = event => {\n mux(() => {\n const eventDelta = event.delta\n // We always explicitly set attributes, otherwise concurrent edits may\n // result in quill assuming that a text insertion shall inherit existing\n // attributes.\n const delta = []\n for (let i = 0; i < eventDelta.length; i++) {\n const d = eventDelta[i]\n if (d.insert !== undefined) {\n delta.push(Object.assign({}, d, { attributes: Object.assign({}, this._negatedUsedFormats, d.attributes || {}) }))\n } else {\n delta.push(d)\n }\n }\n quill.updateContents(delta, 'yjs')\n })\n }\n type.observe(this._typeObserver)\n this._quillObserver = (eventType, delta) => {\n if (delta && delta.ops) {\n // update content\n const ops = delta.ops\n ops.forEach(op => {\n if (op.attributes !== undefined) {\n for (let key in op.attributes) {\n if (this._negatedUsedFormats[key] === undefined) {\n this._negatedUsedFormats[key] = false\n }\n }\n }\n })\n mux(() => {\n type.applyDelta(ops)\n })\n }\n // always check selection\n if (awareness && quillCursors) {\n const sel = quill.getSelection()\n const aw = /** @type {any} */ (awareness.getLocalState())\n if (sel === null) {\n if (awareness.getLocalState() !== null) {\n awareness.setLocalStateField('cursor', /** @type {any} */ (null))\n }\n } else {\n const anchor = Y.createRelativePositionFromTypeIndex(type, sel.index)\n const head = Y.createRelativePositionFromTypeIndex(type, sel.index + sel.length)\n if (!aw || !aw.cursor || !Y.compareRelativePositions(anchor, aw.cursor.anchor) || !Y.compareRelativePositions(head, aw.cursor.head)) {\n awareness.setLocalStateField('cursor', {\n anchor,\n head\n })\n }\n }\n // update all remote cursor locations\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n }\n }\n quill.on('editor-change', this._quillObserver)\n mux(() => {\n // This indirectly initializes _negatedUsedFormats.\n // Make sure that this call this after the _quillObserver is set.\n quill.setContents(type.toDelta())\n })\n // init remote cursors\n if (quillCursors !== null && awareness) {\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n awareness.on('change', this._awarenessChange)\n }\n }\n destroy () {\n this.type.unobserve(this._typeObserver)\n this.quill.off(this._quillObserver)\n if (this.awareness) {\n this.awareness.off('change', this._awarenessChange)\n }\n }\n}\n","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe\n\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","/**!\n* tippy.js v6.2.7\n* (c) 2017-2020 atomiks\n* MIT License\n*/\nimport { createPopper } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0];\n\n return element ? element.ownerDocument || document : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar ua = isBrowser ? navigator.userAgent : '';\nvar isIE = /MSIE |Trident\\//.test(ua);\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: function appendTo() {\n return document.body;\n },\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, {}, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, {}, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function (event) {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles() {\n popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(void 0, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n } // Clicked on interactive popper\n\n\n if (instance.props.interactive && popper.contains(event.target)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (getCurrentTarget().contains(event.target)) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper
    or tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. ) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance);\n instance.state.isMounted = true;\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles();\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n }\n\n enableInstances(false);\n setReferences();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onTrigger: function onTrigger(instance, event) {\n var target = event.currentTarget;\n var index = references.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n instance.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n return target.getBoundingClientRect();\n }\n }));\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: references\n }));\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: references\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({}, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (placement !== state.placement) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n cursorRectIndex = rects.indexOf(cursorRect);\n }\n },\n onUntrigger: function onUntrigger() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = /** @class */ (function () {\n function Positioning() {\n }\n Positioning.prototype.getAllStyles = function (element) { return window.getComputedStyle(element); };\n Positioning.prototype.getStyle = function (element, prop) { return this.getAllStyles(element)[prop]; };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) { round = true; }\n var elPosition;\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) { round = true; }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var _a = placement.split('-'), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var marginTop = parseFloat(targetElStyles.marginTop);\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n var marginRight = parseFloat(targetElStyles.marginRight);\n var topPosition = 0;\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n var targetElBCR = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\nexport { Positioning };\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n var classList = targetElement.classList;\n var addClassesToTarget = function (targetPlacement) {\n var _a = targetPlacement.split('-'), primary = _a[0], secondary = _a[1];\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); });\n }\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n var testPlacement;\n var isInViewport = false;\n for (var _i = 0, placementVals_1 = placementVals; _i < placementVals_1.length; _i++) {\n testPlacement = placementVals_1[_i];\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n//# sourceMappingURL=positioning.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { positionElements } from 'positioning';\r\nvar QuillEvents;\r\n(function (QuillEvents) {\r\n QuillEvents[\"EDITOR_CHANGE\"] = \"editor-change\";\r\n QuillEvents[\"SCROLL_BEFORE_UPDATE\"] = \"scroll-before-update\";\r\n QuillEvents[\"SCROLL_BLOT_MOUNT\"] = \"scroll-blot-mount\";\r\n QuillEvents[\"SCROLL_BLOT_UNMOUNT\"] = \"scroll-blot-unmount\";\r\n QuillEvents[\"SCROLL_OPTIMIZE\"] = \"scroll-optimize\";\r\n QuillEvents[\"SCROLL_UPDATE\"] = \"scroll-update\";\r\n QuillEvents[\"SELECTION_CHANGE\"] = \"selection-change\";\r\n QuillEvents[\"TEXT_CHANGE\"] = \"text-change\";\r\n})(QuillEvents || (QuillEvents = {}));\r\nvar QuillSources;\r\n(function (QuillSources) {\r\n QuillSources[\"API\"] = \"api\";\r\n QuillSources[\"SILENT\"] = \"silent\";\r\n QuillSources[\"USER\"] = \"user\";\r\n})(QuillSources || (QuillSources = {}));\r\nvar DEFAULT_PLACEMENT = [\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top-left',\r\n 'top-right',\r\n 'auto',\r\n];\r\nvar iconAddColRight = '';\r\nvar iconAddColLeft = '';\r\nvar iconAddRowAbove = '';\r\nvar iconAddRowBelow = '';\r\nvar iconRemoveCol = '';\r\nvar iconRemoveRow = '';\r\nvar iconRemoveTable = '';\r\nvar TableUI = /** @class */ (function () {\r\n function TableUI(quill, options) {\r\n var _this = this;\r\n this.TOGGLE_TEMPLATE = \"\";\r\n this.DEFAULTS = {\r\n maxRowCount: -1,\r\n };\r\n this.menuItems = [\r\n {\r\n title: 'Sağa sütun ekle',\r\n icon: iconAddColRight,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnRight();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Sola sütün ekle',\r\n icon: iconAddColLeft,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnLeft();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Aşağı satır ekle',\r\n icon: iconAddRowAbove,\r\n handler: function () {\r\n _this.table.insertRowAbove();\r\n },\r\n },\r\n {\r\n title: 'Yukarı satır ekle',\r\n icon: iconAddRowBelow,\r\n handler: function () {\r\n _this.table.insertRowBelow();\r\n },\r\n },\r\n {\r\n title: 'Sütunu sil',\r\n icon: iconRemoveCol,\r\n handler: function () {\r\n _this.table.deleteColumn();\r\n },\r\n },\r\n {\r\n title: 'Satırı sil',\r\n icon: iconRemoveRow,\r\n handler: function () {\r\n _this.table.deleteRow();\r\n },\r\n },\r\n {\r\n title: 'Tabloyu sil',\r\n icon: iconRemoveTable,\r\n handler: function () {\r\n _this.table.deleteTable();\r\n },\r\n },\r\n ];\r\n this.editorChangeHandler = function (type, range, oldRange, source) {\r\n if (type === QuillEvents.SELECTION_CHANGE) {\r\n _this.detectButton(range);\r\n }\r\n };\r\n this.contextMenuHandler = function (evt) {\r\n if (!_this.isTable()) {\r\n return true;\r\n }\r\n evt.preventDefault();\r\n _this.showMenu();\r\n };\r\n this.toggleClickHandler = function (e) {\r\n _this.toggleMenu();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n this.docClickHandler = function () { return _this.hideMenu; };\r\n this.quill = quill;\r\n this.options = __assign(__assign({}, this.DEFAULTS), options);\r\n this.table = quill.getModule('table');\r\n if (!this.table) {\r\n console.error('\"table\" module not found');\r\n return;\r\n }\r\n this.toggle = quill.addContainer('ql-table-toggle');\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n this.toggle.innerHTML = this.TOGGLE_TEMPLATE;\r\n this.toggle.addEventListener('click', this.toggleClickHandler);\r\n this.quill.on(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.addEventListener('contextmenu', this.contextMenuHandler);\r\n }\r\n TableUI.prototype.isTable = function (range) {\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return false;\r\n }\r\n var formats = this.quill.getFormat(range.index);\r\n return !!(formats['table'] && !range.length);\r\n };\r\n TableUI.prototype.getColCount = function (range) {\r\n if (range === void 0) { range = null; }\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return 0;\r\n }\r\n var table = this.table.getTable(range)[0];\r\n if (!table) {\r\n return 0;\r\n }\r\n var maxColumns = table.rows().reduce(function (max, row) {\r\n return Math.max(row.children.length, max);\r\n }, 0);\r\n return maxColumns;\r\n };\r\n TableUI.prototype.showMenu = function () {\r\n var _this = this;\r\n this.hideMenu();\r\n this.menu = this.quill.addContainer('ql-table-menu');\r\n this.menuItems.forEach(function (it) {\r\n _this.menu.appendChild(_this.createMenuItem(it));\r\n });\r\n positionElements(this.toggle, this.menu, DEFAULT_PLACEMENT, false);\r\n document.addEventListener('click', this.docClickHandler);\r\n };\r\n TableUI.prototype.hideMenu = function () {\r\n if (this.menu) {\r\n this.menu.remove();\r\n this.menu = null;\r\n document.removeEventListener('click', this.docClickHandler);\r\n }\r\n };\r\n TableUI.prototype.createMenuItem = function (item) {\r\n var _this = this;\r\n var node = document.createElement('div');\r\n node.classList.add('ql-table-menu__item');\r\n var iconSpan = document.createElement('span');\r\n iconSpan.classList.add('ql-table-menu__item-icon');\r\n iconSpan.innerHTML = item.icon;\r\n var textSpan = document.createElement('span');\r\n textSpan.classList.add('ql-table-menu__item-text');\r\n textSpan.innerText = item.title;\r\n node.appendChild(iconSpan);\r\n node.appendChild(textSpan);\r\n node.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n _this.quill.focus();\r\n item.handler();\r\n _this.hideMenu();\r\n _this.detectButton(_this.quill.getSelection());\r\n }, false);\r\n return node;\r\n };\r\n TableUI.prototype.detectButton = function (range) {\r\n if (range == null) {\r\n return;\r\n }\r\n var show = this.isTable(range);\r\n if (show) {\r\n var _a = this.quill.getLine(range.index), cell = _a[0], offset = _a[1];\r\n var containerBounds = this.quill.container.getBoundingClientRect();\r\n var bounds = cell.domNode.getBoundingClientRect();\r\n bounds = {\r\n bottom: bounds.bottom - containerBounds.top,\r\n height: bounds.height,\r\n left: bounds.left - containerBounds.left,\r\n right: bounds.right - containerBounds.left,\r\n top: bounds.top - containerBounds.top,\r\n width: bounds.width,\r\n };\r\n this.showToggle(bounds);\r\n }\r\n else {\r\n this.hideToggle();\r\n this.hideMenu();\r\n }\r\n };\r\n TableUI.prototype.showToggle = function (position) {\r\n this.position = position;\r\n this.toggle.classList.remove('ql-table-toggle_hidden');\r\n this.toggle.style.top = position.top + \"px\";\r\n this.toggle.style.left = position.left + \"px\";\r\n };\r\n TableUI.prototype.hideToggle = function () {\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n };\r\n TableUI.prototype.toggleMenu = function () {\r\n if (this.menu) {\r\n this.hideToggle();\r\n }\r\n else {\r\n this.showMenu();\r\n }\r\n };\r\n TableUI.prototype.destroy = function () {\r\n this.hideMenu();\r\n this.quill.off(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.removeEventListener('contextmenu', this.contextMenuHandler);\r\n this.toggle.removeEventListener('click', this.toggleClickHandler);\r\n this.toggle.remove();\r\n this.toggle = null;\r\n this.options = this.DEFAULTS;\r\n this.menu = null;\r\n this.table = null;\r\n this.quill = null;\r\n };\r\n return TableUI;\r\n}());\r\nexport default TableUI;\r\n//# sourceMappingURL=index.js.map","import * as Y from 'yjs'\nimport {\n WebsocketProvider\n} from 'y-websocket'\nimport {\n QuillBinding\n} from 'y-quill'\nimport Quill from 'quill'\nimport QuillCursors from 'quill-cursors'\nimport tippy from 'tippy.js';\nimport * as QuillTableUI from 'quill-table-ui'\nimport MagicUrl from 'quill-magic-url'\nimport { ImageDrop } from 'quill-image-drop-module'\nimport BlotFormatter from 'quill-blot-formatter'\n\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageDrop', ImageDrop)\nQuill.register('modules/magicUrl', MagicUrl);\nQuill.register('modules/cursors', QuillCursors)\nQuill.register({\n 'modules/tableUI': QuillTableUI.default\n}, true)\n\nwindow.addEventListener('load', () => {\n const ydoc = new Y.Doc()\n var provider = new WebsocketProvider('ws://localhost:9000', 'quill', ydoc)\n const type = ydoc.getText('quill')\n\n let editor = new Quill('#full-container .editor', {\n bounds: '#full-container .editor',\n modules: {\n 'cursors': true,\n 'syntax': true,\n 'toolbar': { container: '.toolbar' },\n 'table': true,\n 'tableUI': true,\n 'magicUrl': true,\n 'imageDrop': true,\n 'blotFormatter': {\n\n }\n },\n\n theme: 'snow'\n });\n\n const binding = new QuillBinding(type, editor, provider.awareness)\n\n provider.awareness.setLocalStateField('user', {\n name: divergent_name,\n color: divergent_color\n })\n\n tippy('.ql-bold', {\n content: 'Kalın'\n })\n tippy('.ql-italic', {\n content: 'Eğik'\n })\n tippy('.ql-underline', {\n content: 'Altı Çizili'\n })\n tippy('.ql-strike', {\n content: 'Üstü Çizili'\n })\n tippy('.ql-blockquote', {\n content: 'Alıntı'\n })\n tippy('.ql-code-block', {\n content: 'Kod Bloğu'\n })\n tippy('[value=\"ordered\"]', {\n content: 'Sıralı Liste'\n })\n tippy('[value=\"bullet\"]', {\n content: 'Liste'\n })\n tippy('[value=\"+1\"]', {\n content: 'İçe Adım'\n })\n tippy('[value=\"-1\"]', {\n content: 'Dışa Adım'\n })\n tippy('.ql-link', {\n content: 'Link'\n })\n tippy('.ql-image', {\n content: 'Resim'\n })\n tippy('.ql-clean', {\n content: 'Biçimlendirmeyi Temizle'\n })\n})","/**\n * Custom module for quilljs to allow user to drag images from their file system into the editor\n * and paste images from clipboard (Works on Chrome, Firefox, Edge, not on Safari)\n * @see https://quilljs.com/blog/building-a-custom-module/\n */\nexport class ImageDrop {\n\n\t/**\n\t * Instantiate the module given a quill instance and any options\n\t * @param {Quill} quill\n\t * @param {Object} options\n\t */\n\tconstructor(quill, options = {}) {\n\t\t// save the quill reference\n\t\tthis.quill = quill;\n\t\t// bind handlers to this instance\n\t\tthis.handleDrop = this.handleDrop.bind(this);\n\t\tthis.handlePaste = this.handlePaste.bind(this);\n\t\t// listen for drop and paste events\n\t\tthis.quill.root.addEventListener('drop', this.handleDrop, false);\n\t\tthis.quill.root.addEventListener('paste', this.handlePaste, false);\n\t}\n\n\t/**\n\t * Handler for drop event to read dropped files from evt.dataTransfer\n\t * @param {Event} evt\n\t */\n\thandleDrop(evt) {\n\t\tevt.preventDefault();\n\t\tif (evt.dataTransfer && evt.dataTransfer.files && evt.dataTransfer.files.length) {\n\t\t\tif (document.caretRangeFromPoint) {\n\t\t\t\tconst selection = document.getSelection();\n\t\t\t\tconst range = document.caretRangeFromPoint(evt.clientX, evt.clientY);\n\t\t\t\tif (selection && range) {\n\t\t\t\t\tselection.setBaseAndExtent(range.startContainer, range.startOffset, range.startContainer, range.startOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.readFiles(evt.dataTransfer.files, this.insert.bind(this));\n\t\t}\n\t}\n\n\t/**\n\t * Handler for paste event to read pasted files from evt.clipboardData\n\t * @param {Event} evt\n\t */\n\thandlePaste(evt) {\n\t\tif (evt.clipboardData && evt.clipboardData.items && evt.clipboardData.items.length) {\n\t\t\tthis.readFiles(evt.clipboardData.items, dataUrl => {\n\t\t\t\tconst selection = this.quill.getSelection();\n\t\t\t\tif (selection) {\n\t\t\t\t\t// we must be in a browser that supports pasting (like Firefox)\n\t\t\t\t\t// so it has already been placed into the editor\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// otherwise we wait until after the paste when this.quill.getSelection()\n\t\t\t\t\t// will return a valid index\n\t\t\t\t\tsetTimeout(() => this.insert(dataUrl), 0);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Insert the image into the document at the current cursor position\n\t * @param {String} dataUrl The base64-encoded image URI\n\t */\n\tinsert(dataUrl) {\n\t\tconst index = (this.quill.getSelection() || {}).index || this.quill.getLength();\n\t\tthis.quill.insertEmbed(index, 'image', dataUrl, 'user');\n\t}\n\n\t/**\n\t * Extract image URIs a list of files from evt.dataTransfer or evt.clipboardData\n\t * @param {File[]} files One or more File objects\n\t * @param {Function} callback A function to send each data URI to\n\t */\n\treadFiles(files, callback) {\n\t\t// check each file for an image\n\t\t[].forEach.call(files, file => {\n\t\t\tif (!file.type.match(/^image\\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\\.microsoft\\.icon)/i)) {\n\t\t\t\t// file is not an image\n\t\t\t\t// Note that some file formats such as psd start with image/* but are not readable\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// set up file reader\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = (evt) => {\n\t\t\t\tcallback(evt.target.result);\n\t\t\t};\n\t\t\t// read the clipboard item or file\n\t\t\tconst blob = file.getAsFile ? file.getAsFile() : file;\n\t\t\tif (blob instanceof Blob) {\n\t\t\t\treader.readAsDataURL(blob);\n\t\t\t}\n\t\t});\n\t}\n\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/lib0/number.js","webpack:///./node_modules/lib0/encoding.js","webpack:///./node_modules/lib0/decoding.js","webpack:///./node_modules/lib0/binary.js","webpack:///./node_modules/lib0/math.js","webpack:///./node_modules/lib0/map.js","webpack:///./node_modules/lib0/buffer.js","webpack:///./node_modules/quill-blot-formatter/dist/BlotFormatter.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/lib0/environment.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/Action.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/BlotSpec.js","webpack:///./node_modules/lib0/string.js","webpack:///./node_modules/lib0/storage.js","webpack:///./node_modules/lib0/conditions.js","webpack:///./node_modules/isomorphic.js/iso-browser.js","webpack:///./node_modules/quill-blot-formatter/dist/Options.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/AlignAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultAligner.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/Toolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultToolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/ResizeAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/DeleteAction.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/ImageSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/IframeVideoSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/UnclickableBlotSpec.js","webpack:///./node_modules/quill-cursors/dist/quill-cursors.js","webpack:///./node_modules/quill-magic-url/dist/index.js","webpack:///./node_modules/quill-blot-formatter/dist/index.js","webpack:///./node_modules/deepmerge/dist/es.js","webpack:///./node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lib0/set.js","webpack:///./node_modules/lib0/array.js","webpack:///./node_modules/lib0/observable.js","webpack:///./node_modules/lib0/isomorphic.js","webpack:///./node_modules/lib0/random.js","webpack:///./node_modules/lib0/error.js","webpack:///./node_modules/lib0/object.js","webpack:///./node_modules/lib0/function.js","webpack:///./node_modules/lib0/symbol.js","webpack:///./node_modules/lib0/pair.js","webpack:///./node_modules/lib0/dom.js","webpack:///./node_modules/lib0/json.js","webpack:///./node_modules/lib0/eventloop.js","webpack:///./node_modules/lib0/time.js","webpack:///./node_modules/lib0/logging.js","webpack:///./node_modules/lib0/iterator.js","webpack:///./node_modules/yjs/dist/yjs.mjs","webpack:///./node_modules/lib0/broadcastchannel.js","webpack:///./node_modules/y-protocols/sync.js","webpack:///./node_modules/y-protocols/awareness.js","webpack:///./node_modules/lib0/mutex.js","webpack:///./node_modules/y-websocket/src/y-websocket.js","webpack:///./node_modules/y-protocols/auth.js","webpack:///./node_modules/lib0/url.js","webpack:///./node_modules/y-quill/node_modules/y-protocols/awareness.js","webpack:///./node_modules/y-quill/src/y-quill.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/tippy.js/dist/tippy.esm.js","webpack:///./node_modules/positioning/dist/positioning.js","webpack:///./node_modules/quill-table-ui/dist/index.js","webpack:///./quill.js","webpack:///./node_modules/quill-image-drop-module/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","binary","isInteger","num","isFinite","math","isNaN","Encoder","this","cpos","cbuf","Uint8Array","bufs","createEncoder","encoder","len","length","toUint8Array","uint8arr","curPos","set","buffer","write","bufferLen","push","writeUint8","writeVarUint","writeVarInt","isNegative","writeVarString","str","encodedString","unescape","encodeURIComponent","codePointAt","writeUint8Array","uint8Array","leftCopyLen","rightCopyLen","subarray","writeVarUint8Array","byteLength","writeOnDataView","verifyLen","dview","DataView","floatTestBed","ArrayBuffer","writeAny","data","setFloat32","getFloat32","writeFloat32","setFloat64","writeFloat64","setBigInt64","writeBigInt64","Array","keys","RleEncoder","writer","super","w","count","v","flushUintOptRleEncoder","UintOptRleEncoder","flushIntDiffOptRleEncoder","encodedDiff","diff","IntDiffOptRleEncoder","StringEncoder","sarr","lensE","string","join","Decoder","arr","pos","createDecoder","hasContent","decoder","readUint8Array","view","byteOffset","readVarUint8Array","readVarUint","readUint8","Error","readVarInt","sign","readVarString","remainingLen","String","fromCodePoint","nextLen","bytes","apply","decodeURIComponent","escape","readFromDataView","dv","readAnyLookupTable","getFloat64","getBigInt64","obj","readAny","RleDecoder","reader","UintOptRleDecoder","IntDiffOptRleDecoder","hasCount","StringDecoder","spos","end","read","res","slice","BIT1","BIT2","BIT3","BIT4","BIT6","BIT7","BIT8","BITS5","BITS6","BITS7","BITS8","BITS31","floor","Math","abs","ceil","round","imul","log10","min","log2","log","sqrt","a","b","max","exp10","pow","exp","isNegativeZero","Map","copy","forEach","k","setIfUndefined","map","createT","undefined","f","any","createUint8ArrayFromLen","createUint8ArrayViewFromArrayBuffer","createUint8ArrayFromArrayBuffer","toBase64","btoa","Buffer","from","toString","fromBase64","atob","charCodeAt","buf","copyUint8Array","newBuf","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_deepmerge2","_interopRequireDefault","_Options2","default","_classCallCheck","instance","TypeError","dontMerge","destination","source","BlotFormatter","quill","_this","options","arguments","onClick","hide","arrayMerge","currentSpec","actions","overlay","document","createElement","classList","add","className","style","assign","execCommand","root","parentNode","position","addEventListener","specs","SpecClass","spec","init","setSelection","setUserSelect","appendChild","repositionOverlay","createActions","onHide","removeChild","setProperty","destroyActions","action","onUpdate","_this2","getActions","ActionClass","onCreate","onDestroy","overlayTarget","getOverlayElement","parent","specRect","getBoundingClientRect","parentRect","display","left","scrollLeft","top","scrollTop","width","height","_this3","prop","documentElement","factory","window","eval","__webpack_exports__","0","1","isNode","process","release","test","isBrowser","navigator","platform","params","args","computeParams","pargs","argv","currParamName","parg","location","search","split","kv","getVariable","env","toUpperCase","getItem","has","hasParam","_BlotFormatter","Action","formatter","_AlignAction2","_ResizeAction2","_DeleteAction2","BlotSpec","getTargetElement","fromCharCode","trimLeftRegex","fromCamelCaseRegex","fromCamelCase","separator","replace","trimLeft","match","toLowerCase","TextEncoder","utf8TextDecoder","TextDecoder","fatal","ignoreBOM","decode","_localStorage","localStorage","e","varStorage","undefinedToNull","perf","performance","isoCrypto","crypto","cryptoRandomBuffer","getRandomValues","random","_ImageSpec2","_IframeVideoSpec2","DefaultOptions","boxSizing","border","align","attribute","aligner","applyStyle","icons","center","right","toolbar","allowDeselect","mainClassName","mainStyle","minWidth","font","textAlign","color","cursor","zIndex","buttonClassName","addButtonSelectStyle","buttonStyle","background","verticalAlign","svgStyle","resize","handleClassName","handleStyle","backgroundColor","opacity","_Action3","_DefaultAligner2","_DefaultToolbar2","AlignAction","_Action","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","subClass","superClass","constructor","setPrototypeOf","_inherits","getElement","destroy","_defineProperty","DefaultAligner","_alignments","alignAttribute","alignments","icon","el","setAlignment","setStyle","removeAttribute","alignment","getAttribute","setAttribute","float","margin","DefaultToolbar","buttons","addToolbarStyle","addButtons","button","index","borderLeftWidth","children","getAlignments","innerHTML","onButtonClick","preselectButton","addButtonStyle","isAligned","selectButton","clickButton","alignTarget","deselectButton","clear","update","remove","removeProperty","ResizeAction","onMouseDown","event","HTMLElement","dragHandle","setCursor","rect","dragStartX","clientX","preDragWidth","targetRatio","onDrag","onMouseUp","deltaX","newWidth","topLeftHandle","bottomLeftHandle","newHeight","removeEventListener","createHandle","topRightHandle","bottomRightHandle","repositionHandles","box","handleXOffset","handleYOffset","parseFloat","bottom","body","_quill2","DeleteAction","_ref","_temp","_len","_key","concat","onKeyUp","keyCode","blot","find","deleteAt","_BlotSpec3","ImageSpec","_BlotSpec","tagName","img","show","_UnclickableBlotSpec3","IframeVideoSpec","_UnclickableBlotSpec","UnclickableBlotSpec","selector","onTextChange","querySelectorAll","unclickable","onMouseEnter","nextUnclickable","repositionProxyImage","onProxyImageClick","hideProxyImage","createProxyImage","proxyImage","on","canvas","context","getContext","globalAlpha","fillRect","src","toDataURL","pageXOffset","pageYOffset","id","build","CONTAINER_ELEMENT_TAG","CURSOR_CLASS","template","getElementsByClassName","SELECTION_CLASS","CARET_CONTAINER_CLASS","CARET_CLASS","FLAG_CLASS","NAME_CLASS","textContent","_hideDelay","hideDelayMs","_hideSpeedMs","hideSpeedMs","transitionDelay","transitionDuration","_el","_selectionEl","_caretEl","_flagEl","HIDDEN_CLASS","toggleFlag","toggle","SHOW_FLAG_CLASS","NO_DELAY_CLASS","setTimeout","updateCaret","updateSelection","_clearSelection","_sanitize","_sortByDomPosition","_addSelection","_selectionBlock","SELECTION_ELEMENT_TAG","SELECTION_BLOCK_CLASS","setAlpha","sort","Set","filter","_serialize","FLAG_FLAP_CLASS","Date","getTime","strict","u","h","getOwnPropertyDescriptor","isArray","newValue","__importDefault","iterator","delete","retain","insert","__importStar","_cursors","_quill","_options","_setDefaults","_container","addContainer","containerClass","_currentSelection","getSelection","_registerSelectionChangeListeners","_registerTextChangeListener","_registerDomListeners","createCursor","moveCursor","range","_updateCursor","removeCursor","cursors","clearCursors","events","SELECTION_CHANGE","TEXT_CHANGE","_handleTextChange","container","observe","_indexWithinQuillBounds","getLeaf","_leafIsValid","getBounds","_lineRanges","reduce","getClientRects","getLength","domNode","transformOnTextChange","_transformCursors","selectionChangeSource","_emitSelection","emitter","emit","sources","API","getLines","createRange","selectNode","path","pop","setStart","setEnd","transformPosition","g","M","format","G","rgb","exec","rgba","hsl","hsla","hsv","hsva","hex8","q","F","hex6","hex4","hex3","U","T","substr","H","j","ok","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","D","charAt","I","toHsl","N","_","y","desaturate","A","toRgb","x","C","S","E","O","L","toHsv","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","toHsvString","toHslString","toHex","toHexString","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","R","toFilter","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","equals","mix","readability","isReadable","level","size","mostReadable","includeFallbackColors","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexNames","indexOf","parseInt","P","B","z","CSS_UNIT","RegExp","screen","deviceXDPI","logicalXDPI","isBroken","createTextNode","startContainer","startOffset","ActiveXObject","Function","ieZoom","endContainer","endOffset","commonAncestorContainer","childNodes","cloneRange","some","__entries__","splice","requestAnimationFrame","now","MutationObserver","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","disconnect_","updateObservers_","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","disconnect","propertyName","getInstance","instance_","ownerDocument","defaultView","SVGGraphicsElement","SVGElement","getBBox","clientWidth","clientHeight","getComputedStyle","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","DOMRectReadOnly","contentRect","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","unobserve","clearActive","WeakMap","ResizeObserver","ops","unshift","chop","partition","changeLength","hasNext","next","compose","peek","peekType","peekLength","rest","INSERT","DELETE","EQUAL","eachLine","invert","transform","Op","AttributeMap","shim","propertyIsEnumerable","supported","unsupported","oldRange","newRange","substring","offset","singleton","locals","querySelector","HTMLIFrameElement","contentDocument","head","css","media","sourceMap","nonce","nc","Boolean","styleSheet","cssText","insertBefore","JSON","stringify","firstChild","all","base","sourceRoot","getOwnPropertySymbols","supportsDescriptors","callee","is","global","ignoreCase","multiline","dotAll","unicode","sticky","flags","done","return","URL","getOwnPropertyDescriptors","defaultProtocol","normalizeProtocol","forceHttp","forceHttps","stripAuthentication","stripHash","stripWWW","removeQueryParameters","removeTrailingSlash","removeDirectoryIndex","sortQueryParameters","Reflect","trim","shift","startsWith","protocol","username","password","hash","pathname","decodeURI","hostname","searchParams","stripProtocol","globalRegularExpression","urlRegularExpression","normalizeRegularExpression","normalizeUrlOptions","registerTypeListener","registerPasteListener","clipboard","addMatcher","Node","TEXT_NODE","link","normalize","checkTextForUrl","text","localName","getIndex","textToUrl","updateContents","console","error","Quill","register","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","isLegacyArguments","getPolyfill","implementation","entries","values","Atomics","encodeURI","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","parse","valueOf","Promise","then","reject","resolve","Proxy","RangeError","SharedArrayBuffer","SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakSet","getOwnPropertyNames","lastIndex","getDay","slashes","auth","host","port","query","href","resolveObject","isString","Url","javascript","http","https","ftp","gopher","file","isObject","lastIndexOf","parseHost","$","toASCII","W","V","isNullOrUndefined","isNull","nodeType","overflow","version","ucs2","encode","toUnicode","punycode","webpackPolyfill","deprecate","paths","maxKeys","_Options","_AlignAction","_DefaultAligner","_DefaultToolbar","_DeleteAction","_ResizeAction","_ImageSpec","_IframeVideoSpec","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","val","defaultArrayMerge","element","sourceIsArray","mergeObject","array","prev","deepmerge_1","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","arg","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","type","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","last","_observers","observers","uint32","methodUnimplemented","unexpectedCase","hasProperty","callAll","fs","equalityDeep","equalityStrict","Pair","mapToStyleString","DOMParser","ELEMENT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","createTimeoutClass","clearFunction","timeoutId","getUnixTime","clearInterval","cancelAnimationFrame","cancelIdleCallback","BOLD","UNBOLD","BLUE","GREY","GREEN","RED","PURPLE","ORANGE","UNCOLOR","_browserStyleMap","_nodeStyleMap","computeLoggingArgs","strBuilder","logArgs","styles","currentStyle","print","vconsoles","vc","createIterator","iteratorMap","fmap","DeleteItem","clock","DeleteSet","clients","iterateDeletedStructs","transaction","ds","deletes","clientid","structs","doc","store","del","iterateStructs","isDeleted","dis","client","midindex","mid","midclock","findIndexDS","sortAndMergeDeleteSet","dels","addToDeleteSet","createDeleteSet","createDeleteSetFromStructStore","ss","dsitems","struct","deleted","writeDeleteSet","restEncoder","resetDsCurVal","item","writeDsClock","writeDsLen","readAndApplyDeleteSet","unappliedDS","numClients","restDecoder","numberOfDeletes","state","getState","readDsClock","clockEnd","readDsLen","findIndexSS","splitItem","unappliedDSEncoder","pendingDeleteReaders","generateNewClientId","gc","gcFilter","clientID","share","StructStore","_transaction","_transactionCleanups","origin","transact","TypeConstructor","_integrate","Constr","_map","_start","_length","YArray","YText","YXmlFragment","eventName","dsCurrVal","keyClockDecoder","clientDecoder","leftClockDecoder","rightClockDecoder","infoDecoder","stringDecoder","parentInfoDecoder","typeRefDecoder","lenDecoder","ID","keyClock","keyMap","keyClockEncoder","clientEncoder","leftClockEncoder","rightClockEncoder","infoEncoder","stringEncoder","parentInfoEncoder","typeRefEncoder","lenEncoder","info","isYKey","embed","DefaultDSEncoder","DefaultDSDecoder","DefaultUpdateEncoder","DefaultUpdateDecoder","createID","writeClientsStructs","_sm","sm","getStateVector","startNewStructs","writeClient","firstStruct","writeStructs","readStructs","clientsStructRefs","pendingClientsStructRefs","clientRefs","numOfStateUpdates","numberOfStructs","refs","readClient","readInfo","cantCopyParentInfo","readLeftID","readRightID","readParentInfo","readString","readItemContent","readLen","GC","readClientsStructRefs","clientsStructsRefs","structRefs","pendingStructRefs","merged","r1","r2","mergeReadStructsIntoPendingReads","stack","pendingStack","clientsStructRefsIds","getNextStructTarget","nextStructsTarget","curStructsTarget","stackHead","localClock","missing","getMissing","integrate","resumeStructIntegration","pendingReaders","tryResumePendingDeleteReaders","readUpdateV2","ydoc","transactionOrigin","structDecoder","applyUpdate","YDecoder","applyUpdateV2","encodeStateAsUpdateV2","encodedTargetStateVector","targetStateVector","writeStateAsUpdate","decodeStateVector","readStateVector","ssLength","decodedState","writeStateVector","sv","encodeStateVectorV2","writeDocumentStateVector","EventHandler","createEventHandler","addEventHandlerListener","eventHandler","removeEventHandlerListener","callEventHandlerListeners","arg0","arg1","compareIDs","findRootTypeKey","RelativePosition","tname","createRelativePositionFromJSON","json","AbsolutePosition","createRelativePosition","typeid","_item","createRelativePositionFromTypeIndex","countable","createAbsolutePositionFromRelativePosition","rpos","rightID","typeID","followRedone","content","createAbsolutePosition","compareRelativePositions","Snapshot","createSnapshot","isVisible","snapshot","splitSnapshotAffectedStructs","meta","getItemCleanStart","lastStruct","addStruct","findIndexCleanStart","getItemCleanEnd","clockStart","Transaction","local","deleteSet","beforeState","afterState","changed","changedParentTypes","_mergeStructs","writeUpdateMessageFromTransaction","writeStructsFromTransaction","tryToMergeWithLeft","mergeWith","parentSub","tryGcDeleteSet","deleteItems","di","deleteItem","endDeleteItemClock","si","keep","tryMergeDeleteSet","cleanupTransactions","transactionCleanups","mergeStructs","subs","itemtype","_callObserver","currentTarget","_dEH","beforeClock","firstChangePos","replacedStructPos","initialCall","_changes","getPathTo","changes","added","delta","lastOp","packOp","adds","getContent","oldValue","child","globalSearchMarkerTimestamp","ArraySearchMarker","timestamp","overwriteMarker","findMarker","yarray","_searchMarker","pindex","refreshMarkerTimestamp","searchMarker","pm","markPosition","updateMarkerChanges","callTypeObservers","changedType","_eH","parentSubs","typeListToArray","cs","typeListForEach","typeListMap","result","typeListCreateIterator","currentContent","currentContentIndex","typeListInsertGenericsAfter","referenceItem","ownClientId","jsonContent","packJsonContent","lastId","ContentAny","typeListInsertGenerics","startIndex","typeListDelete","startLength","typeMapDelete","typeMapSet","typeMapGet","createMapIterator","iteratorFilter","entry","YArrayEvent","_prelimContent","typeListGet","writeTypeRef","YArrayRefID","YMapEvent","ymap","keysChanged","typeMapHas","YMapRefID","equalAttrs","currentAttributes","ContentString","updateCurrentAttributes","findNextPosition","findPosition","insertNegatedAttributes","currPos","negatedAttributes","forward","minimizeAttributeChanges","insertAttributes","currentVal","insertText","formatText","attr","newlines","cleanupFormattingGap","startAttributes","endAttributes","cleanups","deleteText","startAttrs","YTextEvent","ytext","_delta","oldAttributes","deleteLen","addOp","op","curVal","_pending","foundFormattingItem","afterClock","cleanupYTextFormatting","attrs","cleanupContextlessFormattingGap","sanitize","ins","applyDelta","prevSnapshot","computeYChange","packStr","addAttributes","cur","user","insertEmbed","YTextRefID","YXmlTreeWalker","_filter","_root","_currentNode","_firstCall","YXmlElement","nodeName","YXmlEvent","xml","_document","hooks","fragment","createDocumentFragment","_createAssociation","xmlType","toDOM","YXmlFragmentRefID","_prelimAttrs","getAttributes","stringBuilder","keysLen","toLocaleLowerCase","attributeName","attributeValue","typeMapGetAll","dom","yxml","YXmlElementRefID","writeKey","childListChanged","attributesChanged","YXmlHook","hookName","hook","createDom","YXmlHookRefID","YXmlText","toDelta","nestedNodes","node","YXmlTextRefID","encodingRef","writeInfo","writeLen","writeBuf","ContentDeleted","markDeleted","writeJSON","ContentJSON","writeString","typeRefs","readKey","_copy","_write","nextID","redone","leftItem","rightItem","rightOrigin","isCountable","isMarked","doKeep","doDelete","parentItem","conflictingItems","itemsBeforeOrigin","addChangedTypeToTransaction","parentGCd","newStruct","replaceStruct","getRef","writeLeftID","writeRightID","ykey","writeParentInfo","contentRefs","readBuf","readJSON","readTypeRef","channels","BC","BroadcastChannel","room","onmessage","storage","setItem","getChannel","bc","publish","postMessage","writeSyncStep1","writeSyncStep2","encodedStateVector","readSyncStep2","decoding","readSyncMessage","messageType","readSyncStep1","states","_checkInterval","setInterval","getLocalState","outdatedTimeout","lastUpdated","setLocalState","removeAwarenessStates","currLocalMeta","prevState","updated","filteredUpdated","removed","field","awareness","curMeta","encodeAwarenessUpdate","createMutex","token","provider","reason","warn","url","readMessage","emitSynced","syncMessageType","synced","getStates","clientMeta","currClock","permissionDeniedHandler","setupWS","shouldConnect","ws","websocket","_WS","binaryType","wsconnecting","wsconnected","wsLastMessageReceived","send","onclose","status","wsUnsuccessfulReconnects","onopen","encoderAwarenessState","broadcastMessage","bcconnected","mux","serverUrl","roomname","connect","WebSocketPolyfill","WebSocket","resyncInterval","encodedParams","results","bcChannel","_localAwarenessState","_synced","_resyncInterval","alert","_bcSubscriber","_updateHandler","_awarenessUpdateHandler","changedClients","close","messageReconnectTimeout","encoderSync","encoderState","encoderAwarenessQuery","disconnectBc","connectBc","updateCursor","quillCursors","aw","clientId","anchor","err","getModule","_negatedUsedFormats","_awarenessChange","_typeObserver","eventDelta","_quillObserver","eventType","sel","setLocalStateField","setContents","getWindow","getWindowScroll","win","isElement","isHTMLElement","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","scroll","offsets","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getParentNode","assignedSlot","listScrollParents","scrollParent","getScrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","html","getOffsetParent","currentNode","perspective","willChange","getContainingBlock","basePlacements","variationPlacements","acc","placement","modifierPhases","order","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","fn","pending","orderedModifiers","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","current","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","roundOffsets","hasX","hasY","sideX","sideY","_Object$assign","commonStyles","getOppositePlacement","matched","getOppositeVariationPlacement","contains","rootNode","getRootNode","ShadowRoot","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","userAgent","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","arrow","initialStyles","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","TOUCH_OPTIONS","capture","getValueAtIndexOrReturn","defaultValue","isType","invokeWithArgsOrReturn","ms","normalizeToArray","pushIfUnique","arrayFrom","div","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","els","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","listener","method","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","onWindowBlur","activeElement","blur","ua","isIE","pluginProps","animateFill","followCursor","inlinePositioning","defaultProps","appendTo","aria","expanded","delay","duration","getReferenceClientRect","hideOnClick","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onHidden","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","plugins","popperOptions","render","showOnCreate","touch","trigger","triggerTarget","allowHTML","animation","inertia","maxWidth","role","theme","defaultKeys","getExtendedPassedProps","passedProps","plugin","evaluateProps","valueAsString","getDataAttributeProps","dangerouslySetInnerHTML","createArrowElement","getChildren","firstElementChild","boxChildren","backdrop","prevProps","nextProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isEnabled","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","setContent","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","getCurrentTarget","hasAttribute","getIsDefaultRenderFn","visibility","addDocumentPress","transition","_getDefaultTemplateCh2","getDefaultTemplateChildren","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","callback","onTransitionEnd","onTransitionedIn","mount","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","getDocument","enable","disable","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","pointerEvents","shouldInvokePropsHook","_instance$props","pluginHooks","currentValue","nextValue","onDocumentPress","onTouchMove","onTouchStart","handler","onMouseLeave","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","clientY","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$popperInsta","relatedTarget","_instance$props2","computedReference","_getNormalizedTouchSe","touchValue","touchDelay","tippy","targets","optionalProps","instances","setDefaultProps","Positioning","getAllStyles","getStyle","isStaticPositioned","offsetParentEl","elPosition","parentOffset","elBcr","viewportOffset","elOffset","positionElements","hostElement","targetElement","appendToBody","placementPrimary","_c","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","windowHeight","innerHeight","windowWidth","innerWidth","placementSeparator","positionService","QuillEvents","QuillSources","__assign","DEFAULT_PLACEMENT","TableUI","TOGGLE_TEMPLATE","DEFAULTS","maxRowCount","menuItems","getColCount","table","insertColumnRight","insertColumnLeft","insertRowAbove","insertRowBelow","deleteColumn","deleteRow","deleteTable","editorChangeHandler","detectButton","contextMenuHandler","evt","isTable","preventDefault","showMenu","toggleClickHandler","toggleMenu","stopPropagation","docClickHandler","hideMenu","EDITOR_CHANGE","getTable","rows","row","menu","it","createMenuItem","baseClass","placementVals","addClassesToTarget","targetPlacement","primary","secondary","classes","classname","placementToRemove","hasAuto","findIndex","testPlacement","isInViewport","placementVals_1","addedClasses","iconSpan","textSpan","innerText","focus","getLine","cell","containerBounds","bounds","showToggle","hideToggle","handleDrop","handlePaste","dataTransfer","files","caretRangeFromPoint","selection","setBaseAndExtent","readFiles","clipboardData","items","dataUrl","FileReader","onload","blob","getAsFile","Blob","readAsDataURL","documentUUID","getText","editor","editorInstance","providerInstance","divergent_name","divergent_color","save","ajax","saveRoute","csrfToken","success","xhr","jqXhr","textStatus","errorMessage","saveLoop","checker","keypress"],"mappings":"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","file":"quill.bundle.js","sourcesContent":[" \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 = \"/quill/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\n\n/* istanbul ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nconst verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer.\n *\n * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num >>>= 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * Encodes integers in the range from [-2147483648, -2147483647].\n *\n * We don't use zig-zag encoding because we want to keep the option open\n * to use the same function for BigInt and 53bit integers (doubles).\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num >>>= 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num >>>= 7\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeVarString = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write the content of another Encoder.\n *\n * TODO: can be improved!\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object|Array|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && data <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (data instanceof Array) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = buffer.createUint8ArrayViewFromArrayBuffer(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let len = 0\n while (true) {\n const r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return num >>> 0 // return unsigned number!\n }\n /* istanbul ignore if */\n if (len > 35) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if unmber is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let len = 6\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n while (true) {\n r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return sign * (num >>> 0)\n }\n /* istanbul ignore if */\n if (len > 41) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\nexport const readVarString = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0)\n\n/**\n * @type {Array}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object\n const len = readVarUint(decoder)\n /**\n * @type {Object}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = diff >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template X,Y\n * @param {Map} m\n * @return {Map}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template T,K\n * @param {Map} map\n * @param {K} key\n * @param {function():T} createT\n * @return {T}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map} m\n * @param {function(V,K):R} f\n * @return {Array}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* istanbul ignore next */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* istanbul ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* istanbul ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _deepmerge = require('deepmerge');\n\nvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\nvar _Options = require('./Options');\n\nvar _Options2 = _interopRequireDefault(_Options);\n\nvar _Action = require('./actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\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 dontMerge = function dontMerge(destination, source) {\n return source;\n};\n\nvar BlotFormatter = function () {\n function BlotFormatter(quill) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BlotFormatter);\n\n this.onClick = function () {\n _this.hide();\n };\n\n this.quill = quill;\n this.options = (0, _deepmerge2.default)(_Options2.default, options, { arrayMerge: dontMerge });\n this.currentSpec = null;\n this.actions = [];\n this.overlay = document.createElement('div');\n this.overlay.classList.add(this.options.overlay.className);\n if (this.options.overlay.style) {\n Object.assign(this.overlay.style, this.options.overlay.style);\n }\n\n // disable native image resizing on firefox\n document.execCommand('enableObjectResizing', false, 'false'); // eslint-disable-line no-undef\n this.quill.root.parentNode.style.position = this.quill.root.parentNode.style.position || 'relative';\n\n this.quill.root.addEventListener('click', this.onClick);\n this.specs = this.options.specs.map(function (SpecClass) {\n return new SpecClass(_this);\n });\n this.specs.forEach(function (spec) {\n return spec.init();\n });\n }\n\n _createClass(BlotFormatter, [{\n key: 'show',\n value: function show(spec) {\n this.currentSpec = spec;\n this.currentSpec.setSelection();\n this.setUserSelect('none');\n this.quill.root.parentNode.appendChild(this.overlay);\n this.repositionOverlay();\n this.createActions(spec);\n }\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.currentSpec) {\n return;\n }\n\n this.currentSpec.onHide();\n this.currentSpec = null;\n this.quill.root.parentNode.removeChild(this.overlay);\n this.overlay.style.setProperty('display', 'none');\n this.setUserSelect('');\n this.destroyActions();\n }\n }, {\n key: 'update',\n value: function update() {\n this.repositionOverlay();\n this.actions.forEach(function (action) {\n return action.onUpdate();\n });\n }\n }, {\n key: 'createActions',\n value: function createActions(spec) {\n var _this2 = this;\n\n this.actions = spec.getActions().map(function (ActionClass) {\n var action = new ActionClass(_this2);\n action.onCreate();\n return action;\n });\n }\n }, {\n key: 'destroyActions',\n value: function destroyActions() {\n this.actions.forEach(function (action) {\n return action.onDestroy();\n });\n this.actions = [];\n }\n }, {\n key: 'repositionOverlay',\n value: function repositionOverlay() {\n if (!this.currentSpec) {\n return;\n }\n\n var overlayTarget = this.currentSpec.getOverlayElement();\n if (!overlayTarget) {\n return;\n }\n\n var parent = this.quill.root.parentNode;\n var specRect = overlayTarget.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n\n Object.assign(this.overlay.style, {\n display: 'block',\n left: specRect.left - parentRect.left - 1 + parent.scrollLeft + 'px',\n top: specRect.top - parentRect.top + parent.scrollTop + 'px',\n width: specRect.width + 'px',\n height: specRect.height + 'px'\n });\n }\n }, {\n key: 'setUserSelect',\n value: function setUserSelect(value) {\n var _this3 = this;\n\n var props = ['userSelect', 'mozUserSelect', 'webkitUserSelect', 'msUserSelect'];\n\n props.forEach(function (prop) {\n // set on contenteditable element and \n _this3.quill.root.style.setProperty(prop, value);\n if (document.documentElement) {\n document.documentElement.style.setProperty(prop, value);\n }\n });\n }\n }]);\n\n return BlotFormatter;\n}();\n\nexports.default = BlotFormatter;","/*!\n * Quill Editor v2.0.0-dev.3\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\n\\n//# sourceURL=webpack://Quill/./assets/icons/video.svg?\");\n\n/***/ }),\n\n/***/ \"./blots/block.js\":\n/*!************************!*\\\n !*** ./blots/block.js ***!\n \\************************/\n/*! exports provided: blockDelta, bubbleFormats, BlockEmbed, 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__, \\\"blockDelta\\\", function() { return blockDelta; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bubbleFormats\\\", function() { return bubbleFormats; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BlockEmbed\\\", function() { return BlockEmbed; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Block; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\nconst NEWLINE_LENGTH = 1;\\n\\nclass Block extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n this.cache = {};\\n }\\n\\n insertAt(index, value, def) {\\n if (def != null) {\\n super.insertAt(index, value, def);\\n this.cache = {};\\n return;\\n }\\n\\n if (value.length === 0) return;\\n const lines = value.split('\\\\n');\\n const text = lines.shift();\\n\\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\\n this.cache = {};\\n }\\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 {\\n head\\n } = this.children;\\n super.insertBefore(blot, ref);\\n\\n if (head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]) {\\n head.remove();\\n }\\n\\n this.cache = {};\\n }\\n\\n length() {\\n if (this.cache.length == null) {\\n this.cache.length = super.length() + NEWLINE_LENGTH;\\n }\\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\\n if (index === 0) {\\n this.parent.insertBefore(clone, this);\\n return this;\\n }\\n\\n this.parent.insertBefore(clone, this.next);\\n return clone;\\n }\\n\\n const next = super.split(index, force);\\n this.cache = {};\\n return next;\\n }\\n\\n}\\n\\nBlock.blotName = 'block';\\nBlock.tagName = 'P';\\nBlock.defaultChild = _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"];\\nBlock.allowedChildren = [_break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], _inline__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]];\\n\\nclass BlockEmbed extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"] {\\n attach() {\\n super.attach();\\n this.attributes = new parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"AttributorStore\\\"](this.domNode);\\n }\\n\\n delta() {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(this.value(), extend__WEBPACK_IMPORTED_MODULE_0___default()(this.formats(), this.attributes.values()));\\n }\\n\\n format(name, value) {\\n const attribute = this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_ATTRIBUTE);\\n\\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\\n}\\n\\nBlockEmbed.scope = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\\n\\nfunction blockDelta(blot, filter = true) {\\n return blot.descendants(parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"LeafBlot\\\"]).reduce((delta, leaf) => {\\n if (leaf.length() === 0) {\\n return delta;\\n }\\n\\n return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a()).insert('\\\\n', bubbleFormats(blot));\\n}\\n\\nfunction bubbleFormats(blot, formats = {}, filter = true) {\\n if (blot == null) return formats;\\n\\n if (typeof blot.formats === 'function') {\\n formats = extend__WEBPACK_IMPORTED_MODULE_0___default()(formats, blot.formats());\\n\\n if (filter) {\\n // exclude syntax highlighting from deltas and getFormat()\\n delete formats['code-token'];\\n }\\n }\\n\\n if (blot.parent == null || blot.parent.statics.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\\n return formats;\\n }\\n\\n return bubbleFormats(blot.parent, formats, filter);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/block.js?\");\n\n/***/ }),\n\n/***/ \"./blots/break.js\":\n/*!************************!*\\\n !*** ./blots/break.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Break extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n}\\n\\nBreak.blotName = 'break';\\nBreak.tagName = 'BR';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Break);\\n\\n//# sourceURL=webpack://Quill/./blots/break.js?\");\n\n/***/ }),\n\n/***/ \"./blots/container.js\":\n/*!****************************!*\\\n !*** ./blots/container.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Container extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"] {}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Container);\\n\\n//# sourceURL=webpack://Quill/./blots/container.js?\");\n\n/***/ }),\n\n/***/ \"./blots/cursor.js\":\n/*!*************************!*\\\n !*** ./blots/cursor.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\nclass Cursor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n let target = this;\\n let index = 0;\\n\\n while (target != null && target.statics.scope !== parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK_BLOT) {\\n index += target.offset(target.parent);\\n target = target.parent;\\n }\\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(); // Link format will insert text outside of anchor tag\\n\\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\\n }\\n\\n const prevTextBlot = this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.prev : null;\\n const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\\n const nextTextBlot = this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.next : null;\\n const nextText = nextTextBlot ? nextTextBlot.text : '';\\n const {\\n textNode\\n } = this; // take text from inside this blot and reset it\\n\\n const newText = textNode.data.split(Cursor.CONTENTS).join('');\\n textNode.data = Cursor.CONTENTS; // proactively merge TextBlots around cursor so that optimization\\n // doesn't lose the cursor. the reason we are here in cursor.restore\\n // could be that the user clicked in prevTextBlot or nextTextBlot, or\\n // the user typed something.\\n\\n let mergedTextBlot;\\n\\n if (prevTextBlot) {\\n mergedTextBlot = prevTextBlot;\\n\\n if (newText || nextTextBlot) {\\n prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\\n\\n if (nextTextBlot) {\\n nextTextBlot.remove();\\n }\\n }\\n } else if (nextTextBlot) {\\n mergedTextBlot = nextTextBlot;\\n nextTextBlot.insertAt(0, newText);\\n } else {\\n const newTextNode = document.createTextNode(newText);\\n mergedTextBlot = this.scroll.create(newTextNode);\\n this.parent.insertBefore(mergedTextBlot, this);\\n }\\n\\n this.remove();\\n\\n if (range) {\\n // calculate selection to restore\\n const remapOffset = (node, offset) => {\\n if (prevTextBlot && node === prevTextBlot.domNode) {\\n return offset;\\n }\\n\\n if (node === textNode) {\\n return prevTextLength + offset - 1;\\n }\\n\\n if (nextTextBlot && node === nextTextBlot.domNode) {\\n return prevTextLength + newText.length + offset;\\n }\\n\\n return null;\\n };\\n\\n const start = remapOffset(range.start.node, range.start.offset);\\n const end = remapOffset(range.end.node, range.end.offset);\\n\\n if (start !== null && end !== null) {\\n return {\\n startNode: mergedTextBlot.domNode,\\n startOffset: start,\\n endNode: mergedTextBlot.domNode,\\n endOffset: end\\n };\\n }\\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\\n}\\n\\nCursor.blotName = 'cursor';\\nCursor.className = 'ql-cursor';\\nCursor.tagName = 'span';\\nCursor.CONTENTS = '\\\\uFEFF'; // Zero width no break space\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Cursor);\\n\\n//# sourceURL=webpack://Quill/./blots/cursor.js?\");\n\n/***/ }),\n\n/***/ \"./blots/embed.js\":\n/*!************************!*\\\n !*** ./blots/embed.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\nconst GUARD_TEXT = '\\\\uFEFF';\\n\\nclass Embed extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (node === this.leftGuard) {\\n if (this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Embed);\\n\\n//# sourceURL=webpack://Quill/./blots/embed.js?\");\n\n/***/ }),\n\n/***/ \"./blots/inline.js\":\n/*!*************************!*\\\n !*** ./blots/inline.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\nclass Inline extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"InlineBlot\\\"] {\\n static compare(self, other) {\\n const selfIndex = Inline.order.indexOf(self);\\n const otherIndex = Inline.order.indexOf(other);\\n\\n if (selfIndex >= 0 || otherIndex >= 0) {\\n return selfIndex - otherIndex;\\n }\\n\\n if (self === other) {\\n return 0;\\n }\\n\\n if (self < other) {\\n return -1;\\n }\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOT)) {\\n const blot = this.isolate(index, length);\\n\\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\\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\\n}\\n\\nInline.allowedChildren = [Inline, _break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\\n\\nInline.order = ['cursor', 'inline', // Must be lower\\n'link', // Chrome wants to be lower\\n'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\\n];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Inline);\\n\\n//# sourceURL=webpack://Quill/./blots/inline.js?\");\n\n/***/ }),\n\n/***/ \"./blots/scroll.js\":\n/*!*************************!*\\\n !*** ./blots/scroll.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./container */ \\\"./blots/container.js\\\");\\n\\n\\n\\n\\n\\n\\nfunction isLine(blot) {\\n return blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] || blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"];\\n}\\n\\nclass Scroll extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ScrollBlot\\\"] {\\n constructor(registry, domNode, {\\n emitter\\n }) {\\n super(registry, domNode);\\n this.emitter = emitter;\\n this.batch = false;\\n this.optimize();\\n this.enable();\\n this.domNode.addEventListener('dragstart', e => this.handleDragStart(e));\\n }\\n\\n batchStart() {\\n if (!Array.isArray(this.batch)) {\\n this.batch = [];\\n }\\n }\\n\\n batchEnd() {\\n const mutations = this.batch;\\n this.batch = false;\\n this.update(mutations);\\n }\\n\\n emitMount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_MOUNT, blot);\\n }\\n\\n emitUnmount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_UNMOUNT, blot);\\n }\\n\\n deleteAt(index, length) {\\n const [first, offset] = this.line(index);\\n const [last] = this.line(index + length);\\n super.deleteAt(index, length);\\n\\n if (last != null && first !== last && offset > 0) {\\n if (first instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"] || last instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"]) {\\n this.optimize();\\n return;\\n }\\n\\n const ref = last.children.head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] ? null : last.children.head;\\n first.moveChildren(last, ref);\\n first.remove();\\n }\\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 handleDragStart(event) {\\n event.preventDefault();\\n }\\n\\n insertAt(index, value, def) {\\n if (index >= this.length()) {\\n if (def == null || this.scroll.query(value, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) == null) {\\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\\n this.appendChild(blot);\\n\\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\\n this.optimize();\\n }\\n\\n insertBefore(blot, ref) {\\n if (blot.statics.scope === parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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 isEnabled() {\\n return this.domNode.getAttribute('contenteditable') === 'true';\\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\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"]) {\\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\\n }\\n\\n lengthLeft -= childLength;\\n });\\n return lines;\\n };\\n\\n return getLines(this, index, length);\\n }\\n\\n optimize(mutations = [], context = {}) {\\n if (this.batch) return;\\n super.optimize(mutations, context);\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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() {// Never remove self\\n }\\n\\n update(mutations) {\\n if (this.batch) {\\n if (Array.isArray(mutations)) {\\n this.batch = this.batch.concat(mutations);\\n }\\n\\n return;\\n }\\n\\n let source = _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER;\\n\\n if (typeof mutations === 'string') {\\n source = mutations;\\n }\\n\\n if (!Array.isArray(mutations)) {\\n mutations = this.observer.takeRecords();\\n }\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BEFORE_UPDATE, source, mutations);\\n }\\n\\n super.update(mutations.concat([])); // pass copy\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_UPDATE, source, mutations);\\n }\\n }\\n\\n}\\n\\nScroll.blotName = 'scroll';\\nScroll.className = 'ql-editor';\\nScroll.tagName = 'DIV';\\nScroll.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"];\\nScroll.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"], _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"], _container__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Scroll);\\n\\n//# sourceURL=webpack://Quill/./blots/scroll.js?\");\n\n/***/ }),\n\n/***/ \"./blots/text.js\":\n/*!***********************!*\\\n !*** ./blots/text.js ***!\n \\***********************/\n/*! exports provided: default, escapeText */\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 Text; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"escapeText\\\", function() { return escapeText; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Text extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"TextBlot\\\"] {}\\n\\nfunction escapeText(text) {\\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 });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/text.js?\");\n\n/***/ }),\n\n/***/ \"./core.js\":\n/*!*****************!*\\\n !*** ./core.js ***!\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 _core_quill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_embed__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blots/embed */ \\\"./blots/embed.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_scroll__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blots/scroll */ \\\"./blots/scroll.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/clipboard */ \\\"./modules/clipboard.js\\\");\\n/* harmony import */ var _modules_history__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/history */ \\\"./modules/history.js\\\");\\n/* harmony import */ var _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/keyboard */ \\\"./modules/keyboard.js\\\");\\n/* harmony import */ var _modules_uploader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/uploader */ \\\"./modules/uploader.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'blots/block': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"],\\n 'blots/block/embed': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"BlockEmbed\\\"],\\n 'blots/break': _blots_break__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"],\\n 'blots/container': _blots_container__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'blots/cursor': _blots_cursor__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'blots/embed': _blots_embed__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'blots/inline': _blots_inline__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'blots/scroll': _blots_scroll__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"],\\n 'blots/text': _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"],\\n 'modules/clipboard': _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"],\\n 'modules/history': _modules_history__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"],\\n 'modules/keyboard': _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'modules/uploader': _modules_uploader__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./core.js?\");\n\n/***/ }),\n\n/***/ \"./core/editor.js\":\n/*!************************!*\\\n !*** ./core/editor.js ***!\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 clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\\n if (op.insert != null) {\\n if (typeof op.insert === 'string') {\\n let text = op.insert;\\n\\n if (text.endsWith('\\\\n') && consumeNextNewline) {\\n consumeNextNewline = false;\\n text = text.slice(0, -1);\\n }\\n\\n if ((index >= scrollLength || this.scroll.descendant(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"BlockEmbed\\\"], index)[0]) && !text.endsWith('\\\\n')) {\\n consumeNextNewline = true;\\n }\\n\\n this.scroll.insertAt(index, text);\\n const [line, offset] = this.scroll.line(index);\\n let formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(line));\\n\\n if (line instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n const [leaf] = line.descendant(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], offset);\\n formats = extend__WEBPACK_IMPORTED_MODULE_2___default()(formats, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(leaf));\\n }\\n\\n attributes = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].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\\n if (key == null) return index;\\n this.scroll.insertAt(index, key, op.insert[key]);\\n }\\n\\n scrollLength += length;\\n }\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n }\\n\\n getFormat(index, length = 0) {\\n let lines = [];\\n let leaves = [];\\n\\n if (length === 0) {\\n this.scroll.path(index).forEach(path => {\\n const [blot] = path;\\n\\n if (blot instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n lines.push(blot);\\n } else if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"]) {\\n leaves.push(blot);\\n }\\n });\\n } else {\\n lines = this.scroll.lines(index, length);\\n leaves = this.scroll.descendants(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], index, length);\\n }\\n\\n const formatsArr = [lines, leaves].map(blots => {\\n if (blots.length === 0) return {};\\n let formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blots.shift());\\n\\n while (Object.keys(formats).length > 0) {\\n const blot = blots.shift();\\n if (blot == null) return formats;\\n formats = combineFormats(Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blot), formats);\\n }\\n\\n return formats;\\n });\\n return extend__WEBPACK_IMPORTED_MODULE_2___default.a.apply(extend__WEBPACK_IMPORTED_MODULE_2___default.a, formatsArr);\\n }\\n\\n getHTML(index, length) {\\n const [line, lineOffset] = this.scroll.line(index);\\n\\n if (line.length() >= lineOffset + length) {\\n return convertHTML(line, lineOffset, length, true);\\n }\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert({\\n [embed]: value\\n }));\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(text, clone__WEBPACK_IMPORTED_MODULE_0___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 !== _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].blotName) return false;\\n if (block.children.length > 1) return false;\\n return block.children.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"];\\n }\\n\\n removeFormat(index, length) {\\n const text = this.getText(index, length);\\n const [line, offset] = this.scroll.line(index + length);\\n let suffixLength = 0;\\n let suffix = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a();\\n\\n if (line != null) {\\n suffixLength = line.length() - offset;\\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\\\n');\\n }\\n\\n const contents = this.getContents(index, length + suffixLength);\\n const diff = contents.diff(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(text).concat(suffix));\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(diff);\\n return this.applyDelta(delta);\\n }\\n\\n update(change, mutations = [], selectionInfo = undefined) {\\n const oldDelta = this.delta;\\n\\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 = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(textBlot);\\n const index = textBlot.offset(this.scroll);\\n const oldValue = mutations[0].oldValue.replace(_blots_cursor__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].CONTENTS, '');\\n const oldText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(oldValue);\\n const newText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(textBlot.value());\\n const relativeSelectionInfo = selectionInfo && {\\n oldRange: shiftRange(selectionInfo.oldRange, -index),\\n newRange: shiftRange(selectionInfo.newRange, -index)\\n };\\n const diffDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\\n change = diffDelta.reduce((delta, op) => {\\n if (op.insert) {\\n return delta.insert(op.insert, formats);\\n }\\n\\n return delta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n this.delta = oldDelta.compose(change);\\n } else {\\n this.delta = this.getDelta();\\n\\n if (!change || !deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(oldDelta.compose(change), this.delta)) {\\n change = oldDelta.diff(this.delta, selectionInfo);\\n }\\n }\\n\\n return change;\\n }\\n\\n}\\n\\nfunction convertListHTML(items, lastIndent, types) {\\n if (items.length === 0) {\\n const [endTag] = getListType(types.pop());\\n\\n if (lastIndent <= 0) {\\n return \\\"\\\");\\n }\\n\\n return \\\"\\\").concat(convertListHTML([], lastIndent - 1, types));\\n }\\n\\n const [{\\n child,\\n offset,\\n length,\\n indent,\\n type\\n }, ...rest] = items;\\n const [tag, attribute] = getListType(type);\\n\\n if (indent > lastIndent) {\\n types.push(type);\\n\\n if (indent === lastIndent + 1) {\\n return \\\"<\\\".concat(tag, \\\">\\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n return \\\"<\\\".concat(tag, \\\">
  • \\\").concat(convertListHTML(items, lastIndent + 1, types));\\n }\\n\\n const previousType = types[types.length - 1];\\n\\n if (indent === lastIndent && type === previousType) {\\n return \\\"
  • \\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n const [endTag] = getListType(types.pop());\\n return \\\"\\\").concat(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 }\\n\\n if (blot instanceof _blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]) {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"escapeText\\\"])(blot.value().slice(index, index + length));\\n }\\n\\n 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\\n const parts = [];\\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\\n parts.push(convertHTML(child, offset, childLength));\\n });\\n\\n if (isRoot || blot.statics.blotName === 'list') {\\n return parts.join('');\\n }\\n\\n const {\\n outerHTML,\\n innerHTML\\n } = blot.domNode;\\n const [start, end] = outerHTML.split(\\\">\\\".concat(innerHTML, \\\"<\\\")); // TODO cleanup\\n\\n if (start === '\\\".concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\n\\n return \\\"\\\".concat(start, \\\">\\\").concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\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\\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\\n return merged;\\n }, {});\\n}\\n\\nfunction getListType(type) {\\n const tag = type === 'ordered' ? 'ol' : 'ul';\\n\\n switch (type) {\\n case 'checked':\\n return [tag, ' data-list=\\\"checked\\\"'];\\n\\n case 'unchecked':\\n return [tag, ' data-list=\\\"unchecked\\\"'];\\n\\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\\n return normalizedDelta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n}\\n\\nfunction shiftRange({\\n index,\\n length\\n}, amount) {\\n return new _selection__WEBPACK_IMPORTED_MODULE_5__[\\\"Range\\\"](index + amount, length);\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Editor);\\n\\n//# sourceURL=webpack://Quill/./core/editor.js?\");\n\n/***/ }),\n\n/***/ \"./core/emitter.js\":\n/*!*************************!*\\\n !*** ./core/emitter.js ***!\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 eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \\\"./node_modules/eventemitter3/index.js\\\");\\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"])('quill:events');\\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\\nEVENTS.forEach(eventName => {\\n document.addEventListener(eventName, (...args) => {\\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\\n const quill = _instances__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].get(node);\\n\\n if (quill && quill.emitter) {\\n quill.emitter.handleDOM(...args);\\n }\\n });\\n });\\n});\\n\\nclass Emitter extends eventemitter3__WEBPACK_IMPORTED_MODULE_0___default.a {\\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(({\\n node,\\n handler\\n }) => {\\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\\n this.listeners[eventName].push({\\n node,\\n handler\\n });\\n }\\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/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Emitter);\\n\\n//# sourceURL=webpack://Quill/./core/emitter.js?\");\n\n/***/ }),\n\n/***/ \"./core/instances.js\":\n/*!***************************!*\\\n !*** ./core/instances.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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};\\n\\ndebug.level = namespace.level;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (namespace);\\n\\n//# sourceURL=webpack://Quill/./core/logger.js?\");\n\n/***/ }),\n\n/***/ \"./core/module.js\":\n/*!************************!*\\\n !*** ./core/module.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\nclass Module {\\n constructor(quill, options = {}) {\\n this.quill = quill;\\n this.options = options;\\n }\\n\\n}\\n\\nModule.DEFAULTS = {};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Module);\\n\\n//# sourceURL=webpack://Quill/./core/module.js?\");\n\n/***/ }),\n\n/***/ \"./core/quill.js\":\n/*!***********************!*\\\n !*** ./core/quill.js ***!\n \\***********************/\n/*! exports provided: globalRegistry, expandConfig, overload, 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__, \\\"globalRegistry\\\", function() { return globalRegistry; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"expandConfig\\\", function() { return expandConfig; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"overload\\\", function() { return overload; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Quill; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editor */ \\\"./core/editor.js\\\");\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./theme */ \\\"./core/theme.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"])('quill');\\nconst globalRegistry = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Registry\\\"]();\\nparchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ParentBlot\\\"].uiClass = 'ql-ui';\\n\\nclass Quill {\\n static debug(limit) {\\n if (limit === true) {\\n limit = 'log';\\n }\\n\\n _logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"].level(limit);\\n }\\n\\n static find(node) {\\n return _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].get(node) || globalRegistry.find(node);\\n }\\n\\n static import(name) {\\n if (this.imports[name] == null) {\\n debug.error(\\\"Cannot import \\\".concat(name, \\\". Are you sure it was registered?\\\"));\\n }\\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\\n if (typeof name === 'string') {\\n // register(Blot | Attributor, overwrite)\\n this.register(\\\"formats/\\\".concat(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 \\\".concat(path, \\\" with\\\"), target);\\n }\\n\\n this.imports[path] = target;\\n\\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\\n globalRegistry.register(target);\\n }\\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\\n if (this.container == null) {\\n return debug.error('Invalid Quill container', container);\\n }\\n\\n if (this.options.debug) {\\n Quill.debug(this.options.debug);\\n }\\n\\n const html = this.container.innerHTML.trim();\\n this.container.classList.add('ql-container');\\n this.container.innerHTML = '';\\n _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].set(this.container, this);\\n this.root = this.addContainer('ql-editor');\\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 _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]();\\n const ScrollBlot = this.options.registry.query(parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ScrollBlot\\\"].blotName);\\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\\n emitter: this.emitter\\n });\\n this.editor = new _editor__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](this.scroll);\\n this.selection = new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"](this.scroll, this.emitter);\\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, type => {\\n if (type === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE) {\\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.SCROLL_UPDATE, (source, mutations) => {\\n const oldRange = this.selection.lastRange;\\n const [newRange] = this.selection.getRange();\\n const selectionInfo = oldRange && newRange ? {\\n oldRange,\\n newRange\\n } : undefined;\\n modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\\n });\\n const contents = this.clipboard.convert({\\n html: \\\"\\\".concat(html, \\\"


    \\\"),\\n text: '\\\\n'\\n });\\n this.setContents(contents);\\n this.history.clear();\\n\\n if (this.options.placeholder) {\\n this.root.setAttribute('data-placeholder', this.options.placeholder);\\n }\\n\\n if (this.options.readOnly) {\\n this.disable();\\n }\\n\\n this.allowReadOnlyEdits = false;\\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\\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 [index, length,, source] = overload(index, length, source);\\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 editReadOnly(modifier) {\\n this.allowReadOnlyEdits = true;\\n const value = modifier();\\n this.allowReadOnlyEdits = false;\\n return value;\\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 {\\n scrollTop\\n } = this.scrollingContainer;\\n this.selection.focus();\\n this.scrollingContainer.scrollTop = scrollTop;\\n this.scrollIntoView();\\n }\\n\\n format(name, value, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n const range = this.getSelection(true);\\n let change = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n if (range == null) return change;\\n\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n return change;\\n }, source);\\n }\\n\\n formatLine(index, length, name, value, source) {\\n let formats; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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\\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\\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 [index, length] = overload(index, length);\\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\\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\\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\\n return this.selection.getRange()[0];\\n }\\n\\n getSemanticHTML(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\n return this.editor.getHTML(index, length);\\n }\\n\\n getText(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\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; // eslint-disable-next-line prefer-const\\n\\n [index,, formats, source] = overload(index, 0, name, value, source);\\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.scroll.isEnabled();\\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 [index, length,, source] = overload(index, length, source);\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(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\\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\\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 [index, length,, source] = overload(index, length, source);\\n this.selection.setRange(new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](Math.max(0, index), length), source);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.selection.scrollIntoView(this.scrollingContainer);\\n }\\n }\\n }\\n\\n setText(text, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text);\\n return this.setContents(delta, source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) {\\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\\n\\n this.selection.update(source); // TODO this is usually undefined\\n\\n return change;\\n }\\n\\n updateContents(delta, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\\n return this.editor.applyDelta(delta, source);\\n }, source, true);\\n }\\n\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events;\\nQuill.sources = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources; // eslint-disable-next-line no-undef\\n\\nQuill.version = false ? undefined : \\\"2.0.0-dev.3\\\";\\nQuill.imports = {\\n delta: quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a,\\n parchment: parchment__WEBPACK_IMPORTED_MODULE_1__,\\n 'core/module': _module__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'core/theme': _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]\\n};\\n\\nfunction expandConfig(container, userConfig) {\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {\\n container,\\n modules: {\\n clipboard: true,\\n keyboard: true,\\n history: true,\\n uploader: true\\n }\\n }, userConfig);\\n\\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\\n userConfig.theme = _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"];\\n } else {\\n userConfig.theme = Quill.import(\\\"themes/\\\".concat(userConfig.theme));\\n\\n if (userConfig.theme == null) {\\n throw new Error(\\\"Invalid theme \\\".concat(userConfig.theme, \\\". Did you register it?\\\"));\\n }\\n }\\n\\n const themeConfig = extend__WEBPACK_IMPORTED_MODULE_2___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/\\\".concat(name));\\n\\n if (moduleClass == null) {\\n debug.error(\\\"Cannot load \\\".concat(name, \\\" module. Are you sure you registered it?\\\"));\\n } else {\\n config[name] = moduleClass.DEFAULTS || {};\\n }\\n\\n return config;\\n }, {}); // Special case toolbar shorthand\\n\\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\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {}, Quill.DEFAULTS, {\\n modules: moduleConfig\\n }, 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\\n return config;\\n }, {});\\n return userConfig;\\n} // Handle selection preservation and TEXT_CHANGE emission\\n// common to modification APIs\\n\\n\\nfunction modify(modifier, source, index, shift) {\\n if (!this.isEnabled() && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER && !this.allowReadOnlyEdits) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n }\\n\\n let range = index == null ? null : this.getSelection();\\n const oldDelta = this.editor.delta;\\n const change = modifier();\\n\\n if (range != null) {\\n if (index === true) {\\n index = range.index; // eslint-disable-line prefer-destructuring\\n }\\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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n if (change.length() > 0) {\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE, change, oldDelta, source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\n }\\n\\n return change;\\n}\\n\\nfunction overload(index, length, name, value, source) {\\n let formats = {};\\n\\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\\n index = index.index; // eslint-disable-line prefer-destructuring\\n } else {\\n length = index.length; // eslint-disable-line prefer-destructuring\\n\\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 } // Handle format being object, two format name/value strings or excluded\\n\\n\\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 } // Handle optional source\\n\\n\\n source = source || _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (index instanceof quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a) {\\n [start, end] = [range.index, range.index + range.length].map(pos => index.transformPosition(pos, source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER));\\n } else {\\n [start, end] = [range.index, range.index + range.length].map(pos => {\\n if (pos < index || pos === index && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) return pos;\\n\\n if (length >= 0) {\\n return pos + length;\\n }\\n\\n return Math.max(index, pos + length);\\n });\\n }\\n\\n return new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](start, end - start);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/quill.js?\");\n\n/***/ }),\n\n/***/ \"./core/selection.js\":\n/*!***************************!*\\\n !*** ./core/selection.js ***!\n \\***************************/\n/*! exports provided: Range, 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__, \\\"Range\\\", function() { return Range; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Selection; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"])('quill:selection');\\n\\nclass Range {\\n constructor(index, length = 0) {\\n this.index = index;\\n this.length = length;\\n }\\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); // savedRange is last non-null range\\n\\n this.savedRange = new Range(0, 0);\\n this.lastRange = this.savedRange;\\n this.lastNative = null;\\n this.handleComposition();\\n this.handleDragging();\\n this.emitter.listenDOM('selectionchange', document, () => {\\n if (!this.mouseDown && !this.composing) {\\n setTimeout(this.update.bind(this, _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER), 1);\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.emitter.once(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_UPDATE, () => {\\n try {\\n if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\\n }\\n\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n } catch (ignored) {// ignore\\n }\\n });\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_OPTIMIZE, (mutations, context) => {\\n if (context.range) {\\n const {\\n startNode,\\n startOffset,\\n endNode,\\n endOffset\\n } = context.range;\\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n });\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n handleComposition() {\\n this.root.addEventListener('compositionstart', () => {\\n this.composing = true;\\n this.scroll.batchStart();\\n });\\n this.root.addEventListener('compositionend', () => {\\n this.scroll.batchEnd();\\n this.composing = false;\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK)) return;\\n\\n if (nativeRange.start.node !== this.cursor.textNode) {\\n const blot = this.scroll.find(nativeRange.start.node, false);\\n if (blot == null) return; // TODO Give blot ability to not split\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n this.cursor.attach();\\n }\\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 let [leaf, offset] = this.scroll.leaf(index);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n const range = document.createRange();\\n\\n if (length > 0) {\\n range.setStart(node, offset);\\n [leaf, offset] = this.scroll.leaf(index + length);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n range.setEnd(node, offset);\\n return range.getBoundingClientRect();\\n }\\n\\n let side = 'left';\\n let rect;\\n\\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\\n rect = range.getBoundingClientRect();\\n } else {\\n rect = leaf.domNode.getBoundingClientRect();\\n if (offset > 0) side = 'right';\\n }\\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\\n if (!range.native.collapsed) {\\n positions.push([range.end.node, range.end.offset]);\\n }\\n\\n const indexes = positions.map(position => {\\n const [node, offset] = position;\\n const blot = this.scroll.find(node, true);\\n const index = blot.offset(this.scroll);\\n\\n if (offset === 0) {\\n return index;\\n }\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"LeafBlot\\\"]) {\\n return index + blot.index(node, offset);\\n }\\n\\n return index + blot.length();\\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\\n const range = {\\n start: {\\n node: nativeRange.startContainer,\\n offset: nativeRange.startOffset\\n },\\n end: {\\n node: nativeRange.endContainer,\\n offset: nativeRange.endOffset\\n },\\n native: nativeRange\\n };\\n [range.start, range.end].forEach(position => {\\n let {\\n node,\\n offset\\n } = position;\\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\\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\\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 const [leaf, leafOffset] = this.scroll.leaf(index);\\n const [node, offset] = leaf.position(leafOffset, i !== 0);\\n args.push(node, offset);\\n });\\n\\n if (args.length < 2) {\\n return args.concat(args);\\n }\\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 const [first] = this.scroll.line(Math.min(range.index, limit));\\n let last = first;\\n\\n if (range.length > 0) {\\n [last] = this.scroll.line(Math.min(range.index + range.length, limit));\\n }\\n\\n if (first == null || last == null) return;\\n const scrollBounds = scrollingContainer.getBoundingClientRect();\\n\\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\\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\\n return;\\n }\\n\\n const selection = document.getSelection();\\n if (selection == null) return;\\n\\n if (startNode != null) {\\n if (!this.hasFocus()) this.root.focus();\\n const {\\n native\\n } = this.getNativeRange() || {};\\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\\n if (endNode.tagName === 'BR') {\\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\\n endNode = endNode.parentNode;\\n }\\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 = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.API) {\\n if (typeof force === 'string') {\\n source = force;\\n force = false;\\n }\\n\\n debug.info('setRange', range);\\n\\n if (range != null) {\\n const args = this.rangeToNative(range);\\n this.setNativeRange(...args, force);\\n } else {\\n this.setNativeRange(null);\\n }\\n\\n this.update(source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER) {\\n const oldRange = this.lastRange;\\n const [lastRange, nativeRange] = this.getRange();\\n this.lastRange = lastRange;\\n this.lastNative = nativeRange;\\n\\n if (this.lastRange != null) {\\n this.savedRange = this.lastRange;\\n }\\n\\n if (!deep_equal__WEBPACK_IMPORTED_MODULE_2___default()(oldRange, this.lastRange)) {\\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\\n const range = this.cursor.restore();\\n\\n if (range) {\\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\\n }\\n }\\n\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SELECTION_CHANGE, clone__WEBPACK_IMPORTED_MODULE_1___default()(this.lastRange), clone__WEBPACK_IMPORTED_MODULE_1___default()(oldRange), source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\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\\n return parent.contains(descendant);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/selection.js?\");\n\n/***/ }),\n\n/***/ \"./core/theme.js\":\n/*!***********************!*\\\n !*** ./core/theme.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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/\\\".concat(name));\\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\\n return this.modules[name];\\n }\\n\\n}\\n\\nTheme.DEFAULTS = {\\n modules: {}\\n};\\nTheme.themes = {\\n default: Theme\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Theme);\\n\\n//# sourceURL=webpack://Quill/./core/theme.js?\");\n\n/***/ }),\n\n/***/ \"./formats/align.js\":\n/*!**************************!*\\\n !*** ./formats/align.js ***!\n \\**************************/\n/*! exports provided: AlignAttribute, AlignClass, AlignStyle */\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__, \\\"AlignAttribute\\\", function() { return AlignAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignClass\\\", function() { return AlignClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignStyle\\\", function() { return AlignStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['right', 'center', 'justify']\\n};\\nconst AlignAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('align', 'align', config);\\nconst AlignClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('align', 'ql-align', config);\\nconst AlignStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('align', 'text-align', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/align.js?\");\n\n/***/ }),\n\n/***/ \"./formats/background.js\":\n/*!*******************************!*\\\n !*** ./formats/background.js ***!\n \\*******************************/\n/*! exports provided: BackgroundClass, BackgroundStyle */\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__, \\\"BackgroundClass\\\", function() { return BackgroundClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BackgroundStyle\\\", function() { return BackgroundStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \\\"./formats/color.js\\\");\\n\\n\\nconst BackgroundClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('background', 'ql-bg', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst BackgroundStyle = new _color__WEBPACK_IMPORTED_MODULE_1__[\\\"ColorAttributor\\\"]('background', 'background-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/background.js?\");\n\n/***/ }),\n\n/***/ \"./formats/blockquote.js\":\n/*!*******************************!*\\\n !*** ./formats/blockquote.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Blockquote extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nBlockquote.blotName = 'blockquote';\\nBlockquote.tagName = 'blockquote';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Blockquote);\\n\\n//# sourceURL=webpack://Quill/./formats/blockquote.js?\");\n\n/***/ }),\n\n/***/ \"./formats/bold.js\":\n/*!*************************!*\\\n !*** ./formats/bold.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Bold extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (this.domNode.tagName !== this.statics.tagName[0]) {\\n this.replaceWith(this.statics.blotName);\\n }\\n }\\n\\n}\\n\\nBold.blotName = 'bold';\\nBold.tagName = ['STRONG', 'B'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Bold);\\n\\n//# sourceURL=webpack://Quill/./formats/bold.js?\");\n\n/***/ }),\n\n/***/ \"./formats/code.js\":\n/*!*************************!*\\\n !*** ./formats/code.js ***!\n \\*************************/\n/*! exports provided: Code, CodeBlockContainer, 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__, \\\"Code\\\", function() { return Code; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeBlockContainer\\\", function() { return CodeBlockContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CodeBlock; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nclass CodeBlockContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_5__[\\\"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 text = this.children.map(child => child.domNode.innerText).join('\\\\n').slice(index, index + length);\\n return \\\"
    \\\".concat(Object(_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"escapeText\\\"])(text), \\\"
    \\\");\\n }\\n\\n}\\n\\nclass CodeBlock extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].register(CodeBlockContainer);\\n }\\n\\n}\\n\\nclass Code extends _blots_inline__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] {}\\n\\nCode.blotName = 'code';\\nCode.tagName = 'CODE';\\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';\\nCodeBlockContainer.allowedChildren = [CodeBlock];\\nCodeBlock.allowedChildren = [_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], _blots_cursor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nCodeBlock.requiredContainer = CodeBlockContainer;\\nCodeBlock.TAB = ' ';\\n\\n\\n//# sourceURL=webpack://Quill/./formats/code.js?\");\n\n/***/ }),\n\n/***/ \"./formats/color.js\":\n/*!**************************!*\\\n !*** ./formats/color.js ***!\n \\**************************/\n/*! exports provided: ColorAttributor, ColorClass, ColorStyle */\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__, \\\"ColorAttributor\\\", function() { return ColorAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorClass\\\", function() { return ColorClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorStyle\\\", function() { return ColorStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass ColorAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\\".concat(parseInt(component, 10).toString(16)).slice(-2)).join('');\\n return \\\"#\\\".concat(hex);\\n }\\n\\n}\\n\\nconst ColorClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('color', 'ql-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst ColorStyle = new ColorAttributor('color', 'color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/color.js?\");\n\n/***/ }),\n\n/***/ \"./formats/direction.js\":\n/*!******************************!*\\\n !*** ./formats/direction.js ***!\n \\******************************/\n/*! exports provided: DirectionAttribute, DirectionClass, DirectionStyle */\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__, \\\"DirectionAttribute\\\", function() { return DirectionAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionClass\\\", function() { return DirectionClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionStyle\\\", function() { return DirectionStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['rtl']\\n};\\nconst DirectionAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('direction', 'dir', config);\\nconst DirectionClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('direction', 'ql-direction', config);\\nconst DirectionStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('direction', 'direction', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/direction.js?\");\n\n/***/ }),\n\n/***/ \"./formats/font.js\":\n/*!*************************!*\\\n !*** ./formats/font.js ***!\n \\*************************/\n/*! exports provided: FontStyle, FontClass */\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__, \\\"FontStyle\\\", function() { return FontStyle; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"FontClass\\\", function() { return FontClass; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['serif', 'monospace']\\n};\\nconst FontClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('font', 'ql-font', config);\\n\\nclass FontStyleAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"] {\\n value(node) {\\n return super.value(node).replace(/[\\\"']/g, '');\\n }\\n\\n}\\n\\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/font.js?\");\n\n/***/ }),\n\n/***/ \"./formats/formula.js\":\n/*!****************************!*\\\n !*** ./formats/formula.js ***!\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 _blots_embed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/embed */ \\\"./blots/embed.js\\\");\\n\\n\\nclass Formula extends _blots_embed__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (window.katex == null) {\\n throw new Error('Formula module requires KaTeX.');\\n }\\n\\n const node = super.create(value);\\n\\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\\n return node;\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('data-value');\\n }\\n\\n html() {\\n const {\\n formula\\n } = this.value();\\n return \\\"\\\".concat(formula, \\\"\\\");\\n }\\n\\n}\\n\\nFormula.blotName = 'formula';\\nFormula.className = 'ql-formula';\\nFormula.tagName = 'SPAN';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Formula);\\n\\n//# sourceURL=webpack://Quill/./formats/formula.js?\");\n\n/***/ }),\n\n/***/ \"./formats/header.js\":\n/*!***************************!*\\\n !*** ./formats/header.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Header extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static formats(domNode) {\\n return this.tagName.indexOf(domNode.tagName) + 1;\\n }\\n\\n}\\n\\nHeader.blotName = 'header';\\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Header);\\n\\n//# sourceURL=webpack://Quill/./formats/header.js?\");\n\n/***/ }),\n\n/***/ \"./formats/image.js\":\n/*!**************************!*\\\n !*** ./formats/image.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['alt', 'height', 'width'];\\n\\nclass Image extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n\\n if (typeof value === 'string') {\\n node.setAttribute('src', this.sanitize(value));\\n }\\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\\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 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 Object(_link__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n}\\n\\nImage.blotName = 'image';\\nImage.tagName = 'IMG';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Image);\\n\\n//# sourceURL=webpack://Quill/./formats/image.js?\");\n\n/***/ }),\n\n/***/ \"./formats/indent.js\":\n/*!***************************!*\\\n !*** ./formats/indent.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass IndentAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (value === 0) {\\n this.remove(node);\\n return true;\\n }\\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}\\n\\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (IndentClass);\\n\\n//# sourceURL=webpack://Quill/./formats/indent.js?\");\n\n/***/ }),\n\n/***/ \"./formats/italic.js\":\n/*!***************************!*\\\n !*** ./formats/italic.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Italic extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nItalic.blotName = 'italic';\\nItalic.tagName = ['EM', 'I'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Italic);\\n\\n//# sourceURL=webpack://Quill/./formats/italic.js?\");\n\n/***/ }),\n\n/***/ \"./formats/link.js\":\n/*!*************************!*\\\n !*** ./formats/link.js ***!\n \\*************************/\n/*! exports provided: default, sanitize */\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 Link; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"sanitize\\\", function() { return sanitize; });\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Link extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n node.setAttribute('href', this.sanitize(value));\\n node.setAttribute('rel', 'noopener noreferrer');\\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\\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\\n\\n\\n//# sourceURL=webpack://Quill/./formats/link.js?\");\n\n/***/ }),\n\n/***/ \"./formats/list.js\":\n/*!*************************!*\\\n !*** ./formats/list.js ***!\n \\*************************/\n/*! exports provided: ListContainer, 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__, \\\"ListContainer\\\", function() { return ListContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return ListItem; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\nclass ListContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nListContainer.blotName = 'list-container';\\nListContainer.tagName = 'OL';\\n\\nclass ListItem extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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 _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].register(ListContainer);\\n }\\n\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n const ui = domNode.ownerDocument.createElement('span');\\n\\n const listEventHandler = e => {\\n if (!scroll.isEnabled()) return;\\n const format = this.statics.formats(domNode, scroll);\\n\\n if (format === 'checked') {\\n this.format('list', 'unchecked');\\n e.preventDefault();\\n } else if (format === 'unchecked') {\\n this.format('list', 'checked');\\n e.preventDefault();\\n }\\n };\\n\\n ui.addEventListener('mousedown', listEventHandler);\\n ui.addEventListener('touchstart', listEventHandler);\\n this.attachUI(ui);\\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\\n}\\n\\nListItem.blotName = 'list';\\nListItem.tagName = 'LI';\\nListContainer.allowedChildren = [ListItem];\\nListItem.requiredContainer = ListContainer;\\n\\n\\n//# sourceURL=webpack://Quill/./formats/list.js?\");\n\n/***/ }),\n\n/***/ \"./formats/script.js\":\n/*!***************************!*\\\n !*** ./formats/script.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Script extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (value === 'super') {\\n return document.createElement('sup');\\n }\\n\\n if (value === 'sub') {\\n return document.createElement('sub');\\n }\\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\\n}\\n\\nScript.blotName = 'script';\\nScript.tagName = ['SUB', 'SUP'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Script);\\n\\n//# sourceURL=webpack://Quill/./formats/script.js?\");\n\n/***/ }),\n\n/***/ \"./formats/size.js\":\n/*!*************************!*\\\n !*** ./formats/size.js ***!\n \\*************************/\n/*! exports provided: SizeClass, SizeStyle */\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__, \\\"SizeClass\\\", function() { return SizeClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SizeStyle\\\", function() { return SizeStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst SizeClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('size', 'ql-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['small', 'large', 'huge']\\n});\\nconst SizeStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('size', 'font-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['10px', '18px', '32px']\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/size.js?\");\n\n/***/ }),\n\n/***/ \"./formats/strike.js\":\n/*!***************************!*\\\n !*** ./formats/strike.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Strike extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nStrike.blotName = 'strike';\\nStrike.tagName = ['S', 'STRIKE'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Strike);\\n\\n//# sourceURL=webpack://Quill/./formats/strike.js?\");\n\n/***/ }),\n\n/***/ \"./formats/table.js\":\n/*!**************************!*\\\n !*** ./formats/table.js ***!\n \\**************************/\n/*! exports provided: TableCell, TableRow, TableBody, TableContainer, tableId */\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__, \\\"TableCell\\\", function() { return TableCell; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableRow\\\", function() { return TableRow; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableBody\\\", function() { return TableBody; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableContainer\\\", function() { return TableContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"tableId\\\", function() { return tableId; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\n\\n\\nclass TableCell extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create();\\n\\n if (value) {\\n node.setAttribute('data-row', value);\\n } else {\\n node.setAttribute('data-row', tableId());\\n }\\n\\n return node;\\n }\\n\\n static formats(domNode) {\\n if (domNode.hasAttribute('data-row')) {\\n return domNode.getAttribute('data-row');\\n }\\n\\n return undefined;\\n }\\n\\n cellOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\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 row() {\\n return this.parent;\\n }\\n\\n rowOffset() {\\n if (this.row()) {\\n return this.row().rowOffset();\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.row() && this.row().table();\\n }\\n\\n}\\n\\nTableCell.blotName = 'table';\\nTableCell.tagName = 'TD';\\n\\nclass TableRow extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (childFormats.table !== nextFormats.table) {\\n const next = this.splitAfter(child);\\n\\n if (next) {\\n next.optimize();\\n } // We might be able to merge with prev now\\n\\n\\n if (this.prev) {\\n this.prev.optimize();\\n }\\n }\\n });\\n }\\n\\n rowOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.parent && this.parent.parent;\\n }\\n\\n}\\n\\nTableRow.blotName = 'table-row';\\nTableRow.tagName = 'TR';\\n\\nclass TableBody extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nTableBody.blotName = 'table-body';\\nTableBody.tagName = 'TBODY';\\n\\nclass TableContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n if (row.children.head != null) {\\n value = TableCell.formats(row.children.head.domNode);\\n }\\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 cells(column) {\\n return this.rows().map(row => row.children.at(column));\\n }\\n\\n deleteColumn(index) {\\n const [body] = this.descendant(TableBody);\\n if (body == null || body.children.head == null) return;\\n body.children.forEach(row => {\\n const cell = row.children.at(index);\\n\\n if (cell != null) {\\n cell.remove();\\n }\\n });\\n }\\n\\n insertColumn(index) {\\n const [body] = this.descendant(TableBody);\\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 const [body] = this.descendant(TableBody);\\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\\n rows() {\\n const body = this.children.head;\\n if (body == null) return [];\\n return body.children.map(row => row);\\n }\\n\\n}\\n\\nTableContainer.blotName = 'table-container';\\nTableContainer.tagName = 'TABLE';\\nTableContainer.allowedChildren = [TableBody];\\nTableBody.requiredContainer = TableContainer;\\nTableBody.allowedChildren = [TableRow];\\nTableRow.requiredContainer = TableBody;\\nTableRow.allowedChildren = [TableCell];\\nTableCell.requiredContainer = TableRow;\\n\\nfunction tableId() {\\n const id = Math.random().toString(36).slice(2, 6);\\n return \\\"row-\\\".concat(id);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./formats/table.js?\");\n\n/***/ }),\n\n/***/ \"./formats/underline.js\":\n/*!******************************!*\\\n !*** ./formats/underline.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Underline extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nUnderline.blotName = 'underline';\\nUnderline.tagName = 'U';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Underline);\\n\\n//# sourceURL=webpack://Quill/./formats/underline.js?\");\n\n/***/ }),\n\n/***/ \"./formats/video.js\":\n/*!**************************!*\\\n !*** ./formats/video.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['height', 'width'];\\n\\nclass Video extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n return formats;\\n }, {});\\n }\\n\\n static sanitize(url) {\\n return _link__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const {\\n video\\n } = this.value();\\n return \\\"
    \\\").concat(video, \\\"\\\");\\n }\\n\\n}\\n\\nVideo.blotName = 'video';\\nVideo.className = 'ql-video';\\nVideo.tagName = 'IFRAME';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Video);\\n\\n//# sourceURL=webpack://Quill/./formats/video.js?\");\n\n/***/ }),\n\n/***/ \"./modules/clipboard.js\":\n/*!******************************!*\\\n !*** ./modules/clipboard.js ***!\n \\******************************/\n/*! exports provided: default, matchAttributor, matchBlot, matchNewline, matchText, traverse */\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 Clipboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchAttributor\\\", function() { return matchAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchBlot\\\", function() { return matchBlot; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchNewline\\\", function() { return matchNewline; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchText\\\", function() { return matchText; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"traverse\\\", function() { return traverse; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../formats/size */ \\\"./formats/size.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"])('quill:clipboard');\\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')], ['strike', matchAlias.bind(matchAlias, 'strike')], ['style', matchIgnore]];\\nconst ATTRIBUTE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignAttribute\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionAttribute\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\nconst STYLE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignStyle\\\"], _formats_background__WEBPACK_IMPORTED_MODULE_8__[\\\"BackgroundStyle\\\"], _formats_color__WEBPACK_IMPORTED_MODULE_10__[\\\"ColorStyle\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionStyle\\\"], _formats_font__WEBPACK_IMPORTED_MODULE_12__[\\\"FontStyle\\\"], _formats_size__WEBPACK_IMPORTED_MODULE_13__[\\\"SizeStyle\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\n\\nclass Clipboard extends _core_module__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.quill.root.addEventListener('copy', e => this.onCaptureCopy(e, false));\\n this.quill.root.addEventListener('cut', e => this.onCaptureCopy(e, true));\\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({\\n html,\\n text\\n }, formats = {}) {\\n if (formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text, {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]\\n });\\n }\\n\\n if (!html) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text || '');\\n }\\n\\n const doc = new DOMParser().parseFromString(html, 'text/html');\\n const container = doc.body;\\n const nodeMatches = new WeakMap();\\n const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\\n const delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches); // Remove trailing newline\\n\\n if (deltaEndsWith(delta, '\\\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(delta.length() - 1).delete(1));\\n }\\n\\n return delta;\\n }\\n\\n dangerouslyPasteHTML(index, html, source = _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n if (typeof index === 'string') {\\n const delta = this.convert({\\n html: index,\\n text: ''\\n });\\n this.quill.setContents(delta, html);\\n this.quill.setSelection(0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n } else {\\n const paste = this.convert({\\n html,\\n text: ''\\n });\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(index).concat(paste), source);\\n this.quill.setSelection(index + paste.length(), _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n onCaptureCopy(e, isCut = false) {\\n if (e.defaultPrevented) return;\\n e.preventDefault();\\n const [range] = this.quill.selection.getRange();\\n if (range == null) return;\\n const {\\n html,\\n text\\n } = this.onCopy(range, isCut);\\n e.clipboardData.setData('text/plain', text);\\n e.clipboardData.setData('text/html', html);\\n\\n if (isCut) {\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n onCapturePaste(e) {\\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\\n e.preventDefault();\\n const range = this.quill.getSelection(true);\\n if (range == null) return;\\n const html = e.clipboardData.getData('text/html');\\n const text = e.clipboardData.getData('text/plain');\\n const files = Array.from(e.clipboardData.files || []);\\n\\n if (!html && files.length > 0) {\\n this.quill.uploader.upload(range, files);\\n } else {\\n this.onPaste(range, {\\n html,\\n text\\n });\\n }\\n }\\n\\n onCopy(range) {\\n const text = this.quill.getText(range);\\n const html = this.quill.getSemanticHTML(range);\\n return {\\n html,\\n text\\n };\\n }\\n\\n onPaste(range, {\\n text,\\n html\\n }) {\\n const formats = this.quill.getFormat(range.index);\\n const pastedDelta = this.convert({\\n text,\\n html\\n }, formats);\\n debug.log('onPaste', pastedDelta, {\\n text,\\n html\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(range.index).delete(range.length).concat(pastedDelta);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER); // range.length contributes to delta.length()\\n\\n this.quill.setSelection(delta.length() - range.length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"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 const [selector, matcher] = pair;\\n\\n switch (selector) {\\n case Node.TEXT_NODE:\\n textMatchers.push(matcher);\\n break;\\n\\n case Node.ELEMENT_NODE:\\n elementMatchers.push(matcher);\\n break;\\n\\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\\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\\n return delta.reduce((newDelta, op) => {\\n if (op.attributes && op.attributes[format]) {\\n return newDelta.push(op);\\n }\\n\\n return newDelta.insert(op.insert, extend__WEBPACK_IMPORTED_MODULE_0___default()({}, {\\n [format]: value\\n }, op.attributes));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n}\\n\\nfunction deltaEndsWith(delta, text) {\\n let endText = '';\\n\\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\\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\\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();\\n\\nfunction isPre(node) {\\n if (node == null) return false;\\n\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n 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\\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\\n return delta.concat(childrenDelta);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchAlias(format, node, delta) {\\n return applyFormat(delta, format, true);\\n}\\n\\nfunction matchAttributor(node, delta, scroll) {\\n const attributes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Attributor\\\"].keys(node);\\n const classes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"ClassAttributor\\\"].keys(node);\\n const styles = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"StyleAttributor\\\"].keys(node);\\n const formats = {};\\n attributes.concat(classes).concat(styles).forEach(name => {\\n let attr = scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].ATTRIBUTE);\\n\\n if (attr != null) {\\n formats[attr.attrName] = attr.value(node);\\n if (formats[attr.attrName]) return;\\n }\\n\\n attr = ATTRIBUTE_ATTRIBUTORS[name];\\n\\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\\n formats[attr.attrName] = attr.value(node) || undefined;\\n }\\n\\n attr = STYLE_ATTRIBUTORS[name];\\n\\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\\n if (Object.keys(formats).length > 0) {\\n return applyFormat(delta, formats);\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBlot(node, delta, scroll) {\\n const match = scroll.query(node);\\n if (match == null) return delta;\\n\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"]) {\\n const embed = {};\\n const value = match.value(node);\\n\\n if (value != null) {\\n embed[match.blotName] = value;\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(embed, match.formats(node, scroll));\\n }\\n } else {\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockBlot\\\"] && !deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\n }\\n\\n if (typeof match.formats === 'function') {\\n return applyFormat(delta, match.blotName, match.formats(node, scroll));\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBreak(node, delta) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchIndent(node, delta, scroll) {\\n const match = scroll.query(node);\\n\\n if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\\\n')) {\\n return delta;\\n }\\n\\n let indent = -1;\\n let parent = node.parentNode;\\n\\n while (parent != null) {\\n if (['OL', 'UL'].includes(parent.tagName)) {\\n indent += 1;\\n }\\n\\n parent = parent.parentNode;\\n }\\n\\n if (indent <= 0) return delta;\\n return delta.reduce((composed, op) => {\\n if (op.attributes && op.attributes.list) {\\n return composed.push(op);\\n }\\n\\n return composed.insert(op.insert, {\\n indent,\\n ...(op.attributes || {})\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\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, scroll) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n if (isLine(node)) {\\n return delta.insert('\\\\n');\\n }\\n\\n if (delta.length() > 0 && node.nextSibling) {\\n let {\\n nextSibling\\n } = node;\\n\\n while (nextSibling != null) {\\n if (isLine(nextSibling)) {\\n return delta.insert('\\\\n');\\n }\\n\\n const match = scroll.query(nextSibling);\\n\\n if (match && match.prototype instanceof _blots_block__WEBPACK_IMPORTED_MODULE_3__[\\\"BlockEmbed\\\"]) {\\n return delta.insert('\\\\n');\\n }\\n\\n nextSibling = nextSibling.firstChild;\\n }\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchStyles(node, delta) {\\n const formats = {};\\n const style = node.style || {};\\n\\n if (style.fontStyle === 'italic') {\\n formats.italic = true;\\n }\\n\\n if (style.textDecoration === 'underline') {\\n formats.underline = true;\\n }\\n\\n if (style.textDecoration === 'line-through') {\\n formats.strike = true;\\n }\\n\\n if (style.fontWeight.startsWith('bold') || parseInt(style.fontWeight, 10) >= 700) {\\n formats.bold = true;\\n }\\n\\n if (Object.keys(formats).length > 0) {\\n delta = applyFormat(delta, formats);\\n }\\n\\n if (parseFloat(style.textIndent || 0) > 0) {\\n // Could be 0.5in\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert('\\\\t').concat(delta);\\n }\\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; // Word represents empty line with  \\n\\n if (node.parentNode.tagName === 'O:P') {\\n return delta.insert(text.trim());\\n }\\n\\n if (text.trim().length === 0 && text.includes('\\\\n')) {\\n return delta;\\n }\\n\\n if (!isPre(node)) {\\n const replacer = (collapse, match) => {\\n const replaced = match.replace(/[^\\\\u00a0]/g, ''); // \\\\u00a0 is nbsp;\\n\\n return replaced.length < 1 && collapse ? ' ' : replaced;\\n };\\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\\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\\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\\n return delta.insert(text);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/clipboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/history.js\":\n/*!****************************!*\\\n !*** ./modules/history.js ***!\n \\****************************/\n/*! exports provided: default, getLastChangeIndex */\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 History; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getLastChangeIndex\\\", function() { return getLastChangeIndex; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass History extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.lastRecorded = 0;\\n this.ignoreChange = false;\\n this.clear();\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\\n if (eventName !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE || this.ignoreChange) return;\\n\\n if (!this.options.userOnly || source === _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.record(delta, oldDelta);\\n } else {\\n this.transform(delta);\\n }\\n });\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true\\n }, this.undo.bind(this));\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true,\\n shiftKey: true\\n }, this.redo.bind(this));\\n\\n if (/Win/i.test(navigator.platform)) {\\n this.quill.keyboard.addBinding({\\n key: 'y',\\n shortKey: true\\n }, 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 const base = this.quill.getContents();\\n const inverseDelta = delta.invert(base);\\n this.stack[dest].push(inverseDelta);\\n this.lastRecorded = 0;\\n this.ignoreChange = true;\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.ignoreChange = false;\\n const index = getLastChangeIndex(this.quill.scroll, delta);\\n this.quill.setSelection(index);\\n }\\n\\n clear() {\\n this.stack = {\\n undo: [],\\n redo: []\\n };\\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 = changeDelta.invert(oldDelta);\\n const timestamp = Date.now();\\n\\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);\\n } else {\\n this.lastRecorded = timestamp;\\n }\\n\\n if (undoDelta.length() === 0) return;\\n this.stack.undo.push(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 transformStack(this.stack.undo, delta);\\n transformStack(this.stack.redo, delta);\\n }\\n\\n undo() {\\n this.change('undo', 'redo');\\n }\\n\\n}\\n\\nHistory.DEFAULTS = {\\n delay: 1000,\\n maxStack: 100,\\n userOnly: false\\n};\\n\\nfunction transformStack(stack, delta) {\\n let remoteDelta = delta;\\n\\n for (let i = stack.length - 1; i >= 0; i -= 1) {\\n const oldDelta = stack[i];\\n stack[i] = remoteDelta.transform(oldDelta, true);\\n remoteDelta = oldDelta.transform(remoteDelta);\\n\\n if (stack[i].length() === 0) {\\n stack.splice(i, 1);\\n }\\n }\\n}\\n\\nfunction endsWithNewlineChange(scroll, delta) {\\n const lastOp = delta.ops[delta.ops.length - 1];\\n if (lastOp == null) return false;\\n\\n if (lastOp.insert != null) {\\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\\\n');\\n }\\n\\n if (lastOp.attributes != null) {\\n return Object.keys(lastOp.attributes).some(attr => {\\n return scroll.query(attr, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) != null;\\n });\\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\\n if (endsWithNewlineChange(scroll, delta)) {\\n changeIndex -= 1;\\n }\\n\\n return changeIndex;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/history.js?\");\n\n/***/ }),\n\n/***/ \"./modules/keyboard.js\":\n/*!*****************************!*\\\n !*** ./modules/keyboard.js ***!\n \\*****************************/\n/*! exports provided: default, SHORTKEY, normalize */\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 Keyboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SHORTKEY\\\", function() { return SHORTKEY; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"normalize\\\", function() { return normalize; });\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"])('quill:keyboard');\\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\\n\\nclass Keyboard extends _core_module__WEBPACK_IMPORTED_MODULE_7__[\\\"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\\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({\\n key: 'Enter',\\n shiftKey: null\\n }, this.handleEnter);\\n this.addBinding({\\n key: 'Enter',\\n metaKey: null,\\n ctrlKey: null,\\n altKey: null\\n }, () => {});\\n\\n if (/Firefox/i.test(navigator.userAgent)) {\\n // Need to handle delete and backspace for Firefox in the general case #1171\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true\\n }, this.handleDelete);\\n } else {\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true,\\n prefix: /^.?$/\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true,\\n suffix: /^.?$/\\n }, this.handleDelete);\\n }\\n\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Backspace',\\n altKey: null,\\n ctrlKey: null,\\n metaKey: null,\\n shiftKey: null\\n }, {\\n collapsed: true,\\n offset: 0\\n }, this.handleBackspace);\\n this.listen();\\n }\\n\\n addBinding(keyBinding, context = {}, handler = {}) {\\n const binding = normalize(keyBinding);\\n\\n if (binding == null) {\\n debug.warn('Attempted to add invalid keyboard binding', binding);\\n return;\\n }\\n\\n if (typeof context === 'function') {\\n context = {\\n handler: context\\n };\\n }\\n\\n if (typeof handler === 'function') {\\n handler = {\\n handler\\n };\\n }\\n\\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\\n keys.forEach(key => {\\n const singleBinding = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, binding, {\\n key\\n }, 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 || evt.isComposing) 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 const [line, offset] = this.quill.getLine(range.index);\\n const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\\n const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\\n const prefixText = leafStart instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"TextBlot\\\"] ? leafStart.value().slice(0, offsetStart) : '';\\n const suffixText = leafEnd instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (binding.empty != null && binding.empty !== curContext.empty) {\\n return false;\\n }\\n\\n if (binding.offset != null && binding.offset !== curContext.offset) {\\n return false;\\n }\\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 deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(binding.format[name], curContext.format[name]);\\n })) {\\n return false;\\n }\\n }\\n\\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\\n return false;\\n }\\n\\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\\n return false;\\n }\\n\\n return binding.handler.call(this, range, curContext, binding) !== true;\\n });\\n\\n if (prevented) {\\n evt.preventDefault();\\n }\\n });\\n }\\n\\n handleBackspace(range, context) {\\n // Check for astral symbols\\n const length = /[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]$/.test(context.prefix) ? 2 : 1;\\n if (range.index === 0 || this.quill.getLength() <= 1) return;\\n let formats = {};\\n const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - length).delete(length);\\n\\n if (context.offset === 0) {\\n // Always deleting newline here, length always 1\\n const [prev] = this.quill.getLine(range.index - 1);\\n\\n if (prev) {\\n const curFormats = line.formats();\\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, prevFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n // line.length() - 1 targets \\\\n in line, another -1 for newline being deleted\\n const formatDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - 2).retain(1, formats);\\n delta = delta.compose(formatDelta);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n 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 const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(length);\\n\\n if (context.offset >= line.length() - 1) {\\n const [next] = this.quill.getLine(range.index + 1);\\n\\n if (next) {\\n const curFormats = line.formats();\\n const nextFormats = this.quill.getFormat(range.index, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, nextFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n delta = delta.retain(next.length() - 1).retain(1, formats);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n handleDeleteRange(range) {\\n const lines = this.quill.getLines(range);\\n let formats = {};\\n\\n if (lines.length > 1) {\\n const firstFormats = lines[0].formats();\\n const lastFormats = lines[lines.length - 1].formats();\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(lastFormats, firstFormats) || {};\\n }\\n\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index, 1, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.focus();\\n }\\n\\n handleEnter(range, context) {\\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\\n if (this.quill.scroll.query(format, parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"Scope\\\"].BLOCK) && !Array.isArray(context.format[format])) {\\n formats[format] = context.format[format];\\n }\\n\\n return formats;\\n }, {});\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\n', lineFormats);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"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 === 'code' || name === 'link') return;\\n this.quill.format(name, context.format[name], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\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\\n handler(range, context) {\\n if (context.collapsed && context.offset !== 0) return true;\\n this.quill.format('indent', '+1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\n\\n },\\n outdent: {\\n key: 'Tab',\\n shiftKey: true,\\n format: ['blockquote', 'indent', 'list'],\\n\\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', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\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\\n handler(range, context) {\\n if (context.format.indent != null) {\\n this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else if (context.format.list != null) {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\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\\n handler(range) {\\n this.quill.deleteText(range.index - 1, 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n tab: {\\n key: 'Tab',\\n\\n handler(range, context) {\\n if (context.format.table) return true;\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\t');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'blockquote empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['blockquote'],\\n empty: true,\\n\\n handler() {\\n this.quill.format('blockquote', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'list empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['list'],\\n empty: true,\\n\\n handler(range, context) {\\n const formats = {\\n list: false\\n };\\n\\n if (context.format.indent) {\\n formats.indent = false;\\n }\\n\\n this.quill.formatLine(range.index, range.length, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'checklist enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: {\\n list: 'checked'\\n },\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, line.formats(), {\\n list: 'checked'\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', formats).retain(line.length() - offset - 1).retain(1, {\\n list: 'unchecked'\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'header enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['header'],\\n suffix: /^$/,\\n\\n handler(range, context) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', context.format).retain(line.length() - offset - 1).retain(1, {\\n header: null\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'table backspace': {\\n key: 'Backspace',\\n format: ['table'],\\n collapsed: true,\\n offset: 0,\\n\\n handler() {}\\n\\n },\\n 'table delete': {\\n key: 'Delete',\\n format: ['table'],\\n collapsed: true,\\n suffix: /^$/,\\n\\n handler() {}\\n\\n },\\n 'table enter': {\\n key: 'Enter',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range) {\\n const module = this.quill.getModule('table');\\n\\n if (module) {\\n const [table, row, cell, offset] = module.getTable(range);\\n const shift = tableSide(table, row, cell, offset);\\n if (shift == null) return;\\n let index = table.offset();\\n\\n if (shift < 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n } else if (shift > 0) {\\n index += table.length();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n },\\n 'table tab': {\\n key: 'Tab',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range, context) {\\n const {\\n event,\\n line: cell\\n } = context;\\n const offset = cell.offset(this.quill.scroll);\\n\\n if (event.shiftKey) {\\n this.quill.setSelection(offset - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(offset + cell.length(), _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n },\\n 'list autofill': {\\n key: ' ',\\n shiftKey: null,\\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\\n handler(range, context) {\\n if (this.quill.scroll.query('list') == null) return true;\\n const {\\n length\\n } = context.prefix;\\n const [line, offset] = this.quill.getLine(range.index);\\n if (offset > length) return true;\\n let value;\\n\\n switch (context.prefix.trim()) {\\n case '[]':\\n case '[ ]':\\n value = 'unchecked';\\n break;\\n\\n case '[x]':\\n value = 'checked';\\n break;\\n\\n case '-':\\n case '*':\\n value = 'bullet';\\n break;\\n\\n default:\\n value = 'ordered';\\n }\\n\\n this.quill.insertText(range.index, ' ', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\\n list: value\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index - length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'code exit': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['code-block'],\\n prefix: /^$/,\\n suffix: /^\\\\s*$/,\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n let numLines = 2;\\n let cur = line;\\n\\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\\n cur = cur.prev;\\n numLines -= 1; // Requisite prev lines are empty\\n\\n if (numLines <= 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - offset - 2).retain(1, {\\n 'code-block': null\\n }).delete(1);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n }\\n\\n return true;\\n }\\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 makeCodeBlockHandler(indent) {\\n return {\\n key: 'Tab',\\n shiftKey: !indent,\\n format: {\\n 'code-block': true\\n },\\n\\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 {\\n index,\\n length\\n } = range;\\n lines.forEach((line, i) => {\\n if (indent) {\\n line.insertAt(0, CodeBlock.TAB);\\n\\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\\n if (i === 0) {\\n index -= CodeBlock.TAB.length;\\n } else {\\n length -= CodeBlock.TAB.length;\\n }\\n }\\n });\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n }\\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\\n handler(range) {\\n let {\\n index\\n } = range;\\n\\n if (key === 'ArrowRight') {\\n index += range.length + 1;\\n }\\n\\n const [leaf] = this.quill.getLeaf(index);\\n if (!(leaf instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"EmbedBlot\\\"])) return true;\\n\\n if (key === 'ArrowLeft') {\\n if (shiftKey) {\\n this.quill.setSelection(range.index - 1, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else if (shiftKey) {\\n this.quill.setSelection(range.index, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index + range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction makeFormatHandler(format) {\\n return {\\n key: format[0],\\n shortKey: true,\\n\\n handler(range, context) {\\n this.quill.format(format, !context.format[format], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n };\\n}\\n\\nfunction makeTableArrowHandler(up) {\\n return {\\n key: up ? 'ArrowUp' : 'ArrowDown',\\n collapsed: true,\\n format: ['table'],\\n\\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\\n if (targetRow != null) {\\n if (targetRow.statics.blotName === 'table-row') {\\n let targetCell = targetRow.children.head;\\n let cur = cell;\\n\\n while (cur.prev != null) {\\n cur = cur.prev;\\n targetCell = targetCell.next;\\n }\\n\\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\\n this.quill.setSelection(index, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n const targetLine = cell.table()[key];\\n\\n if (targetLine != null) {\\n if (up) {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction normalize(binding) {\\n if (typeof binding === 'string' || typeof binding === 'number') {\\n binding = {\\n key: binding\\n };\\n } else if (typeof binding === 'object') {\\n binding = clone__WEBPACK_IMPORTED_MODULE_0___default()(binding, false);\\n } else {\\n return null;\\n }\\n\\n if (binding.shortKey) {\\n binding[SHORTKEY] = binding.shortKey;\\n delete binding.shortKey;\\n }\\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\\n return cell.prev == null ? -1 : 1;\\n }\\n\\n if (row.prev == null) {\\n return -1;\\n }\\n\\n if (row.next == null) {\\n return 1;\\n }\\n\\n return null;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/keyboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/syntax.js\":\n/*!***************************!*\\\n !*** ./modules/syntax.js ***!\n \\***************************/\n/*! exports provided: CodeBlock, CodeToken, 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__, \\\"CodeBlock\\\", function() { return SyntaxCodeBlock; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeToken\\\", function() { return CodeToken; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Syntax; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clipboard */ \\\"./modules/clipboard.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst TokenAttributor = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ClassAttributor\\\"]('code-token', 'hljs', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE\\n});\\n\\nclass CodeToken extends _blots_inline__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static formats(node, scroll) {\\n while (node != null && node !== scroll.domNode) {\\n if (node.classList && node.classList.contains(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className)) {\\n return super.formats(node, scroll);\\n }\\n\\n node = node.parentNode;\\n }\\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\\n if (!TokenAttributor.value(this.domNode)) {\\n this.unwrap();\\n }\\n }\\n\\n}\\n\\nCodeToken.blotName = 'code-token';\\nCodeToken.className = 'ql-token';\\n\\nclass SyntaxCodeBlock extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"] {\\n static create(value) {\\n const domNode = super.create(value);\\n\\n if (typeof value === 'string') {\\n domNode.setAttribute('data-language', value);\\n }\\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\\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}\\n\\nclass SyntaxCodeBlockContainer extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"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\\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 = \\\"\\\".concat(nodes.map(node => node.textContent).join('\\\\n'), \\\"\\\\n\\\");\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\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(Object(_blots_block__WEBPACK_IMPORTED_MODULE_5__[\\\"blockDelta\\\"])(child, false));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n const delta = highlight(text, language);\\n oldDelta.diff(delta).reduce((index, {\\n retain,\\n attributes\\n }) => {\\n // Should be all retains\\n if (!retain) return index;\\n\\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\\n return index + retain;\\n }, 0);\\n }\\n\\n this.cachedText = text;\\n this.forceNext = false;\\n }\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n\\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\n if (language !== this.uiNode.value) {\\n this.uiNode.value = language;\\n }\\n }\\n }\\n\\n}\\n\\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\\nSyntaxCodeBlock.allowedChildren = [CodeToken, _blots_cursor__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"], _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"]];\\n\\nclass Syntax extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(CodeToken, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlock, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlockContainer, true);\\n }\\n\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n this.languages = this.options.languages.reduce((memo, {\\n key\\n }) => {\\n memo[key] = true;\\n return memo;\\n }, {});\\n this.highlightBlot = this.highlightBlot.bind(this);\\n this.initListener();\\n this.initTimer();\\n }\\n\\n initListener() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(({\\n key,\\n label\\n }) => {\\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\\n this.highlight(blot, true);\\n });\\n\\n if (blot.uiNode == null) {\\n blot.attachUI(select);\\n\\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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n\\n if (range != null) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n highlightBlot(text, language = 'plain') {\\n language = this.languages[language] ? language : 'plain';\\n\\n if (language === 'plain') {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"escapeText\\\"])(text).split('\\\\n').reduce((delta, line, i) => {\\n if (i !== 0) {\\n delta.insert('\\\\n', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n }\\n\\n return delta.insert(line);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n }\\n\\n const container = this.quill.root.ownerDocument.createElement('div');\\n container.classList.add(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className);\\n container.innerHTML = this.options.hljs.highlight(language, text).value;\\n return Object(_clipboard__WEBPACK_IMPORTED_MODULE_10__[\\\"traverse\\\"])(this.quill.scroll, container, [(node, delta) => {\\n const value = TokenAttributor.value(node);\\n\\n if (value) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length(), {\\n [CodeToken.blotName]: value\\n }));\\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', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n return memo.insert(nodeText);\\n }, delta);\\n }], new WeakMap());\\n }\\n\\n}\\n\\nSyntax.DEFAULTS = {\\n hljs: (() => {\\n return window.hljs;\\n })(),\\n interval: 1000,\\n languages: [{\\n key: 'plain',\\n label: 'Plain'\\n }, {\\n key: 'bash',\\n label: 'Bash'\\n }, {\\n key: 'cpp',\\n label: 'C++'\\n }, {\\n key: 'cs',\\n label: 'C#'\\n }, {\\n key: 'css',\\n label: 'CSS'\\n }, {\\n key: 'diff',\\n label: 'Diff'\\n }, {\\n key: 'xml',\\n label: 'HTML/XML'\\n }, {\\n key: 'java',\\n label: 'Java'\\n }, {\\n key: 'javascript',\\n label: 'Javascript'\\n }, {\\n key: 'markdown',\\n label: 'Markdown'\\n }, {\\n key: 'php',\\n label: 'PHP'\\n }, {\\n key: 'python',\\n label: 'Python'\\n }, {\\n key: 'ruby',\\n label: 'Ruby'\\n }, {\\n key: 'sql',\\n label: 'SQL'\\n }]\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/syntax.js?\");\n\n/***/ }),\n\n/***/ \"./modules/table.js\":\n/*!**************************!*\\\n !*** ./modules/table.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/table */ \\\"./formats/table.js\\\");\\n\\n\\n\\n\\n\\nclass Table extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableRow\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableBody\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]);\\n }\\n\\n constructor(...args) {\\n super(...args);\\n this.listenBalanceCells();\\n }\\n\\n balanceTables() {\\n this.quill.scroll.descendants(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]).forEach(table => {\\n table.balanceCells();\\n });\\n }\\n\\n deleteColumn() {\\n const [table,, cell] = this.getTable();\\n if (cell == null) return;\\n table.deleteColumn(cell.cellOffset());\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteRow() {\\n const [, row] = this.getTable();\\n if (row == null) return;\\n row.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteTable() {\\n const [table] = this.getTable();\\n if (table == null) return;\\n const offset = table.offset();\\n table.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(offset, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n getTable(range = this.quill.getSelection()) {\\n if (range == null) return [null, null, null, -1];\\n const [cell, offset] = this.quill.getLine(range.index);\\n\\n if (cell == null || cell.statics.blotName !== _formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"].blotName) {\\n return [null, null, null, -1];\\n }\\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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const column = cell.cellOffset();\\n table.insertColumn(column + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n let shift = row.rowOffset();\\n\\n if (offset === 0) {\\n shift += 1;\\n }\\n\\n this.quill.setSelection(range.index + shift, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const index = row.rowOffset();\\n table.insertRow(index + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (offset > 0) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n } else {\\n this.quill.setSelection(range.index + row.children.length, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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, {\\n table: Object(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"tableId\\\"])()\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index));\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n this.balanceTables();\\n }\\n\\n listenBalanceCells() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_OPTIMIZE, mutations => {\\n mutations.some(mutation => {\\n if (['TD', 'TR', 'TBODY', 'TABLE'].includes(mutation.target.tagName)) {\\n this.quill.once(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE, (delta, old, source) => {\\n if (source !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) return;\\n this.balanceTables();\\n });\\n return true;\\n }\\n\\n return false;\\n });\\n });\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Table);\\n\\n//# sourceURL=webpack://Quill/./modules/table.js?\");\n\n/***/ }),\n\n/***/ \"./modules/toolbar.js\":\n/*!****************************!*\\\n !*** ./modules/toolbar.js ***!\n \\****************************/\n/*! exports provided: default, addControls */\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 Toolbar; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"addControls\\\", function() { return addControls; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"])('quill:toolbar');\\n\\nclass Toolbar extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n if (!(this.container instanceof HTMLElement)) {\\n return debug.error('Container required for toolbar', this.options);\\n }\\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(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range) => {\\n if (type === _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SELECTION_CHANGE) {\\n this.update(range);\\n }\\n });\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SCROLL_OPTIMIZE, () => {\\n const [range] = this.quill.selection.getRange(); // 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\\n if (input.tagName === 'BUTTON') {\\n input.setAttribute('type', 'button');\\n }\\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\\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\\n input.addEventListener(eventName, e => {\\n let value;\\n\\n if (input.tagName === 'SELECT') {\\n if (input.selectedIndex < 0) return;\\n const selected = input.options[input.selectedIndex];\\n\\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\\n e.preventDefault();\\n }\\n\\n this.quill.focus();\\n const [range] = this.quill.selection.getRange();\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"EmbedBlot\\\"]) {\\n value = prompt(\\\"Enter \\\".concat(format)); // eslint-disable-line no-alert\\n\\n if (!value) return;\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length).insert({\\n [format]: value\\n }), _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format(format, value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\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 const [format, input] = pair;\\n\\n if (input.tagName === 'SELECT') {\\n let option;\\n\\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\\n if (typeof value === 'string') {\\n value = value.replace(/\\\"/g, '\\\\\\\\\\\"');\\n }\\n\\n option = input.querySelector(\\\"option[value=\\\\\\\"\\\".concat(value, \\\"\\\\\\\"]\\\"));\\n }\\n\\n if (option == null) {\\n input.value = ''; // TODO make configurable?\\n\\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\\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-\\\".concat(format));\\n\\n if (value != null) {\\n input.value = value;\\n }\\n\\n container.appendChild(input);\\n}\\n\\nfunction addControls(container, groups) {\\n if (!Array.isArray(groups[0])) {\\n groups = [groups];\\n }\\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\\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-\\\".concat(format));\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value !== false) {\\n option.setAttribute('value', value);\\n } else {\\n option.setAttribute('selected', 'selected');\\n }\\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\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE) != null) {\\n this.quill.format(name, false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n });\\n } else {\\n this.quill.removeFormat(range, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n direction(value) {\\n const {\\n align\\n } = this.quill.getFormat();\\n\\n if (value === 'rtl' && align == null) {\\n this.quill.format('align', 'right', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else if (!value && align === 'right') {\\n this.quill.format('align', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.format('direction', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\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\\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, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n link(value) {\\n if (value === true) {\\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\\n }\\n\\n this.quill.format('link', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\n\\n list(value) {\\n const range = this.quill.getSelection();\\n const formats = this.quill.getFormat(range);\\n\\n if (value === 'check') {\\n if (formats.list === 'checked' || formats.list === 'unchecked') {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format('list', 'unchecked', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n this.quill.format('list', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n }\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/toolbar.js?\");\n\n/***/ }),\n\n/***/ \"./modules/uploader.js\":\n/*!*****************************!*\\\n !*** ./modules/uploader.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass Uploader extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n quill.root.addEventListener('drop', e => {\\n e.preventDefault();\\n let native;\\n\\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\\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\\n if (uploads.length > 0) {\\n this.options.handler.call(this, range, uploads);\\n }\\n }\\n\\n}\\n\\nUploader.DEFAULTS = {\\n mimetypes: ['image/png', 'image/jpeg'],\\n\\n handler(range, files) {\\n const promises = files.map(file => {\\n return new Promise(resolve => {\\n const reader = new FileReader();\\n\\n reader.onload = e => {\\n resolve(e.target.result);\\n };\\n\\n reader.readAsDataURL(file);\\n });\\n });\\n Promise.all(promises).then(images => {\\n const update = images.reduce((delta, image) => {\\n return delta.insert({\\n image\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length));\\n this.quill.updateContents(update, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + images.length, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n });\\n }\\n\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Uploader);\\n\\n//# sourceURL=webpack://Quill/./modules/uploader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/array-filter/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/array-filter/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\n/**\\n * Array#filter.\\n *\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object=} self\\n * @return {Array}\\n * @throw TypeError\\n */\\n\\nmodule.exports = function (arr, fn, self) {\\n if (arr.filter) return arr.filter(fn, self);\\n if (void 0 === arr || null === arr) throw new TypeError;\\n if ('function' != typeof fn) throw new TypeError;\\n var ret = [];\\n for (var i = 0; i < arr.length; i++) {\\n if (!hasOwn.call(arr, i)) continue;\\n var val = arr[i];\\n if (fn.call(self, val, i, arr)) ret.push(val);\\n }\\n return ret;\\n};\\n\\nvar hasOwn = Object.prototype.hasOwnProperty;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/array-filter/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/available-typed-arrays/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/available-typed-arrays/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar filter = __webpack_require__(/*! array-filter */ \\\"./node_modules/array-filter/index.js\\\");\\n\\nmodule.exports = function availableTypedArrays() {\\n\\treturn filter([\\n\\t\\t'BigInt64Array',\\n\\t\\t'BigUint64Array',\\n\\t\\t'Float32Array',\\n\\t\\t'Float64Array',\\n\\t\\t'Int16Array',\\n\\t\\t'Int32Array',\\n\\t\\t'Int8Array',\\n\\t\\t'Uint16Array',\\n\\t\\t'Uint32Array',\\n\\t\\t'Uint8Array',\\n\\t\\t'Uint8ClampedArray'\\n\\t], function (typedArray) {\\n\\t\\treturn typeof global[typedArray] === 'function';\\n\\t});\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/available-typed-arrays/index.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\n\"use strict\";\neval(\"\\n\\nvar objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/deep-equal/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/deep-equal/node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/deep-equal/node_modules/isarray/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/deep-equal/node_modules/is-date-object/index.js\\\");\\nvar whichBoxedPrimitive = __webpack_require__(/*! which-boxed-primitive */ \\\"./node_modules/which-boxed-primitive/index.js\\\");\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar whichCollection = __webpack_require__(/*! which-collection */ \\\"./node_modules/which-collection/index.js\\\");\\nvar getIterator = __webpack_require__(/*! es-get-iterator */ \\\"./node_modules/es-get-iterator/index.js\\\");\\nvar getSideChannel = __webpack_require__(/*! side-channel */ \\\"./node_modules/side-channel/index.js\\\");\\nvar whichTypedArray = __webpack_require__(/*! which-typed-array */ \\\"./node_modules/which-typed-array/index.js\\\");\\nvar assign = __webpack_require__(/*! object.assign */ \\\"./node_modules/object.assign/index.js\\\");\\n\\nvar $getTime = callBound('Date.prototype.getTime');\\nvar gPO = Object.getPrototypeOf;\\nvar $objToString = callBound('Object.prototype.toString');\\n\\nvar $Set = GetIntrinsic('%Set%', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSize = callBound('Map.prototype.size', true);\\nvar $setAdd = callBound('Set.prototype.add', true);\\nvar $setDelete = callBound('Set.prototype.delete', true);\\nvar $setHas = callBound('Set.prototype.has', true);\\nvar $setSize = callBound('Set.prototype.size', true);\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\\nfunction setHasEqualElement(set, val1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n while ((result = i.next()) && !result.done) {\\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\\n // Remove the matching element to make sure we do not check that again.\\n $setDelete(set, result.value);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\\nfunction findLooseMatchingPrimitives(prim) {\\n if (typeof prim === 'undefined') {\\n return null;\\n }\\n if (typeof prim === 'object') { // Only pass in null as object!\\n return void 0;\\n }\\n if (typeof prim === 'symbol') {\\n return false;\\n }\\n if (typeof prim === 'string' || typeof prim === 'number') {\\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\\n }\\n return true;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n var curB = $mapGet(b, altValue);\\n var looseOpts = assign({}, opts, { strict: false });\\n if (\\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\\n // eslint-disable-next-line no-use-before-define\\n || !internalDeepEqual(item, curB, looseOpts, channel)\\n ) {\\n return false;\\n }\\n // eslint-disable-next-line no-use-before-define\\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\\nfunction setMightHaveLoosePrim(a, b, prim) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n\\n return $setHas(b, altValue) && !$setHas(a, altValue);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n var key2;\\n while ((result = i.next()) && !result.done) {\\n key2 = result.value;\\n if (\\n // eslint-disable-next-line no-use-before-define\\n internalDeepEqual(key1, key2, opts, channel)\\n // eslint-disable-next-line no-use-before-define\\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\\n ) {\\n $setDelete(set, key2);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\nfunction internalDeepEqual(actual, expected, options, channel) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n var actualBoxed = whichBoxedPrimitive(actual);\\n var expectedBoxed = whichBoxedPrimitive(expected);\\n if (actualBoxed !== expectedBoxed) {\\n return false;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\\n }\\n\\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 */\\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\\n\\n var hasActual = channel.has(actual);\\n var hasExpected = channel.has(expected);\\n var sentinel;\\n if (hasActual && hasExpected) {\\n if (channel.get(actual) === channel.get(expected)) {\\n return true;\\n }\\n } else {\\n sentinel = {};\\n }\\n if (!hasActual) { channel.set(actual, sentinel); }\\n if (!hasExpected) { channel.set(expected, sentinel); }\\n\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts, channel);\\n}\\n\\nfunction isBuffer(x) {\\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n\\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\\n}\\n\\nfunction setEquiv(a, b, opts, channel) {\\n if ($setSize(a) !== $setSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n while ((resultA = iA.next()) && !resultA.done) {\\n if (resultA.value && typeof resultA.value === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n } else if (!$setHas(b, resultA.value)) {\\n if (opts.strict) { return false; }\\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n }\\n }\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\\n if (resultB.value && typeof resultB.value === 'object') {\\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && !$setHas(a, resultB.value)\\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction mapEquiv(a, b, opts, channel) {\\n if ($mapSize(a) !== $mapSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n var key;\\n var item1;\\n var item2;\\n while ((resultA = iA.next()) && !resultA.done) {\\n key = resultA.value[0];\\n item1 = resultA.value[1];\\n if (key && typeof key === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n } else {\\n item2 = $mapGet(b, key);\\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\\n if (opts.strict) {\\n return false;\\n }\\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n }\\n }\\n }\\n\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n key = resultB.value[0];\\n item2 = resultB.value[1];\\n if (key && typeof key === 'object') {\\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts, channel) {\\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\\n var i, key;\\n\\n if (typeof a !== typeof b) { return false; }\\n if (a == null || b == null) { return false; }\\n\\n if ($objToString(a) !== $objToString(b)) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsArray = isArray(a);\\n var bIsArray = isArray(b);\\n if (aIsArray !== bIsArray) { return false; }\\n\\n // TODO: replace when a cross-realm brand check is available\\n var aIsError = a instanceof Error;\\n var bIsError = b instanceof Error;\\n if (aIsError !== bIsError) { return false; }\\n if (aIsError || bIsError) {\\n if (a.name !== b.name || a.message !== b.message) { return false; }\\n }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\\n return false;\\n }\\n\\n var aIsDate = isDate(a);\\n var bIsDate = isDate(b);\\n if (aIsDate !== bIsDate) { return false; }\\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\\n if ($getTime(a) !== $getTime(b)) { return false; }\\n }\\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\\n\\n if (whichTypedArray(a) !== whichTypedArray(b)) {\\n return false;\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n var ka = objectKeys(a);\\n var kb = objectKeys(b);\\n // having the same number of owned properties (keys incorporates hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; } // eslint-disable-line eqeqeq\\n }\\n\\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\\n for (i = ka.length - 1; i >= 0; i--) {\\n key = ka[i];\\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\\n }\\n\\n var aCollection = whichCollection(a);\\n var bCollection = whichCollection(b);\\n if (aCollection !== bCollection) {\\n return false;\\n }\\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\\n return setEquiv(a, b, opts, channel);\\n }\\n if (aCollection === 'Map') { // aCollection === bCollection\\n return mapEquiv(a, b, opts, channel);\\n }\\n\\n return true;\\n}\\n\\nmodule.exports = function deepEqual(a, b, opts) {\\n return internalDeepEqual(a, b, opts, getSideChannel());\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-date-object/index.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-date-object/index.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateGetDayCall(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-regex/index.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-regex/index.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0; // eslint-disable-line no-param-reassign\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex; // eslint-disable-line no-param-reassign\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/isarray/index.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/isarray/index.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/isarray/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/implementation.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/implementation.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/deep-equal/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/isArguments.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/define-properties/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/define-properties/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\\n\\nvar toStr = Object.prototype.toString;\\nvar concat = Array.prototype.concat;\\nvar origDefineProperty = Object.defineProperty;\\n\\nvar isFunction = function (fn) {\\n\\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\\n};\\n\\nvar arePropertyDescriptorsSupported = function () {\\n\\tvar obj = {};\\n\\ttry {\\n\\t\\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\\n\\t\\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\\n\\t\\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn obj.x === obj;\\n\\t} catch (e) { /* this is IE 8. */\\n\\t\\treturn false;\\n\\t}\\n};\\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\\n\\nvar defineProperty = function (object, name, value, predicate) {\\n\\tif (name in object && (!isFunction(predicate) || !predicate())) {\\n\\t\\treturn;\\n\\t}\\n\\tif (supportsDescriptors) {\\n\\t\\torigDefineProperty(object, name, {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tvalue: value,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\tobject[name] = value;\\n\\t}\\n};\\n\\nvar defineProperties = function (object, map) {\\n\\tvar predicates = arguments.length > 2 ? arguments[2] : {};\\n\\tvar props = keys(map);\\n\\tif (hasSymbols) {\\n\\t\\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\\n\\t}\\n\\tfor (var i = 0; i < props.length; i += 1) {\\n\\t\\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\\n\\t}\\n};\\n\\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\\n\\nmodule.exports = defineProperties;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/define-properties/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/es-get-iterator/index.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {\\n\\n/* eslint global-require: 0 */\\n// the code is structured this way so that bundlers can\\n// alias out `has-symbols` to `() => true` or `() => false` if your target\\n// environments' Symbol capabilities are known, and then use\\n// dead code elimination on the rest of this module.\\n//\\n// Similarly, `isarray` can be aliased to `Array.isArray` if\\n// available in all target environments.\\n\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\n\\nif (__webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")() || __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")()) {\\n\\tvar $iterator = Symbol.iterator;\\n\\t// Symbol is available natively or shammed\\n\\t// natively:\\n\\t// - Chrome >= 38\\n\\t// - Edge 12-14?, Edge >= 15 for sure\\n\\t// - FF >= 36\\n\\t// - Safari >= 9\\n\\t// - node >= 0.12\\n\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t// alternatively, `iterable[$iterator]?.()`\\n\\t\\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\\n\\t\\t\\treturn iterable[$iterator]();\\n\\t\\t}\\n\\t\\tif (isArguments(iterable)) {\\n\\t\\t\\t// arguments objects lack Symbol.iterator\\n\\t\\t\\t// - node 0.12\\n\\t\\t\\treturn Array.prototype[$iterator].call(iterable);\\n\\t\\t}\\n\\t};\\n} else {\\n\\t// Symbol is not available, native or shammed\\n\\tvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/es-get-iterator/node_modules/isarray/index.js\\\");\\n\\tvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\n\\tvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\tvar $Map = GetIntrinsic('%Map%', true);\\n\\tvar $Set = GetIntrinsic('%Set%', true);\\n\\tvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\tvar $arrayPush = callBound('Array.prototype.push');\\n\\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\\n\\tvar $stringSlice = callBound('String.prototype.slice');\\n\\n\\tvar advanceStringIndex = function advanceStringIndex(S, index) {\\n\\t\\tvar length = S.length;\\n\\t\\tif ((index + 1) >= length) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar first = $charCodeAt(S, index);\\n\\t\\tif (first < 0xD800 || first > 0xDBFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar second = $charCodeAt(S, index + 1);\\n\\t\\tif (second < 0xDC00 || second > 0xDFFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\treturn index + 2;\\n\\t};\\n\\n\\tvar getArrayIterator = function getArrayIterator(arraylike) {\\n\\t\\tvar i = 0;\\n\\t\\treturn {\\n\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\tvar done = i >= arraylike.length;\\n\\t\\t\\t\\tvar value;\\n\\t\\t\\t\\tif (!done) {\\n\\t\\t\\t\\t\\tvalue = arraylike[i];\\n\\t\\t\\t\\t\\ti += 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t};\\n\\t};\\n\\n\\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable) {\\n\\t\\tif (isArray(iterable) || isArguments(iterable)) {\\n\\t\\t\\treturn getArrayIterator(iterable);\\n\\t\\t}\\n\\t\\tif (isString(iterable)) {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\tvar nextIndex = advanceStringIndex(iterable, i);\\n\\t\\t\\t\\t\\tvar value = $stringSlice(iterable, i, nextIndex);\\n\\t\\t\\t\\t\\ti = nextIndex;\\n\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\tdone: nextIndex > iterable.length,\\n\\t\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t};\\n\\n\\tif (!$Map && !$Set) {\\n\\t\\t// the only language iterables are Array, String, arguments\\n\\t\\t// - Safari <= 6.0\\n\\t\\t// - Chrome < 38\\n\\t\\t// - node < 0.12\\n\\t\\t// - FF < 13\\n\\t\\t// - IE < 11\\n\\t\\t// - Edge < 11\\n\\n\\t\\tmodule.exports = getNonCollectionIterator;\\n\\t} else {\\n\\t\\t// either Map or Set are available, but Symbol is not\\n\\t\\t// - es6-shim on an ES5 browser\\n\\t\\t// - Safari 6.2 (maybe 6.1?)\\n\\t\\t// - FF v[13, 36)\\n\\t\\t// - IE 11\\n\\t\\t// - Edge 11\\n\\t\\t// - Safari v[6, 9)\\n\\n\\t\\tvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\n\\t\\tvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\n\\n\\t\\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\\n\\t\\tvar $mapForEach = callBound('Map.prototype.forEach', true);\\n\\t\\tvar $setForEach = callBound('Set.prototype.forEach', true);\\n\\t\\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \\\"if is not node\\\"\\n\\n\\t\\t\\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\\n\\t\\t\\t// returns a value, or throws a StopIteration object. These browsers\\n\\t\\t\\t// do not have any other mechanism for iteration.\\n\\t\\t\\tvar $mapIterator = callBound('Map.prototype.iterator', true);\\n\\t\\t\\tvar $setIterator = callBound('Set.prototype.iterator', true);\\n\\t\\t\\tvar getStopIterationIterator = function (iterator) {\\n\\t\\t\\t\\tvar done = false;\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: done ? undefined : iterator.next()\\n\\t\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\t\\tdone = true;\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: true,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: undefined\\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};\\n\\t\\t}\\n\\t\\t// Firefox 27-35, and some older es6-shim versions, use a string \\\"@@iterator\\\" property\\n\\t\\t// this returns a proper iterator object, so we should use it instead of forEach.\\n\\t\\t// newer es6-shim versions use a string \\\"_es6-shim iterator_\\\" property.\\n\\t\\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\\n\\t\\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\\n\\n\\t\\tvar getCollectionIterator = function getCollectionIterator(iterable) {\\n\\t\\t\\tif (isMap(iterable)) {\\n\\t\\t\\t\\tif ($mapIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($mapIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $mapAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapForEach) {\\n\\t\\t\\t\\t\\tvar entries = [];\\n\\t\\t\\t\\t\\t$mapForEach(iterable, function (v, k) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(entries, [k, v]);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(entries);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (isSet(iterable)) {\\n\\t\\t\\t\\tif ($setIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($setIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $setAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setForEach) {\\n\\t\\t\\t\\t\\tvar values = [];\\n\\t\\t\\t\\t\\t$setForEach(iterable, function (v) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(values, v);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(values);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\t\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t\\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\\n\\t\\t};\\n\\t}\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js ***!\n \\************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/isarray/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/isarray/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/isarray/index.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;\\nvar defineProperty = Object.defineProperty;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\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\\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\\nvar setProperty = function setProperty(target, options) {\\n\\tif (defineProperty && options.name === '__proto__') {\\n\\t\\tdefineProperty(target, options.name, {\\n\\t\\t\\tenumerable: true,\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tvalue: options.newValue,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\ttarget[options.name] = options.newValue;\\n\\t}\\n};\\n\\n// Return undefined instead of __proto__ if '__proto__' is not an own property\\nvar getProperty = function getProperty(obj, name) {\\n\\tif (name === '__proto__') {\\n\\t\\tif (!hasOwn.call(obj, name)) {\\n\\t\\t\\treturn void 0;\\n\\t\\t} else if (gOPD) {\\n\\t\\t\\t// In early versions of node, obj['__proto__'] is buggy when obj has\\n\\t\\t\\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\\n\\t\\t\\treturn gOPD(obj, name).value;\\n\\t\\t}\\n\\t}\\n\\n\\treturn obj[name];\\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 = getProperty(target, name);\\n\\t\\t\\t\\tcopy = getProperty(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\\tsetProperty(target, { name: name, newValue: 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\\tsetProperty(target, { name: name, newValue: 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|Object} [cursor_pos] Edit position in text1 or object with more info\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\\n // Check for equality\\n if (text1 === text2) {\\n if (text1) {\\n return [[DIFF_EQUAL, text1]];\\n }\\n return [];\\n }\\n\\n if (cursor_pos != null) {\\n var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\\n if (editdiff) {\\n return editdiff;\\n }\\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, _fix_unicode);\\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 = [\\n [DIFF_INSERT, longtext.substring(0, i)],\\n [DIFF_EQUAL, shorttext],\\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\\n ];\\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 (\\n x1 < text1_length && y1 < text2_length &&\\n text1.charAt(x1) === text2.charAt(y1)\\n ) {\\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 (\\n x2 < text1_length && y2 < text2_length &&\\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\\n ) {\\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 (\\n text1.substring(pointerstart, pointermid) ==\\n text2.substring(pointerstart, pointermid)\\n ) {\\n pointermin = pointermid;\\n pointerstart = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\\n pointermid--;\\n }\\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 || text1.slice(-1) !== text2.slice(-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 (\\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\\n text2.substring(text2.length - pointermid, text2.length - pointerend)\\n ) {\\n pointermin = pointermid;\\n pointerend = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\\n pointermid--;\\n }\\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(\\n longtext.substring(i), shorttext.substring(j));\\n var suffixLength = diff_commonSuffix(\\n longtext.substring(0, i), shorttext.substring(0, j));\\n if (best_common.length < suffixLength + prefixLength) {\\n best_common = shorttext.substring(\\n j - suffixLength, j) + 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 [\\n best_longtext_a, best_longtext_b,\\n best_shorttext_a, best_shorttext_b, best_common\\n ];\\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, Math.ceil(longtext.length / 4));\\n // Check again based on the third quarter.\\n var hm2 = diff_halfMatchI_(longtext, shorttext, 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 * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\\n */\\nfunction diff_cleanupMerge(diffs, fix_unicode) {\\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 if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n diffs.splice(pointer, 1);\\n continue;\\n }\\n switch (diffs[pointer][0]) {\\n case DIFF_INSERT:\\n\\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 var previous_equality = pointer - count_insert - count_delete - 1;\\n if (fix_unicode) {\\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\\n // we assume that the old and new text in the diff are complete and correct\\n // unicode-encoded JS strings, but the tuple boundaries may fall between\\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\\n // of the previous equality and the beginning of this equality. this may create\\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\\n // particular case, both equalities go away, we absorb any previous inequalities,\\n // and we keep scanning for the next equality before rewriting the tuples.\\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\\n var stray = diffs[previous_equality][1].slice(-1);\\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\\n text_delete = stray + text_delete;\\n text_insert = stray + text_insert;\\n if (!diffs[previous_equality][1]) {\\n // emptied out previous equality, so delete it and include previous delete/insert\\n diffs.splice(previous_equality, 1);\\n pointer--;\\n var k = previous_equality - 1;\\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\\n count_insert++;\\n text_insert = diffs[k][1] + text_insert;\\n k--;\\n }\\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\\n count_delete++;\\n text_delete = diffs[k][1] + text_delete;\\n k--;\\n }\\n previous_equality = k;\\n }\\n }\\n if (starts_with_pair_end(diffs[pointer][1])) {\\n var stray = diffs[pointer][1].charAt(0);\\n diffs[pointer][1] = diffs[pointer][1].slice(1);\\n text_delete += stray;\\n text_insert += stray;\\n }\\n }\\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n // for empty equality not at end, wait for next equality\\n diffs.splice(pointer, 1);\\n break;\\n }\\n if (text_delete.length > 0 || text_insert.length > 0) {\\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\\n if (text_delete.length > 0 && text_insert.length > 0) {\\n // Factor out any common prefixes.\\n commonlength = diff_commonPrefix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n if (previous_equality >= 0) {\\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\\n } else {\\n diffs.splice(0, 0, [DIFF_EQUAL, 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 suffixes.\\n commonlength = diff_commonSuffix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n diffs[pointer][1] =\\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\\n }\\n }\\n // Delete the offending records and add the merged ones.\\n var n = count_insert + count_delete;\\n if (text_delete.length === 0 && text_insert.length === 0) {\\n diffs.splice(pointer - n, n);\\n pointer = pointer - n;\\n } else if (text_delete.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 1;\\n } else if (text_insert.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\\n pointer = pointer - n + 1;\\n } else {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 2;\\n }\\n }\\n 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, fix_unicode);\\n }\\n};\\n\\nfunction is_surrogate_pair_start(charCode) {\\n return charCode >= 0xD800 && charCode <= 0xDBFF;\\n}\\n\\nfunction is_surrogate_pair_end(charCode) {\\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\\n}\\n\\nfunction starts_with_pair_end(str) {\\n return is_surrogate_pair_end(str.charCodeAt(0));\\n}\\n\\nfunction ends_with_pair_start(str) {\\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\\n}\\n\\nfunction remove_empty_tuples(tuples) {\\n var ret = [];\\n for (var i = 0; i < tuples.length; i++) {\\n if (tuples[i][1].length > 0) {\\n ret.push(tuples[i]);\\n }\\n }\\n return ret;\\n}\\n\\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\\n return null;\\n }\\n return remove_empty_tuples([\\n [DIFF_EQUAL, before],\\n [DIFF_DELETE, oldMiddle],\\n [DIFF_INSERT, newMiddle],\\n [DIFF_EQUAL, after]\\n ]);\\n}\\n\\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\\n // note: this runs after equality check has ruled out exact equality\\n var oldRange = typeof cursor_pos === 'number' ?\\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\\n var newRange = typeof cursor_pos === 'number' ?\\n null : cursor_pos.newRange;\\n // take into account the old and new selection to generate the best diff\\n // possible for a text edit. for example, a text change from \\\"xxx\\\" to \\\"xx\\\"\\n // could be a delete or forwards-delete of any one of the x's, or the\\n // result of selecting two of the x's and typing \\\"x\\\".\\n var oldLength = oldText.length;\\n var newLength = newText.length;\\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\\n // see if we have an insert or delete before or after cursor\\n var oldCursor = oldRange.index;\\n var oldBefore = oldText.slice(0, oldCursor);\\n var oldAfter = oldText.slice(oldCursor);\\n var maybeNewCursor = newRange ? newRange.index : null;\\n editBefore: {\\n // is this an insert or delete right before oldCursor?\\n var newCursor = oldCursor + newLength - oldLength;\\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\\n break editBefore;\\n }\\n if (newCursor < 0 || newCursor > newLength) {\\n break editBefore;\\n }\\n var newBefore = newText.slice(0, newCursor);\\n var newAfter = newText.slice(newCursor);\\n if (newAfter !== oldAfter) {\\n break editBefore;\\n }\\n var prefixLength = Math.min(oldCursor, newCursor);\\n var oldPrefix = oldBefore.slice(0, prefixLength);\\n var newPrefix = newBefore.slice(0, prefixLength);\\n if (oldPrefix !== newPrefix) {\\n break editBefore;\\n }\\n var oldMiddle = oldBefore.slice(prefixLength);\\n var newMiddle = newBefore.slice(prefixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\\n }\\n editAfter: {\\n // is this an insert or delete right after oldCursor?\\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\\n break editAfter;\\n }\\n var cursor = oldCursor;\\n var newBefore = newText.slice(0, cursor);\\n var newAfter = newText.slice(cursor);\\n if (newBefore !== oldBefore) {\\n break editAfter;\\n }\\n var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\\n var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\\n var newSuffix = newAfter.slice(newAfter.length - suffixLength);\\n if (oldSuffix !== newSuffix) {\\n break editAfter;\\n }\\n var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\\n var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\\n replaceRange: {\\n // see if diff could be a splice of the old selection range\\n var oldPrefix = oldText.slice(0, oldRange.index);\\n var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\\n var prefixLength = oldPrefix.length;\\n var suffixLength = oldSuffix.length;\\n if (newLength < prefixLength + suffixLength) {\\n break replaceRange;\\n }\\n var newPrefix = newText.slice(0, prefixLength);\\n var newSuffix = newText.slice(newLength - suffixLength);\\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\\n break replaceRange;\\n }\\n var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\\n var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n\\n return null;\\n}\\n\\nfunction diff(text1, text2, cursor_pos) {\\n // only pass fix_unicode=true at the top level, not when diff_main is\\n // recursively invoked\\n return diff_main(text1, text2, cursor_pos, true);\\n}\\n\\ndiff.INSERT = DIFF_INSERT;\\ndiff.DELETE = DIFF_DELETE;\\ndiff.EQUAL = DIFF_EQUAL;\\n\\nmodule.exports = diff;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/fast-diff/diff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/foreach/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/foreach/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\nvar hasOwn = Object.prototype.hasOwnProperty;\\nvar toString = Object.prototype.toString;\\n\\nmodule.exports = function forEach (obj, fn, ctx) {\\n if (toString.call(fn) !== '[object Function]') {\\n throw new TypeError('iterator must be a function');\\n }\\n var l = obj.length;\\n if (l === +l) {\\n for (var i = 0; i < l; i++) {\\n fn.call(ctx, obj[i], i, obj);\\n }\\n } else {\\n for (var k in obj) {\\n if (hasOwn.call(obj, k)) {\\n fn.call(ctx, obj[k], k, obj);\\n }\\n }\\n }\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/foreach/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/function-bind/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint no-invalid-this: 1 */\\n\\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\\nvar slice = Array.prototype.slice;\\nvar toStr = Object.prototype.toString;\\nvar funcType = '[object Function]';\\n\\nmodule.exports = function bind(that) {\\n var target = this;\\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\\n throw new TypeError(ERROR_MESSAGE + target);\\n }\\n var args = slice.call(arguments, 1);\\n\\n var bound;\\n var binder = function () {\\n if (this instanceof bound) {\\n var result = target.apply(\\n this,\\n args.concat(slice.call(arguments))\\n );\\n if (Object(result) === result) {\\n return result;\\n }\\n return this;\\n } else {\\n return target.apply(\\n that,\\n args.concat(slice.call(arguments))\\n );\\n }\\n };\\n\\n var boundLength = Math.max(0, target.length - args.length);\\n var boundArgs = [];\\n for (var i = 0; i < boundLength; i++) {\\n boundArgs.push('$' + i);\\n }\\n\\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\\n\\n if (target.prototype) {\\n var Empty = function Empty() {};\\n Empty.prototype = target.prototype;\\n bound.prototype = new Empty();\\n Empty.prototype = null;\\n }\\n\\n return bound;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/function-bind/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/function-bind/implementation.js\\\");\\n\\nmodule.exports = Function.prototype.bind || implementation;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar origSymbol = global.Symbol;\\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \\\"./node_modules/has-symbols/shams.js\\\");\\n\\nmodule.exports = function hasNativeSymbols() {\\n\\tif (typeof origSymbol !== 'function') { return false; }\\n\\tif (typeof Symbol !== 'function') { return false; }\\n\\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\\n\\tif (typeof Symbol('bar') !== 'symbol') { return false; }\\n\\n\\treturn hasSymbolSham();\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/shams.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/shams.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\\nmodule.exports = function hasSymbols() {\\n\\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\\n\\tif (typeof Symbol.iterator === 'symbol') { return true; }\\n\\n\\tvar obj = {};\\n\\tvar sym = Symbol('test');\\n\\tvar symObj = Object(sym);\\n\\tif (typeof sym === 'string') { return false; }\\n\\n\\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\\n\\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\\n\\n\\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\\n\\t// if (sym instanceof Symbol) { return false; }\\n\\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\\n\\t// if (!(symObj instanceof Symbol)) { return false; }\\n\\n\\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\\n\\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\\n\\n\\tvar symVal = 42;\\n\\tobj[sym] = symVal;\\n\\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\\n\\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\\n\\n\\tvar syms = Object.getOwnPropertySymbols(obj);\\n\\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\\n\\n\\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\\n\\t\\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\\n\\t\\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\\n\\t}\\n\\n\\treturn true;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/shams.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has/src/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/has/src/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has/src/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-arguments/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/is-arguments/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\nvar toStr = Object.prototype.toString;\\n\\nvar isStandardArguments = function isArguments(value) {\\n\\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn toStr.call(value) === '[object Arguments]';\\n};\\n\\nvar isLegacyArguments = function isArguments(value) {\\n\\tif (isStandardArguments(value)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn value !== null &&\\n\\t\\ttypeof value === 'object' &&\\n\\t\\ttypeof value.length === 'number' &&\\n\\t\\tvalue.length >= 0 &&\\n\\t\\ttoStr.call(value) !== '[object Array]' &&\\n\\t\\ttoStr.call(value.callee) === '[object Function]';\\n};\\n\\nvar supportsStandardArguments = (function () {\\n\\treturn isStandardArguments(arguments);\\n}());\\n\\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\\n\\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-arguments/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-bigint/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-bigint/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nif (typeof BigInt === 'function') {\\n\\tvar bigIntValueOf = BigInt.prototype.valueOf;\\n\\tvar tryBigInt = function tryBigIntObject(value) {\\n\\t\\ttry {\\n\\t\\t\\tbigIntValueOf.call(value);\\n\\t\\t\\treturn true;\\n\\t\\t} catch (e) {\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\tif (\\n\\t\\t\\tvalue === null\\n\\t\\t\\t|| typeof value === 'undefined'\\n\\t\\t\\t|| typeof value === 'boolean'\\n\\t\\t\\t|| typeof value === 'string'\\n\\t\\t\\t|| typeof value === 'number'\\n\\t\\t\\t|| typeof value === 'symbol'\\n\\t\\t\\t|| typeof value === 'function'\\n\\t\\t) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\tif (typeof value === 'bigint') { // eslint-disable-line valid-typeof\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\treturn tryBigInt(value);\\n\\t};\\n} else {\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-bigint/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-boolean-object/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/is-boolean-object/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar boolToStr = Boolean.prototype.toString;\\n\\nvar tryBooleanObject = function booleanBrandCheck(value) {\\n\\ttry {\\n\\t\\tboolToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar boolClass = '[object Boolean]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isBoolean(value) {\\n\\tif (typeof value === 'boolean') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (value === null || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : toStr.call(value) === boolClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-boolean-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-date-object/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-date-object/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateObject(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) { return false; }\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-map/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-map/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Map) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-map/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-number-object/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/is-number-object/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar numToStr = Number.prototype.toString;\\nvar tryNumberObject = function tryNumberObject(value) {\\n\\ttry {\\n\\t\\tnumToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar numClass = '[object Number]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isNumberObject(value) {\\n\\tif (typeof value === 'number') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-number-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-regex/index.js\":\n/*!****************************************!*\\\n !*** ./node_modules/is-regex/index.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0;\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-set/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-set/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Set) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-set/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-string/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-string/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar strValue = String.prototype.valueOf;\\nvar tryStringObject = function tryStringObject(value) {\\n\\ttry {\\n\\t\\tstrValue.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar strClass = '[object String]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isString(value) {\\n\\tif (typeof value === 'string') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-string/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-typed-array/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\\n\\tfor (var i = 0; i < array.length; i += 1) {\\n\\t\\tif (array[i] === value) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tvar arr = new global[typedArray]();\\n\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t}\\n\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\tif (!descriptor) {\\n\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t}\\n\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar anyTrue = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!anyTrue) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tanyTrue = getter.call(value) === typedArray;\\n\\t\\t\\t} catch (e) { /**/ }\\n\\t\\t}\\n\\t});\\n\\treturn anyTrue;\\n};\\n\\nmodule.exports = function isTypedArray(value) {\\n\\tif (!value || typeof value !== 'object') { return false; }\\n\\tif (!hasToStringTag) {\\n\\t\\tvar tag = $slice($toString(value), 8, -1);\\n\\t\\treturn $indexOf(typedArrays, tag) > -1;\\n\\t}\\n\\tif (!gOPD) { return false; }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\**********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\**************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakmap/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakmap/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x, $setHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakmap/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakset/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakset/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakSet(x) {\\n\\t\\t// `WeakSet` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\tmodule.exports = function isWeakSet(x) {\\n\\t\\t// `WeakSet` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x, $setHas);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakset/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-inspect/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/object-inspect/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var hasMap = typeof Map === 'function' && Map.prototype;\\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\\nvar mapForEach = hasMap && Map.prototype.forEach;\\nvar hasSet = typeof Set === 'function' && Set.prototype;\\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\\nvar setForEach = hasSet && Set.prototype.forEach;\\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\\nvar booleanValueOf = Boolean.prototype.valueOf;\\nvar objectToString = Object.prototype.toString;\\nvar match = String.prototype.match;\\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\\n\\nvar inspectCustom = __webpack_require__(/*! ./util.inspect */ 1).custom;\\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\\n\\nmodule.exports = function inspect_(obj, options, depth, seen) {\\n var opts = options || {};\\n\\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\\n throw new TypeError('option \\\"quoteStyle\\\" must be \\\"single\\\" or \\\"double\\\"');\\n }\\n\\n if (typeof obj === 'undefined') {\\n return 'undefined';\\n }\\n if (obj === null) {\\n return 'null';\\n }\\n if (typeof obj === 'boolean') {\\n return obj ? 'true' : 'false';\\n }\\n\\n if (typeof obj === 'string') {\\n return inspectString(obj, opts);\\n }\\n if (typeof obj === 'number') {\\n if (obj === 0) {\\n return Infinity / obj > 0 ? '0' : '-0';\\n }\\n return String(obj);\\n }\\n if (typeof obj === 'bigint') { // eslint-disable-line valid-typeof\\n return String(obj) + 'n';\\n }\\n\\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\\n if (typeof depth === 'undefined') { depth = 0; }\\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\\n return '[Object]';\\n }\\n\\n if (typeof seen === 'undefined') {\\n seen = [];\\n } else if (indexOf(seen, obj) >= 0) {\\n return '[Circular]';\\n }\\n\\n function inspect(value, from) {\\n if (from) {\\n seen = seen.slice();\\n seen.push(from);\\n }\\n return inspect_(value, opts, depth + 1, seen);\\n }\\n\\n if (typeof obj === 'function') {\\n var name = nameOf(obj);\\n return '[Function' + (name ? ': ' + name : '') + ']';\\n }\\n if (isSymbol(obj)) {\\n var symString = Symbol.prototype.toString.call(obj);\\n return typeof obj === 'object' ? markBoxed(symString) : symString;\\n }\\n if (isElement(obj)) {\\n var s = '<' + String(obj.nodeName).toLowerCase();\\n var attrs = obj.attributes || [];\\n for (var i = 0; i < attrs.length; i++) {\\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\\n }\\n s += '>';\\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\\n s += '';\\n return s;\\n }\\n if (isArray(obj)) {\\n if (obj.length === 0) { return '[]'; }\\n return '[ ' + arrObjKeys(obj, inspect).join(', ') + ' ]';\\n }\\n if (isError(obj)) {\\n var parts = arrObjKeys(obj, inspect);\\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\\n }\\n if (typeof obj === 'object') {\\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\\n return obj[inspectSymbol]();\\n } else if (typeof obj.inspect === 'function') {\\n return obj.inspect();\\n }\\n }\\n if (isMap(obj)) {\\n var mapParts = [];\\n mapForEach.call(obj, function (value, key) {\\n mapParts.push(inspect(key, obj) + ' => ' + inspect(value, obj));\\n });\\n return collectionOf('Map', mapSize.call(obj), mapParts);\\n }\\n if (isSet(obj)) {\\n var setParts = [];\\n setForEach.call(obj, function (value) {\\n setParts.push(inspect(value, obj));\\n });\\n return collectionOf('Set', setSize.call(obj), setParts);\\n }\\n if (isWeakMap(obj)) {\\n return weakCollectionOf('WeakMap');\\n }\\n if (isWeakSet(obj)) {\\n return weakCollectionOf('WeakSet');\\n }\\n if (isNumber(obj)) {\\n return markBoxed(inspect(Number(obj)));\\n }\\n if (isBigInt(obj)) {\\n return markBoxed(inspect(bigIntValueOf.call(obj)));\\n }\\n if (isBoolean(obj)) {\\n return markBoxed(booleanValueOf.call(obj));\\n }\\n if (isString(obj)) {\\n return markBoxed(inspect(String(obj)));\\n }\\n if (!isDate(obj) && !isRegExp(obj)) {\\n var xs = arrObjKeys(obj, inspect);\\n if (xs.length === 0) { return '{}'; }\\n return '{ ' + xs.join(', ') + ' }';\\n }\\n return String(obj);\\n};\\n\\nfunction wrapQuotes(s, defaultStyle, opts) {\\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\\\"' : \\\"'\\\";\\n return quoteChar + s + quoteChar;\\n}\\n\\nfunction quote(s) {\\n return String(s).replace(/\\\"/g, '"');\\n}\\n\\nfunction isArray(obj) { return toStr(obj) === '[object Array]'; }\\nfunction isDate(obj) { return toStr(obj) === '[object Date]'; }\\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]'; }\\nfunction isError(obj) { return toStr(obj) === '[object Error]'; }\\nfunction isSymbol(obj) { return toStr(obj) === '[object Symbol]'; }\\nfunction isString(obj) { return toStr(obj) === '[object String]'; }\\nfunction isNumber(obj) { return toStr(obj) === '[object Number]'; }\\nfunction isBigInt(obj) { return toStr(obj) === '[object BigInt]'; }\\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]'; }\\n\\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\\nfunction has(obj, key) {\\n return hasOwn.call(obj, key);\\n}\\n\\nfunction toStr(obj) {\\n return objectToString.call(obj);\\n}\\n\\nfunction nameOf(f) {\\n if (f.name) { return f.name; }\\n var m = match.call(f, /^function\\\\s*([\\\\w$]+)/);\\n if (m) { return m[1]; }\\n return null;\\n}\\n\\nfunction indexOf(xs, x) {\\n if (xs.indexOf) { return xs.indexOf(x); }\\n for (var i = 0, l = xs.length; i < l; i++) {\\n if (xs[i] === x) { return i; }\\n }\\n return -1;\\n}\\n\\nfunction isMap(x) {\\n if (!mapSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n mapSize.call(x);\\n try {\\n setSize.call(x);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof Map; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakMap(x) {\\n if (!weakMapHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakMapHas.call(x, weakMapHas);\\n try {\\n weakSetHas.call(x, weakSetHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isSet(x) {\\n if (!setSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n setSize.call(x);\\n try {\\n mapSize.call(x);\\n } catch (m) {\\n return true;\\n }\\n return x instanceof Set; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakSet(x) {\\n if (!weakSetHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakSetHas.call(x, weakSetHas);\\n try {\\n weakMapHas.call(x, weakMapHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isElement(x) {\\n if (!x || typeof x !== 'object') { return false; }\\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\\n return true;\\n }\\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\\n}\\n\\nfunction inspectString(str, opts) {\\n // eslint-disable-next-line no-control-regex\\n var s = str.replace(/(['\\\\\\\\])/g, '\\\\\\\\$1').replace(/[\\\\x00-\\\\x1f]/g, lowbyte);\\n return wrapQuotes(s, 'single', opts);\\n}\\n\\nfunction lowbyte(c) {\\n var n = c.charCodeAt(0);\\n var x = {\\n 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r'\\n }[n];\\n if (x) { return '\\\\\\\\' + x; }\\n return '\\\\\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16);\\n}\\n\\nfunction markBoxed(str) {\\n return 'Object(' + str + ')';\\n}\\n\\nfunction weakCollectionOf(type) {\\n return type + ' { ? }';\\n}\\n\\nfunction collectionOf(type, size, entries) {\\n return type + ' (' + size + ') {' + entries.join(', ') + '}';\\n}\\n\\nfunction arrObjKeys(obj, inspect) {\\n var isArr = isArray(obj);\\n var xs = [];\\n if (isArr) {\\n xs.length = obj.length;\\n for (var i = 0; i < obj.length; i++) {\\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\\n }\\n }\\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if ((/[^\\\\w$]/).test(key)) {\\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\\n } else {\\n xs.push(key + ': ' + inspect(obj[key], obj));\\n }\\n }\\n return xs;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-inspect/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-is/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/object-is/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// http://www.ecma-international.org/ecma-262/6.0/#sec-object.is\\n\\nvar numberIsNaN = function (value) {\\n\\treturn value !== value;\\n};\\n\\nmodule.exports = function is(a, b) {\\n\\tif (a === 0 && b === 0) {\\n\\t\\treturn 1 / a === 1 / b;\\n\\t}\\n\\tif (a === b) {\\n\\t\\treturn true;\\n\\t}\\n\\tif (numberIsNaN(a) && numberIsNaN(b)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-is/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/object-keys/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es5-shim\\nvar has = Object.prototype.hasOwnProperty;\\nvar toStr = Object.prototype.toString;\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/object-keys/isArguments.js\\\");\\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\nvar dontEnums = [\\n\\t'toString',\\n\\t'toLocaleString',\\n\\t'valueOf',\\n\\t'hasOwnProperty',\\n\\t'isPrototypeOf',\\n\\t'propertyIsEnumerable',\\n\\t'constructor'\\n];\\nvar equalsConstructorPrototype = function (o) {\\n\\tvar ctor = o.constructor;\\n\\treturn ctor && ctor.prototype === o;\\n};\\nvar excludedKeys = {\\n\\t$applicationCache: true,\\n\\t$console: true,\\n\\t$external: true,\\n\\t$frame: true,\\n\\t$frameElement: true,\\n\\t$frames: true,\\n\\t$innerHeight: true,\\n\\t$innerWidth: true,\\n\\t$outerHeight: true,\\n\\t$outerWidth: true,\\n\\t$pageXOffset: true,\\n\\t$pageYOffset: true,\\n\\t$parent: true,\\n\\t$scrollLeft: true,\\n\\t$scrollTop: true,\\n\\t$scrollX: true,\\n\\t$scrollY: true,\\n\\t$self: true,\\n\\t$webkitIndexedDB: true,\\n\\t$webkitStorageInfo: true,\\n\\t$window: true\\n};\\nvar hasAutomationEqualityBug = (function () {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined') { return false; }\\n\\tfor (var k in window) {\\n\\t\\ttry {\\n\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n}());\\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t}\\n\\ttry {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar keysShim = function keys(object) {\\n\\tvar isObject = object !== null && typeof object === 'object';\\n\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\tvar isArguments = isArgs(object);\\n\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\tvar theKeys = [];\\n\\n\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t}\\n\\n\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t}\\n\\t}\\n\\n\\tif (isArguments && object.length > 0) {\\n\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t}\\n\\t} else {\\n\\t\\tfor (var name in object) {\\n\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif (hasDontEnumBug) {\\n\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn theKeys;\\n};\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\treturn (Object.keys(arguments) || '').length === 2;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tvar originalKeys = Object.keys;\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/isArguments.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/object-keys/isArguments.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/object.assign/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es6-shim\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar canBeObject = function (obj) {\\n\\treturn typeof obj !== 'undefined' && obj !== null;\\n};\\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")();\\nvar toObject = Object;\\nvar push = bind.call(Function.call, Array.prototype.push);\\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\\n\\nmodule.exports = function assign(target, source1) {\\n\\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\\n\\tvar objTarget = toObject(target);\\n\\tvar s, source, i, props, syms, value, key;\\n\\tfor (s = 1; s < arguments.length; ++s) {\\n\\t\\tsource = toObject(arguments[s]);\\n\\t\\tprops = keys(source);\\n\\t\\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\\n\\t\\tif (getSymbols) {\\n\\t\\t\\tsyms = getSymbols(source);\\n\\t\\t\\tfor (i = 0; i < syms.length; ++i) {\\n\\t\\t\\t\\tkey = syms[i];\\n\\t\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\t\\tpush(props, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (i = 0; i < props.length; ++i) {\\n\\t\\t\\tkey = props[i];\\n\\t\\t\\tvalue = source[key];\\n\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\tobjTarget[key] = value;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn objTarget;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/object.assign/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar defineProperties = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/object.assign/shim.js\\\");\\n\\nvar polyfill = getPolyfill();\\n\\ndefineProperties(polyfill, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = polyfill;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/polyfill.js\":\n/*!************************************************!*\\\n !*** ./node_modules/object.assign/polyfill.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\n\\nvar lacksProperEnumerationOrder = function () {\\n\\tif (!Object.assign) {\\n\\t\\treturn false;\\n\\t}\\n\\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\\n\\t// note: this does not detect the bug unless there's 20 characters\\n\\tvar str = 'abcdefghijklmnopqrst';\\n\\tvar letters = str.split('');\\n\\tvar map = {};\\n\\tfor (var i = 0; i < letters.length; ++i) {\\n\\t\\tmap[letters[i]] = letters[i];\\n\\t}\\n\\tvar obj = Object.assign({}, map);\\n\\tvar actual = '';\\n\\tfor (var k in obj) {\\n\\t\\tactual += k;\\n\\t}\\n\\treturn str !== actual;\\n};\\n\\nvar assignHasPendingExceptions = function () {\\n\\tif (!Object.assign || !Object.preventExtensions) {\\n\\t\\treturn false;\\n\\t}\\n\\t// Firefox 37 still has \\\"pending exception\\\" logic in its Object.assign implementation,\\n\\t// which is 72% slower than our shim, and Firefox 40's native implementation.\\n\\tvar thrower = Object.preventExtensions({ 1: 2 });\\n\\ttry {\\n\\t\\tObject.assign(thrower, 'xy');\\n\\t} catch (e) {\\n\\t\\treturn thrower[1] === 'y';\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!Object.assign) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (lacksProperEnumerationOrder()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (assignHasPendingExceptions()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\treturn Object.assign;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/shim.js\":\n/*!********************************************!*\\\n !*** ./node_modules/object.assign/shim.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\n\\nmodule.exports = function shimAssign() {\\n\\tvar polyfill = getPolyfill();\\n\\tdefine(\\n\\t\\tObject,\\n\\t\\t{ assign: polyfill },\\n\\t\\t{ assign: function () { return Object.assign !== polyfill; } }\\n\\t);\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/shim.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 constructor(attrName, keyName, options = {}) {\\n this.attrName = attrName;\\n this.keyName = keyName;\\n const attributeBit = _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].TYPE & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n this.scope =\\n options.scope != null\\n ? // Ignore type bits, force attribute bit\\n (options.scope & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].LEVEL) | attributeBit\\n : _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n if (options.whitelist != null) {\\n this.whitelist = options.whitelist;\\n }\\n }\\n static keys(node) {\\n return Array.from(node.attributes).map((item) => item.name);\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n node.setAttribute(this.keyName, value);\\n return true;\\n }\\n canAdd(_node, value) {\\n if (this.whitelist == null) {\\n return true;\\n }\\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 const 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 const className = node.getAttribute('class') || '';\\n return className\\n .split(/\\\\s+/)\\n .filter((name) => name.indexOf(`${prefix}-`) === 0);\\n}\\nclass ClassAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static keys(node) {\\n return (node.getAttribute('class') || '')\\n .split(/\\\\s+/)\\n .map((name) => name.split('-').slice(0, -1).join('-'));\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n this.remove(node);\\n node.classList.add(`${this.keyName}-${value}`);\\n return true;\\n }\\n remove(node) {\\n const matches = match(node, this.keyName);\\n matches.forEach((name) => {\\n node.classList.remove(name);\\n });\\n if (node.classList.length === 0) {\\n node.removeAttribute('class');\\n }\\n }\\n value(node) {\\n const result = match(node, this.keyName)[0] || '';\\n const 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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _class__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./class */ \\\"./node_modules/parchment/src/attributor/class.ts\\\");\\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ \\\"./node_modules/parchment/src/attributor/style.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_0__[\\\"default\\\"].find(this.domNode);\\n if (blot == null) {\\n return;\\n }\\n const attributes = _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].keys(this.domNode);\\n const classes = _class__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].keys(this.domNode);\\n const styles = _style__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].keys(this.domNode);\\n attributes\\n .concat(classes)\\n .concat(styles)\\n .forEach((name) => {\\n const attr = blot.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].ATTRIBUTE);\\n if (attr instanceof _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]) {\\n this.attributes[attr.attrName] = attr;\\n }\\n });\\n }\\n copy(target) {\\n Object.keys(this.attributes).forEach((key) => {\\n const 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 const parts = name.split('-');\\n const rest = parts\\n .slice(1)\\n .map((part) => part[0].toUpperCase() + part.slice(1))\\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((value) => {\\n const arr = value.split(':');\\n return arr[0].trim();\\n });\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\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 const 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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n\\n\\nclass ContainerBlot extends _parent__WEBPACK_IMPORTED_MODULE_1__[\\\"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_0__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\nclass LeafBlot extends _shadow__WEBPACK_IMPORTED_MODULE_1__[\\\"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 }\\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_0__[\\\"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 _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\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_2__[\\\"default\\\"].INLINE);\\n Array.from(node.childNodes).forEach((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}\\nclass ParentBlot extends _shadow__WEBPACK_IMPORTED_MODULE_3__[\\\"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 if (ParentBlot.uiClass) {\\n this.uiNode.classList.add(ParentBlot.uiClass);\\n }\\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 const 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_1__[\\\"default\\\"]) {\\n return;\\n }\\n else {\\n throw err;\\n }\\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, (child, offset, childLength) => {\\n child.deleteAt(offset, childLength);\\n });\\n }\\n descendant(criteria, index = 0) {\\n const [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, (child, childIndex, childLength) => {\\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, childIndex, lengthLeft));\\n }\\n lengthLeft -= childLength;\\n });\\n return descendants;\\n }\\n detach() {\\n this.children.forEach((child) => {\\n child.detach();\\n });\\n super.detach();\\n }\\n enforceAllowedChildren() {\\n let done = false;\\n this.children.forEach((child) => {\\n if (done) {\\n return;\\n }\\n const allowed = this.statics.allowedChildren.some((def) => child instanceof def);\\n if (allowed) {\\n return;\\n }\\n if (child.statics.scope === _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"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, (child, offset, childLength) => {\\n child.formatAt(offset, childLength, name, value);\\n });\\n }\\n insertAt(index, value, def) {\\n const [child, offset] = this.children.find(index);\\n if (child) {\\n child.insertAt(offset, value, def);\\n }\\n else {\\n const 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 childBlot.parent = this;\\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.attach();\\n }\\n length() {\\n return this.children.reduce((memo, child) => {\\n return memo + child.length();\\n }, 0);\\n }\\n moveChildren(targetParent, refNode) {\\n this.children.forEach((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 const 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 const [child, offset] = this.children.find(index, inclusive);\\n const 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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const after = this.clone();\\n if (this.parent) {\\n this.parent.insertBefore(after, this.next || undefined);\\n }\\n this.children.forEachAt(index, this.length(), (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 const 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 const addedNodes = [];\\n const removedNodes = [];\\n mutations.forEach((mutation) => {\\n if (mutation.target === this.domNode && mutation.type === 'childList') {\\n addedNodes.push(...mutation.addedNodes);\\n removedNodes.push(...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 const blot = this.scroll.find(node);\\n if (blot == null) {\\n return;\\n }\\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((a, b) => {\\n if (a === b) {\\n return 0;\\n }\\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 const 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}\\nParentBlot.uiClass = '';\\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 _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\nclass ShadowBlot {\\n constructor(scroll, domNode) {\\n this.scroll = scroll;\\n this.domNode = domNode;\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.set(domNode, this);\\n this.prev = null;\\n this.next = null;\\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, 10).toString() === value) {\\n value = parseInt(value, 10);\\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 // Hack for accessing inherited static methods\\n get statics() {\\n return this.constructor;\\n }\\n attach() {\\n // Nothing to do\\n }\\n clone() {\\n const 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 }\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.delete(this.domNode);\\n }\\n deleteAt(index, length) {\\n const blot = this.isolate(index, length);\\n blot.remove();\\n }\\n formatAt(index, length, name, value) {\\n const blot = this.isolate(index, length);\\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOT) != null && value) {\\n blot.wrap(name, value);\\n }\\n else if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE) != null) {\\n const parent = this.scroll.create(this.statics.scope);\\n blot.wrap(parent);\\n parent.format(name, value);\\n }\\n }\\n insertAt(index, value, def) {\\n const blot = def == null\\n ? this.scroll.create('text', value)\\n : this.scroll.create(value, def);\\n const ref = this.split(index);\\n this.parent.insertBefore(blot, ref || undefined);\\n }\\n isolate(index, length) {\\n const 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 }\\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 const wrapper = typeof name === 'string'\\n ? this.scroll.create(name, value)\\n : name;\\n if (this.parent != null) {\\n this.parent.insertBefore(wrapper, this.next || undefined);\\n }\\n if (typeof wrapper.appendChild !== 'function') {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"](`Cannot wrap ${name}`);\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inline */ \\\"./node_modules/parchment/src/blot/inline.ts\\\");\\n\\n\\n\\n\\n\\n\\nclass BlockBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"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_2__[\\\"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_2__[\\\"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.blotName = 'block';\\nBlockBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOCK_BLOT;\\nBlockBlot.tagName = 'P';\\nBlockBlot.allowedChildren = [\\n _inline__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n BlockBlot,\\n _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n];\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.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 }\\n // @ts-ignore\\n for (const prop in obj1) {\\n // @ts-ignore\\n if (obj1[prop] !== obj2[prop]) {\\n return false;\\n }\\n }\\n return true;\\n}\\nclass InlineBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"default\\\"].INLINE);\\n if (format == null) {\\n return;\\n }\\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 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.formats()[name] != null ||\\n this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE)) {\\n const 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 const formats = this.formats();\\n if (Object.keys(formats).length === 0) {\\n return this.unwrap(); // unformatted span\\n }\\n const 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_2__[\\\"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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/container */ \\\"./node_modules/parchment/src/blot/abstract/container.ts\\\");\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./block */ \\\"./node_modules/parchment/src/blot/block.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_3__[\\\"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_1__[\\\"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 }\\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((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 }\\n const mark = (blot, markParent = true) => {\\n if (blot == null || blot === this) {\\n return;\\n }\\n if (blot.domNode.parentNode == null) {\\n return;\\n }\\n if (!mutationsMap.has(blot.domNode)) {\\n mutationsMap.set(blot.domNode, []);\\n }\\n if (markParent) {\\n mark(blot.parent);\\n }\\n };\\n const optimize = (blot) => {\\n // Post-order traversal\\n if (!mutationsMap.has(blot.domNode)) {\\n return;\\n }\\n if (blot instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_3__[\\\"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 const blot = this.find(mutation.target, true);\\n if (blot == null) {\\n return;\\n }\\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_3__[\\\"default\\\"]) {\\n child.children.forEach((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 }\\n update(mutations, context = {}) {\\n mutations = mutations || this.observer.takeRecords();\\n const mutationsMap = new WeakMap();\\n mutations\\n .map((mutation) => {\\n const blot = _registry__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].find(mutation.target, true);\\n if (blot == null) {\\n return null;\\n }\\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_4__[\\\"default\\\"];\\nScrollBlot.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _abstract_container__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nScrollBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n\\n\\nclass TextBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__[\\\"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 return domNode.data;\\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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const 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_0__[\\\"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 = null;\\n this.tail = null;\\n this.length = 0;\\n }\\n append(...nodes) {\\n this.insertBefore(nodes[0], null);\\n if (nodes.length > 1) {\\n const rest = nodes.slice(1);\\n this.append(...rest);\\n }\\n }\\n at(index) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur && index > 0) {\\n index -= 1;\\n cur = next();\\n }\\n return cur;\\n }\\n contains(node) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n if (cur === node) {\\n return true;\\n }\\n cur = next();\\n }\\n return false;\\n }\\n indexOf(node) {\\n const next = this.iterator();\\n let cur = next();\\n let index = 0;\\n while (cur) {\\n if (cur === node) {\\n return index;\\n }\\n index += 1;\\n cur = next();\\n }\\n return -1;\\n }\\n insertBefore(node, refNode) {\\n if (node == null) {\\n return;\\n }\\n this.remove(node);\\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;\\n let cur = this.head;\\n while (cur != null) {\\n if (cur === target) {\\n return index;\\n }\\n index += cur.length();\\n cur = cur.next;\\n }\\n return -1;\\n }\\n remove(node) {\\n if (!this.contains(node)) {\\n return;\\n }\\n if (node.prev != null) {\\n node.prev.next = node.next;\\n }\\n if (node.next != null) {\\n node.next.prev = node.prev;\\n }\\n if (node === this.head) {\\n this.head = node.next;\\n }\\n if (node === this.tail) {\\n this.tail = node.prev;\\n }\\n this.length -= 1;\\n }\\n iterator(curNode = this.head) {\\n // TODO use yield when we can\\n return () => {\\n const ret = curNode;\\n if (curNode != null) {\\n curNode = curNode.next;\\n }\\n return ret;\\n };\\n }\\n find(index, inclusive = false) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n const 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 cur = next();\\n }\\n return [null, 0];\\n }\\n forEach(callback) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n callback(cur);\\n cur = next();\\n }\\n }\\n forEachAt(index, length, callback) {\\n if (length <= 0) {\\n return;\\n }\\n const [startNode, offset] = this.find(index);\\n let curIndex = index - offset;\\n const next = this.iterator(startNode);\\n let cur = next();\\n while (cur && curIndex < index + length) {\\n const 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 cur = next();\\n }\\n }\\n map(callback) {\\n return this.reduce((memo, cur) => {\\n memo.push(callback(cur));\\n return memo;\\n }, []);\\n }\\n reduce(callback, memo) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n memo = callback(memo, cur);\\n cur = next();\\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_leaf__WEBPACK_IMPORTED_MODULE_1__ = __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_1__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __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_2__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_block__WEBPACK_IMPORTED_MODULE_3__ = __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_3__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_embed__WEBPACK_IMPORTED_MODULE_4__ = __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_4__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_inline__WEBPACK_IMPORTED_MODULE_5__ = __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_5__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_scroll__WEBPACK_IMPORTED_MODULE_6__ = __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_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_store__WEBPACK_IMPORTED_MODULE_10__ = __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_10__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_style__WEBPACK_IMPORTED_MODULE_11__ = __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_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 }\\n if (this.blots.has(node)) {\\n return this.blots.get(node) || null;\\n }\\n if (bubble) {\\n return this.find(node.parentNode, bubble);\\n }\\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 const names = (query.getAttribute('class') || '').split(/\\\\s+/);\\n names.some((name) => {\\n match = this.classes[name];\\n if (match) {\\n return true;\\n }\\n return false;\\n });\\n match = match || this.tags[query.tagName];\\n }\\n if (match == null) {\\n return null;\\n }\\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 }\\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 const 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((tagName) => {\\n return tagName.toUpperCase();\\n });\\n }\\n else {\\n definition.tagName = definition.tagName.toUpperCase();\\n }\\n const 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/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"// shim for using process in browser\\nvar process = module.exports = {};\\n\\n// cached from whatever global is present so that test runners that stub it\\n// don't break things. But we need to wrap it in a try catch in case it is\\n// wrapped in strict mode code which doesn't define any globals. It's inside a\\n// function because try/catches deoptimize in certain engines.\\n\\nvar cachedSetTimeout;\\nvar cachedClearTimeout;\\n\\nfunction defaultSetTimout() {\\n throw new Error('setTimeout has not been defined');\\n}\\nfunction defaultClearTimeout () {\\n throw new Error('clearTimeout has not been defined');\\n}\\n(function () {\\n try {\\n if (typeof setTimeout === 'function') {\\n cachedSetTimeout = setTimeout;\\n } else {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n } catch (e) {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n try {\\n if (typeof clearTimeout === 'function') {\\n cachedClearTimeout = clearTimeout;\\n } else {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n } catch (e) {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n} ())\\nfunction runTimeout(fun) {\\n if (cachedSetTimeout === setTimeout) {\\n //normal enviroments in sane situations\\n return setTimeout(fun, 0);\\n }\\n // if setTimeout wasn't available but was latter defined\\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\\n cachedSetTimeout = setTimeout;\\n return setTimeout(fun, 0);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedSetTimeout(fun, 0);\\n } catch(e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedSetTimeout.call(null, fun, 0);\\n } catch(e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\\n return cachedSetTimeout.call(this, fun, 0);\\n }\\n }\\n\\n\\n}\\nfunction runClearTimeout(marker) {\\n if (cachedClearTimeout === clearTimeout) {\\n //normal enviroments in sane situations\\n return clearTimeout(marker);\\n }\\n // if clearTimeout wasn't available but was latter defined\\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\\n cachedClearTimeout = clearTimeout;\\n return clearTimeout(marker);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedClearTimeout(marker);\\n } catch (e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedClearTimeout.call(null, marker);\\n } catch (e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\\n return cachedClearTimeout.call(this, marker);\\n }\\n }\\n\\n\\n\\n}\\nvar queue = [];\\nvar draining = false;\\nvar currentQueue;\\nvar queueIndex = -1;\\n\\nfunction cleanUpNextTick() {\\n if (!draining || !currentQueue) {\\n return;\\n }\\n draining = false;\\n if (currentQueue.length) {\\n queue = currentQueue.concat(queue);\\n } else {\\n queueIndex = -1;\\n }\\n if (queue.length) {\\n drainQueue();\\n }\\n}\\n\\nfunction drainQueue() {\\n if (draining) {\\n return;\\n }\\n var timeout = runTimeout(cleanUpNextTick);\\n draining = true;\\n\\n var len = queue.length;\\n while(len) {\\n currentQueue = queue;\\n queue = [];\\n while (++queueIndex < len) {\\n if (currentQueue) {\\n currentQueue[queueIndex].run();\\n }\\n }\\n queueIndex = -1;\\n len = queue.length;\\n }\\n currentQueue = null;\\n draining = false;\\n runClearTimeout(timeout);\\n}\\n\\nprocess.nextTick = function (fun) {\\n var args = new Array(arguments.length - 1);\\n if (arguments.length > 1) {\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n }\\n queue.push(new Item(fun, args));\\n if (queue.length === 1 && !draining) {\\n runTimeout(drainQueue);\\n }\\n};\\n\\n// v8 likes predictible objects\\nfunction Item(fun, array) {\\n this.fun = fun;\\n this.array = array;\\n}\\nItem.prototype.run = function () {\\n this.fun.apply(null, this.array);\\n};\\nprocess.title = 'browser';\\nprocess.browser = true;\\nprocess.env = {};\\nprocess.argv = [];\\nprocess.version = ''; // empty string to avoid regexp issues\\nprocess.versions = {};\\n\\nfunction noop() {}\\n\\nprocess.on = noop;\\nprocess.addListener = noop;\\nprocess.once = noop;\\nprocess.off = noop;\\nprocess.removeListener = noop;\\nprocess.removeAllListeners = noop;\\nprocess.emit = noop;\\nprocess.prependListener = noop;\\nprocess.prependOnceListener = noop;\\n\\nprocess.listeners = function (name) { return [] }\\n\\nprocess.binding = function (name) {\\n throw new Error('process.binding is not supported');\\n};\\n\\nprocess.cwd = function () { return '/' };\\nprocess.chdir = function (dir) {\\n throw new Error('process.chdir is not supported');\\n};\\nprocess.umask = function() { return 0; };\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/process/browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/AttributeMap.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/quill-delta/dist/AttributeMap.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar AttributeMap;\\n(function (AttributeMap) {\\n function compose(a, b, keepNull) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = extend_1.default(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 AttributeMap.compose = compose;\\n function diff(a, b) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = Object.keys(a)\\n .concat(Object.keys(b))\\n .reduce(function (attrs, key) {\\n if (!deep_equal_1.default(a[key], b[key])) {\\n attrs[key] = b[key] === undefined ? null : b[key];\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.diff = diff;\\n function invert(attr, base) {\\n if (attr === void 0) { attr = {}; }\\n if (base === void 0) { base = {}; }\\n attr = attr || {};\\n var baseInverted = Object.keys(base).reduce(function (memo, key) {\\n if (base[key] !== attr[key] && attr[key] !== undefined) {\\n memo[key] = base[key];\\n }\\n return memo;\\n }, {});\\n return Object.keys(attr).reduce(function (memo, key) {\\n if (attr[key] !== base[key] && base[key] === undefined) {\\n memo[key] = null;\\n }\\n return memo;\\n }, baseInverted);\\n }\\n AttributeMap.invert = invert;\\n function transform(a, b, priority) {\\n if (priority === void 0) { priority = false; }\\n if (typeof a !== 'object') {\\n return b;\\n }\\n if (typeof b !== 'object') {\\n return undefined;\\n }\\n if (!priority) {\\n return b; // b simply overwrites us without priority\\n }\\n var attributes = Object.keys(b).reduce(function (attrs, key) {\\n if (a[key] === undefined) {\\n attrs[key] = b[key]; // null is a valid value\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.transform = transform;\\n})(AttributeMap || (AttributeMap = {}));\\nexports.default = AttributeMap;\\n//# sourceMappingURL=AttributeMap.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/AttributeMap.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Delta.js\":\n/*!************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Delta.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar fast_diff_1 = __importDefault(__webpack_require__(/*! fast-diff */ \\\"./node_modules/fast-diff/diff.js\\\"));\\nvar AttributeMap_1 = __importDefault(__webpack_require__(/*! ./AttributeMap */ \\\"./node_modules/quill-delta/dist/AttributeMap.js\\\"));\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\\nvar Delta = /** @class */ (function () {\\n function Delta(ops) {\\n // Assume we are given a well formed ops\\n if (Array.isArray(ops)) {\\n this.ops = ops;\\n }\\n else if (ops != null && Array.isArray(ops.ops)) {\\n this.ops = ops.ops;\\n }\\n else {\\n this.ops = [];\\n }\\n }\\n Delta.prototype.insert = function (arg, attributes) {\\n var newOp = {};\\n if (typeof arg === 'string' && arg.length === 0) {\\n return this;\\n }\\n newOp.insert = arg;\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.delete = function (length) {\\n if (length <= 0) {\\n return this;\\n }\\n return this.push({ delete: length });\\n };\\n Delta.prototype.retain = function (length, attributes) {\\n if (length <= 0) {\\n return this;\\n }\\n var newOp = { retain: length };\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.push = function (newOp) {\\n var index = this.ops.length;\\n var lastOp = this.ops[index - 1];\\n newOp = extend_1.default(true, {}, newOp);\\n if (typeof lastOp === 'object') {\\n if (typeof newOp.delete === 'number' &&\\n 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 (deep_equal_1.default(newOp.attributes, lastOp.attributes)) {\\n if (typeof newOp.insert === 'string' &&\\n typeof lastOp.insert === 'string') {\\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n else if (typeof newOp.retain === 'number' &&\\n typeof lastOp.retain === 'number') {\\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n }\\n }\\n if (index === this.ops.length) {\\n this.ops.push(newOp);\\n }\\n else {\\n this.ops.splice(index, 0, newOp);\\n }\\n return this;\\n };\\n Delta.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 Delta.prototype.filter = function (predicate) {\\n return this.ops.filter(predicate);\\n };\\n Delta.prototype.forEach = function (predicate) {\\n this.ops.forEach(predicate);\\n };\\n Delta.prototype.map = function (predicate) {\\n return this.ops.map(predicate);\\n };\\n Delta.prototype.partition = function (predicate) {\\n var passed = [];\\n var failed = [];\\n this.forEach(function (op) {\\n var target = predicate(op) ? passed : failed;\\n target.push(op);\\n });\\n return [passed, failed];\\n };\\n Delta.prototype.reduce = function (predicate, initialValue) {\\n return this.ops.reduce(predicate, initialValue);\\n };\\n Delta.prototype.changeLength = function () {\\n return this.reduce(function (length, elem) {\\n if (elem.insert) {\\n return length + Op_1.default.length(elem);\\n }\\n else if (elem.delete) {\\n return length - elem.delete;\\n }\\n return length;\\n }, 0);\\n };\\n Delta.prototype.length = function () {\\n return this.reduce(function (length, elem) {\\n return length + Op_1.default.length(elem);\\n }, 0);\\n };\\n Delta.prototype.slice = function (start, end) {\\n if (start === void 0) { start = 0; }\\n if (end === void 0) { end = Infinity; }\\n var ops = [];\\n var iter = Op_1.default.iterator(this.ops);\\n var index = 0;\\n while (index < end && iter.hasNext()) {\\n var nextOp = void 0;\\n if (index < start) {\\n nextOp = iter.next(start - index);\\n }\\n else {\\n nextOp = iter.next(end - index);\\n ops.push(nextOp);\\n }\\n index += Op_1.default.length(nextOp);\\n }\\n return new Delta(ops);\\n };\\n Delta.prototype.compose = function (other) {\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var ops = [];\\n var firstOther = otherIter.peek();\\n if (firstOther != null &&\\n typeof firstOther.retain === 'number' &&\\n firstOther.attributes == null) {\\n var firstLeft = firstOther.retain;\\n while (thisIter.peekType() === 'insert' &&\\n thisIter.peekLength() <= firstLeft) {\\n firstLeft -= thisIter.peekLength();\\n ops.push(thisIter.next());\\n }\\n if (firstOther.retain - firstLeft > 0) {\\n otherIter.next(firstOther.retain - firstLeft);\\n }\\n }\\n var delta = new Delta(ops);\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else if (thisIter.peekType() === 'delete') {\\n delta.push(thisIter.next());\\n }\\n else {\\n var length_1 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_1);\\n var otherOp = otherIter.next(length_1);\\n if (typeof otherOp.retain === 'number') {\\n var newOp = {};\\n if (typeof thisOp.retain === 'number') {\\n newOp.retain = length_1;\\n }\\n else {\\n newOp.insert = thisOp.insert;\\n }\\n // Preserve null when composing with a retain, otherwise remove it for inserts\\n var attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\\n if (attributes) {\\n newOp.attributes = attributes;\\n }\\n delta.push(newOp);\\n // Optimization if rest of other is just retain\\n if (!otherIter.hasNext() &&\\n deep_equal_1.default(delta.ops[delta.ops.length - 1], newOp)) {\\n var rest = new Delta(thisIter.rest());\\n return delta.concat(rest).chop();\\n }\\n // Other op should be delete, we could be an insert or retain\\n // Insert + delete cancels out\\n }\\n else if (typeof otherOp.delete === 'number' &&\\n typeof thisOp.retain === 'number') {\\n delta.push(otherOp);\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.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 Delta.prototype.diff = function (other, cursor) {\\n if (this.ops === other.ops) {\\n return new Delta();\\n }\\n var strings = [this, other].map(function (delta) {\\n return delta\\n .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 })\\n .join('');\\n });\\n var retDelta = new Delta();\\n var diffResult = fast_diff_1.default(strings[0], strings[1], cursor);\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.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 fast_diff_1.default.INSERT:\\n opLength = Math.min(otherIter.peekLength(), length);\\n retDelta.push(otherIter.next(opLength));\\n break;\\n case fast_diff_1.default.DELETE:\\n opLength = Math.min(length, thisIter.peekLength());\\n thisIter.next(opLength);\\n retDelta.delete(opLength);\\n break;\\n case fast_diff_1.default.EQUAL:\\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\\n var thisOp = thisIter.next(opLength);\\n var otherOp = otherIter.next(opLength);\\n if (deep_equal_1.default(thisOp.insert, otherOp.insert)) {\\n retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\\n }\\n else {\\n retDelta.push(otherOp).delete(opLength);\\n }\\n break;\\n }\\n length -= opLength;\\n }\\n });\\n return retDelta.chop();\\n };\\n Delta.prototype.eachLine = function (predicate, newline) {\\n if (newline === void 0) { newline = '\\\\n'; }\\n var iter = Op_1.default.iterator(this.ops);\\n var line = new Delta();\\n var i = 0;\\n while (iter.hasNext()) {\\n if (iter.peekType() !== 'insert') {\\n return;\\n }\\n var thisOp = iter.peek();\\n var start = Op_1.default.length(thisOp) - iter.peekLength();\\n var index = typeof thisOp.insert === 'string'\\n ? thisOp.insert.indexOf(newline, start) - start\\n : -1;\\n if (index < 0) {\\n line.push(iter.next());\\n }\\n else if (index > 0) {\\n line.push(iter.next(index));\\n }\\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 Delta.prototype.invert = function (base) {\\n var inverted = new Delta();\\n this.reduce(function (baseIndex, op) {\\n if (op.insert) {\\n inverted.delete(Op_1.default.length(op));\\n }\\n else if (op.retain && op.attributes == null) {\\n inverted.retain(op.retain);\\n return baseIndex + op.retain;\\n }\\n else if (op.delete || (op.retain && op.attributes)) {\\n var length_2 = (op.delete || op.retain);\\n var slice = base.slice(baseIndex, baseIndex + length_2);\\n slice.forEach(function (baseOp) {\\n if (op.delete) {\\n inverted.push(baseOp);\\n }\\n else if (op.retain && op.attributes) {\\n inverted.retain(Op_1.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\\n }\\n });\\n return baseIndex + length_2;\\n }\\n return baseIndex;\\n }, 0);\\n return inverted.chop();\\n };\\n Delta.prototype.transform = function (arg, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n if (typeof arg === 'number') {\\n return this.transformPosition(arg, priority);\\n }\\n var other = arg;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var delta = new Delta();\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (thisIter.peekType() === 'insert' &&\\n (priority || otherIter.peekType() !== 'insert')) {\\n delta.retain(Op_1.default.length(thisIter.next()));\\n }\\n else if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else {\\n var length_3 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_3);\\n var otherOp = otherIter.next(length_3);\\n if (thisOp.delete) {\\n // Our delete either makes their delete redundant or removes their retain\\n continue;\\n }\\n else if (otherOp.delete) {\\n delta.push(otherOp);\\n }\\n else {\\n // We retain either their retain or insert\\n delta.retain(length_3, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.prototype.transformPosition = function (index, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var offset = 0;\\n while (thisIter.hasNext() && offset <= index) {\\n var length_4 = thisIter.peekLength();\\n var nextType = thisIter.peekType();\\n thisIter.next();\\n if (nextType === 'delete') {\\n index -= Math.min(length_4, index - offset);\\n continue;\\n }\\n else if (nextType === 'insert' && (offset < index || !priority)) {\\n index += length_4;\\n }\\n offset += length_4;\\n }\\n return index;\\n };\\n Delta.Op = Op_1.default;\\n Delta.AttributeMap = AttributeMap_1.default;\\n return Delta;\\n}());\\nmodule.exports = Delta;\\n//# sourceMappingURL=Delta.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Delta.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Iterator.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Iterator.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar Iterator = /** @class */ (function () {\\n function Iterator(ops) {\\n this.ops = ops;\\n this.index = 0;\\n this.offset = 0;\\n }\\n Iterator.prototype.hasNext = function () {\\n return this.peekLength() < Infinity;\\n };\\n Iterator.prototype.next = function (length) {\\n if (!length) {\\n length = Infinity;\\n }\\n var nextOp = this.ops[this.index];\\n if (nextOp) {\\n var offset = this.offset;\\n var opLength = Op_1.default.length(nextOp);\\n if (length >= opLength - offset) {\\n length = opLength - offset;\\n this.index += 1;\\n this.offset = 0;\\n }\\n else {\\n this.offset += length;\\n }\\n if (typeof nextOp.delete === 'number') {\\n return { delete: length };\\n }\\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 }\\n else if (typeof nextOp.insert === 'string') {\\n retOp.insert = nextOp.insert.substr(offset, length);\\n }\\n else {\\n // offset should === 0, length should === 1\\n retOp.insert = nextOp.insert;\\n }\\n return retOp;\\n }\\n }\\n else {\\n return { retain: Infinity };\\n }\\n };\\n Iterator.prototype.peek = function () {\\n return this.ops[this.index];\\n };\\n Iterator.prototype.peekLength = function () {\\n if (this.ops[this.index]) {\\n // Should never return 0 if our index is being managed correctly\\n return Op_1.default.length(this.ops[this.index]) - this.offset;\\n }\\n else {\\n return Infinity;\\n }\\n };\\n Iterator.prototype.peekType = function () {\\n if (this.ops[this.index]) {\\n if (typeof this.ops[this.index].delete === 'number') {\\n return 'delete';\\n }\\n else if (typeof this.ops[this.index].retain === 'number') {\\n return 'retain';\\n }\\n else {\\n return 'insert';\\n }\\n }\\n return 'retain';\\n };\\n Iterator.prototype.rest = function () {\\n if (!this.hasNext()) {\\n return [];\\n }\\n else if (this.offset === 0) {\\n return this.ops.slice(this.index);\\n }\\n else {\\n var offset = this.offset;\\n var index = this.index;\\n var next = this.next();\\n var rest = this.ops.slice(this.index);\\n this.offset = offset;\\n this.index = index;\\n return [next].concat(rest);\\n }\\n };\\n return Iterator;\\n}());\\nexports.default = Iterator;\\n//# sourceMappingURL=Iterator.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Iterator.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Op.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/quill-delta/dist/Op.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Iterator_1 = __importDefault(__webpack_require__(/*! ./Iterator */ \\\"./node_modules/quill-delta/dist/Iterator.js\\\"));\\nvar Op;\\n(function (Op) {\\n function iterator(ops) {\\n return new Iterator_1.default(ops);\\n }\\n Op.iterator = iterator;\\n function length(op) {\\n if (typeof op.delete === 'number') {\\n return op.delete;\\n }\\n else if (typeof op.retain === 'number') {\\n return op.retain;\\n }\\n else {\\n return typeof op.insert === 'string' ? op.insert.length : 1;\\n }\\n }\\n Op.length = length;\\n})(Op || (Op = {}));\\nexports.default = Op;\\n//# sourceMappingURL=Op.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Op.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/deep-equal/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/deep-equal/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/quill-delta/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/is-date-object/index.js\\\");\\n\\nvar getTime = Date.prototype.getTime;\\n\\nfunction deepEqual(actual, expected, options) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected;\\n }\\n\\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 */\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts);\\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') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts) {\\n /* eslint max-statements: [2, 50] */\\n var i, key;\\n if (typeof a !== typeof b) { return false; }\\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\\n\\n // an identical 'prototype' property.\\n if (a.prototype !== b.prototype) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if (aIsRegex || bIsRegex) {\\n return a.source === b.source && flags(a) === flags(b);\\n }\\n\\n if (isDate(a) && isDate(b)) {\\n return getTime.call(a) === getTime.call(b);\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n try {\\n var ka = objectKeys(a);\\n var 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 hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; }\\n }\\n // equivalent values for every corresponding key, and ~~~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\\n return true;\\n}\\n\\nmodule.exports = deepEqual;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/implementation.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/implementation.js ***!\n \\*****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/quill-delta/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/isArguments.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/implementation.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/implementation.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Object = Object;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function flags() {\\n\\tif (this != null && this !== $Object(this)) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\\n\\t}\\n\\tvar result = '';\\n\\tif (this.global) {\\n\\t\\tresult += 'g';\\n\\t}\\n\\tif (this.ignoreCase) {\\n\\t\\tresult += 'i';\\n\\t}\\n\\tif (this.multiline) {\\n\\t\\tresult += 'm';\\n\\t}\\n\\tif (this.dotAll) {\\n\\t\\tresult += 's';\\n\\t}\\n\\tif (this.unicode) {\\n\\t\\tresult += 'u';\\n\\t}\\n\\tif (this.sticky) {\\n\\t\\tresult += 'y';\\n\\t}\\n\\treturn result;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar callBind = __webpack_require__(/*! es-abstract/helpers/callBind */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/regexp.prototype.flags/shim.js\\\");\\n\\nvar flagsBound = callBind(implementation);\\n\\ndefine(flagsBound, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = flagsBound;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/polyfill.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/polyfill.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!supportsDescriptors) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tif ((/a/mig).flags === 'gim') {\\n\\t\\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\\n\\t\\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\\n\\t\\t\\treturn descriptor.get;\\n\\t\\t}\\n\\t}\\n\\treturn implementation;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/shim.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/shim.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar gOPD = Object.getOwnPropertyDescriptor;\\nvar defineProperty = Object.defineProperty;\\nvar TypeErr = TypeError;\\nvar getProto = Object.getPrototypeOf;\\nvar regex = /a/;\\n\\nmodule.exports = function shimFlags() {\\n\\tif (!supportsDescriptors || !getProto) {\\n\\t\\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tvar polyfill = getPolyfill();\\n\\tvar proto = getProto(regex);\\n\\tvar descriptor = gOPD(proto, 'flags');\\n\\tif (!descriptor || descriptor.get !== polyfill) {\\n\\t\\tdefineProperty(proto, 'flags', {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tget: polyfill\\n\\t\\t});\\n\\t}\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/shim.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/side-channel/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar inspect = __webpack_require__(/*! object-inspect */ \\\"./node_modules/object-inspect/index.js\\\");\\n\\nvar $TypeError = GetIntrinsic('%TypeError%');\\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\\nvar $Map = GetIntrinsic('%Map%', true);\\nvar $push = callBound('Array.prototype.push');\\n\\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSet = callBound('Map.prototype.set', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar objectGet = function (objects, key) { // eslint-disable-line consistent-return\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn objects[i].value;\\n\\t\\t}\\n\\t}\\n};\\nvar objectSet = function (objects, key, value) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\tobjects[i].value = value; // eslint-disable-line no-param-reassign\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t}\\n\\t$push(objects, {\\n\\t\\tkey: key,\\n\\t\\tvalue: value\\n\\t});\\n};\\nvar objectHas = function (objects, key) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getSideChannel() {\\n\\tvar $wm;\\n\\tvar $m;\\n\\tvar $o;\\n\\tvar channel = {\\n\\t\\tassert: function (key) {\\n\\t\\t\\tif (!channel.has(key)) {\\n\\t\\t\\t\\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tget: function (key) { // eslint-disable-line consistent-return\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapGet($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapGet($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectGet($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\thas: function (key) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapHas($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapHas($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectHas($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\tset: function (key, value) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif (!$wm) {\\n\\t\\t\\t\\t\\t$wm = new $WeakMap();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$weakMapSet($wm, key, value);\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif (!$m) {\\n\\t\\t\\t\\t\\t$m = new $Map();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$mapSet($m, key, value);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (!$o) {\\n\\t\\t\\t\\t\\t$o = [];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tobjectSet($o, key, value);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\treturn channel;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js ***!\n \\********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var g;\\n\\n// This works in non-strict mode\\ng = (function() {\\n\\treturn this;\\n})();\\n\\ntry {\\n\\t// This works if eval is allowed (see CSP)\\n\\tg = g || new Function(\\\"return this\\\")();\\n} catch (e) {\\n\\t// This works if the window reference is available\\n\\tif (typeof window === \\\"object\\\") g = window;\\n}\\n\\n// g can still be undefined, but nothing to do about it...\\n// We return undefined, instead of nothing here, so it's\\n// easier to handle this case. if(!global) { ...}\\n\\nmodule.exports = g;\\n\\n\\n//# sourceURL=webpack://Quill/(webpack)/buildin/global.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\nvar isNumber = __webpack_require__(/*! is-number-object */ \\\"./node_modules/is-number-object/index.js\\\");\\nvar isBoolean = __webpack_require__(/*! is-boolean-object */ \\\"./node_modules/is-boolean-object/index.js\\\");\\nvar isSymbol = __webpack_require__(/*! is-symbol */ \\\"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\\\");\\nvar isBigInt = __webpack_require__(/*! is-bigint */ \\\"./node_modules/is-bigint/index.js\\\");\\n\\n// eslint-disable-next-line consistent-return\\nmodule.exports = function whichBoxedPrimitive(value) {\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\\n\\t\\treturn null;\\n\\t}\\n\\tif (isString(value)) {\\n\\t\\treturn 'String';\\n\\t}\\n\\tif (isNumber(value)) {\\n\\t\\treturn 'Number';\\n\\t}\\n\\tif (isBoolean(value)) {\\n\\t\\treturn 'Boolean';\\n\\t}\\n\\tif (isSymbol(value)) {\\n\\t\\treturn 'Symbol';\\n\\t}\\n\\tif (isBigInt(value)) {\\n\\t\\treturn 'BigInt';\\n\\t}\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nif (hasSymbols) {\\n\\tvar symToStr = Symbol.prototype.toString;\\n\\tvar symStringRegex = /^Symbol\\\\(.*\\\\)$/;\\n\\tvar isSymbolObject = function isRealSymbolObject(value) {\\n\\t\\tif (typeof value.valueOf() !== 'symbol') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn symStringRegex.test(symToStr.call(value));\\n\\t};\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\tif (typeof value === 'symbol') {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t\\tif (toStr.call(value) !== '[object Symbol]') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn isSymbolObject(value);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n} else {\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\t// this environment does not support Symbols.\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-collection/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/which-collection/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\nvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\nvar isWeakMap = __webpack_require__(/*! is-weakmap */ \\\"./node_modules/is-weakmap/index.js\\\");\\nvar isWeakSet = __webpack_require__(/*! is-weakset */ \\\"./node_modules/is-weakset/index.js\\\");\\n\\nmodule.exports = function whichCollection(value) {\\n\\tif (value && typeof value === 'object') {\\n\\t\\tif (isMap(value)) {\\n\\t\\t\\treturn 'Map';\\n\\t\\t}\\n\\t\\tif (isSet(value)) {\\n\\t\\t\\treturn 'Set';\\n\\t\\t}\\n\\t\\tif (isWeakMap(value)) {\\n\\t\\t\\treturn 'WeakMap';\\n\\t\\t}\\n\\t\\tif (isWeakSet(value)) {\\n\\t\\t\\treturn 'WeakSet';\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-collection/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/which-typed-array/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tif (typeof global[typedArray] === 'function') {\\n\\t\\t\\tvar arr = new global[typedArray]();\\n\\t\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t\\t}\\n\\t\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\t\\tif (!descriptor) {\\n\\t\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t\\t}\\n\\t\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t\\t}\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar foundName = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!foundName) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar name = getter.call(value);\\n\\t\\t\\t\\tif (name === typedArray) {\\n\\t\\t\\t\\t\\tfoundName = name;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {}\\n\\t\\t}\\n\\t});\\n\\treturn foundName;\\n};\\n\\nvar isTypedArray = __webpack_require__(/*! is-typed-array */ \\\"./node_modules/is-typed-array/index.js\\\");\\n\\nmodule.exports = function whichTypedArray(value) {\\n\\tif (!isTypedArray(value)) { return false; }\\n\\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\*************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!*****************************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\*****************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./quill.js\":\n/*!******************!*\\\n !*** ./quill.js ***!\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 _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ \\\"./core.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_indent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formats/indent */ \\\"./formats/indent.js\\\");\\n/* harmony import */ var _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formats/blockquote */ \\\"./formats/blockquote.js\\\");\\n/* harmony import */ var _formats_header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formats/header */ \\\"./formats/header.js\\\");\\n/* harmony import */ var _formats_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formats/list */ \\\"./formats/list.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formats/size */ \\\"./formats/size.js\\\");\\n/* harmony import */ var _formats_bold__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./formats/bold */ \\\"./formats/bold.js\\\");\\n/* harmony import */ var _formats_italic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./formats/italic */ \\\"./formats/italic.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _formats_script__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./formats/script */ \\\"./formats/script.js\\\");\\n/* harmony import */ var _formats_strike__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./formats/strike */ \\\"./formats/strike.js\\\");\\n/* harmony import */ var _formats_underline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./formats/underline */ \\\"./formats/underline.js\\\");\\n/* harmony import */ var _formats_formula__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./formats/formula */ \\\"./formats/formula.js\\\");\\n/* harmony import */ var _formats_image__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formats/image */ \\\"./formats/image.js\\\");\\n/* harmony import */ var _formats_video__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formats/video */ \\\"./formats/video.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _modules_syntax__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/syntax */ \\\"./modules/syntax.js\\\");\\n/* harmony import */ var _modules_table__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/table */ \\\"./modules/table.js\\\");\\n/* harmony import */ var _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/toolbar */ \\\"./modules/toolbar.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./ui/icons */ \\\"./ui/icons.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n/* harmony import */ var _themes_bubble__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./themes/bubble */ \\\"./themes/bubble.js\\\");\\n/* harmony import */ var _themes_snow__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./themes/snow */ \\\"./themes/snow.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'attributors/attribute/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionAttribute\\\"],\\n 'attributors/class/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'attributors/class/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundClass\\\"],\\n 'attributors/class/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorClass\\\"],\\n 'attributors/class/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'attributors/class/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'attributors/class/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'attributors/style/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignStyle\\\"],\\n 'attributors/style/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'attributors/style/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'attributors/style/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionStyle\\\"],\\n 'attributors/style/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontStyle\\\"],\\n 'attributors/style/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeStyle\\\"]\\n}, true);\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'formats/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'formats/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'formats/indent': _formats_indent__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'formats/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'formats/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'formats/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'formats/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'formats/blockquote': _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'formats/code-block': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"default\\\"],\\n 'formats/header': _formats_header__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'formats/list': _formats_list__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'formats/bold': _formats_bold__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'formats/code': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"Code\\\"],\\n 'formats/italic': _formats_italic__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"],\\n 'formats/link': _formats_link__WEBPACK_IMPORTED_MODULE_13__[\\\"default\\\"],\\n 'formats/script': _formats_script__WEBPACK_IMPORTED_MODULE_14__[\\\"default\\\"],\\n 'formats/strike': _formats_strike__WEBPACK_IMPORTED_MODULE_15__[\\\"default\\\"],\\n 'formats/underline': _formats_underline__WEBPACK_IMPORTED_MODULE_16__[\\\"default\\\"],\\n 'formats/formula': _formats_formula__WEBPACK_IMPORTED_MODULE_17__[\\\"default\\\"],\\n 'formats/image': _formats_image__WEBPACK_IMPORTED_MODULE_18__[\\\"default\\\"],\\n 'formats/video': _formats_video__WEBPACK_IMPORTED_MODULE_19__[\\\"default\\\"],\\n 'modules/syntax': _modules_syntax__WEBPACK_IMPORTED_MODULE_21__[\\\"default\\\"],\\n 'modules/table': _modules_table__WEBPACK_IMPORTED_MODULE_22__[\\\"default\\\"],\\n 'modules/toolbar': _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__[\\\"default\\\"],\\n 'themes/bubble': _themes_bubble__WEBPACK_IMPORTED_MODULE_29__[\\\"default\\\"],\\n 'themes/snow': _themes_snow__WEBPACK_IMPORTED_MODULE_30__[\\\"default\\\"],\\n 'ui/icons': _ui_icons__WEBPACK_IMPORTED_MODULE_24__[\\\"default\\\"],\\n 'ui/picker': _ui_picker__WEBPACK_IMPORTED_MODULE_25__[\\\"default\\\"],\\n 'ui/icon-picker': _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__[\\\"default\\\"],\\n 'ui/color-picker': _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__[\\\"default\\\"],\\n 'ui/tooltip': _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__[\\\"default\\\"]\\n}, true);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./quill.js?\");\n\n/***/ }),\n\n/***/ \"./themes/base.js\":\n/*!************************!*\\\n !*** ./themes/base.js ***!\n \\************************/\n/*! exports provided: BaseTooltip, 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__, \\\"BaseTooltip\\\", function() { return BaseTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BaseTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_theme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/theme */ \\\"./core/theme.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n\\n\\n\\n\\n\\n\\n\\nconst ALIGNS = [false, 'center', 'right', 'justify'];\\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'];\\nconst FONTS = [false, 'serif', 'monospace'];\\nconst HEADERS = ['1', '2', '3', false];\\nconst SIZES = ['small', false, 'large', 'huge'];\\n\\nclass BaseTheme extends _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\n const listener = e => {\\n if (!document.body.contains(quill.root)) {\\n document.body.removeEventListener('click', listener);\\n return;\\n }\\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\\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\\n quill.emitter.listenDOM('click', document.body, listener);\\n }\\n\\n addModule(name) {\\n const module = super.addModule(name);\\n\\n if (name === 'toolbar') {\\n this.extendToolbar(module);\\n }\\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\\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\\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\\n return new _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"](select, icons.align);\\n }\\n\\n if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\\n\\n if (select.querySelector('option') == null) {\\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\\n }\\n\\n return new _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](select, icons[format]);\\n }\\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\\n return new _ui_picker__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"](select);\\n });\\n\\n const update = () => {\\n this.pickers.forEach(picker => {\\n picker.update();\\n });\\n };\\n\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, update);\\n }\\n\\n}\\n\\nBaseTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n formula() {\\n this.quill.theme.tooltip.edit('formula');\\n },\\n\\n image() {\\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\\n\\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\\n fileInput.click();\\n },\\n\\n video() {\\n this.quill.theme.tooltip.edit('video');\\n }\\n\\n }\\n }\\n }\\n});\\n\\nclass BaseTooltip extends _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__[\\\"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\\n if (preview != null) {\\n this.textbox.value = preview;\\n } else if (mode !== this.root.getAttribute('data-mode')) {\\n this.textbox.value = '';\\n }\\n\\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\\n this.textbox.select();\\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(\\\"data-\\\".concat(mode)) || '');\\n this.root.setAttribute('data-mode', mode);\\n }\\n\\n restoreFocus() {\\n const {\\n scrollTop\\n } = this.quill.scrollingContainer;\\n this.quill.focus();\\n this.quill.scrollingContainer.scrollTop = scrollTop;\\n }\\n\\n save() {\\n let {\\n value\\n } = this.textbox;\\n\\n switch (this.root.getAttribute('data-mode')) {\\n case 'link':\\n {\\n const {\\n scrollTop\\n } = this.quill.root;\\n\\n if (this.linkRange) {\\n this.quill.formatText(this.linkRange, 'link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n } else {\\n this.restoreFocus();\\n this.quill.format('link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.root.scrollTop = scrollTop;\\n break;\\n }\\n\\n case 'video':\\n {\\n value = extractVideoUrl(value);\\n }\\n // eslint-disable-next-line no-fallthrough\\n\\n case 'formula':\\n {\\n if (!value) break;\\n const range = this.quill.getSelection(true);\\n\\n if (range != null) {\\n const index = range.index + range.length;\\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (this.root.getAttribute('data-mode') === 'formula') {\\n this.quill.insertText(index + 1, ' ', _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(index + 2, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n break;\\n }\\n\\n default:\\n }\\n\\n this.textbox.value = '';\\n this.hide();\\n }\\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\\n if (match) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://www.youtube.com/embed/\\\").concat(match[2], \\\"?showinfo=0\\\");\\n } // eslint-disable-next-line no-cond-assign\\n\\n\\n if (match = url.match(/^(?:(https?):\\\\/\\\\/)?(?:www\\\\.)?vimeo\\\\.com\\\\/(\\\\d+)/)) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://player.vimeo.com/video/\\\").concat(match[2], \\\"/\\\");\\n }\\n\\n return url;\\n}\\n\\nfunction fillSelect(select, values, defaultValue = false) {\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value === defaultValue) {\\n option.setAttribute('selected', 'selected');\\n } else {\\n option.setAttribute('value', value);\\n }\\n\\n select.appendChild(option);\\n });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./themes/base.js?\");\n\n/***/ }),\n\n/***/ \"./themes/bubble.js\":\n/*!**************************!*\\\n !*** ./themes/bubble.js ***!\n \\**************************/\n/*! exports provided: BubbleTooltip, 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__, \\\"BubbleTooltip\\\", function() { return BubbleTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BubbleTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\\n header: 1\\n}, {\\n header: 2\\n}, 'blockquote']];\\n\\nclass BubbleTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"BaseTooltip\\\"] {\\n constructor(quill, bounds) {\\n super(quill, bounds);\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range, oldRange, source) => {\\n if (type !== _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE) return;\\n\\n if (range != null && range.length > 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.show(); // Lock our width so we will expand beyond our offsetParent boundaries\\n\\n this.root.style.left = '0px';\\n this.root.style.width = '';\\n this.root.style.width = \\\"\\\".concat(this.root.offsetWidth, \\\"px\\\");\\n const lines = this.quill.getLines(range.index, range.length);\\n\\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 _core_selection__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (shift !== 0) {\\n arrow.style.marginLeft = \\\"\\\".concat(-1 * shift - arrow.offsetWidth / 2, \\\"px\\\");\\n }\\n\\n return shift;\\n }\\n\\n}\\n\\nBubbleTooltip.TEMPLATE = ['', '
    ', '', '', '
    '].join('');\\n\\nclass BubbleTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n }\\n\\n}\\n\\nBubbleTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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});\\n\\n\\n//# sourceURL=webpack://Quill/./themes/bubble.js?\");\n\n/***/ }),\n\n/***/ \"./themes/snow.js\":\n/*!************************!*\\\n !*** ./themes/snow.js ***!\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 extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [[{\\n header: ['1', '2', '3', false]\\n}], ['bold', 'italic', 'underline', 'link'], [{\\n list: 'ordered'\\n}, {\\n list: 'bullet'\\n}], ['clean']];\\n\\nclass SnowTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n }\\n\\n event.preventDefault();\\n this.hide();\\n });\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE, (range, oldRange, source) => {\\n if (range == null) return;\\n\\n if (range.length === 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n const [link, offset] = this.quill.scroll.descendant(_formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], range.index);\\n\\n if (link != null) {\\n this.linkRange = new _core_selection__WEBPACK_IMPORTED_MODULE_4__[\\\"Range\\\"](range.index - offset, link.length());\\n const preview = _formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.hide();\\n });\\n }\\n\\n show() {\\n super.show();\\n this.root.removeAttribute('data-mode');\\n }\\n\\n}\\n\\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\\n\\nclass SnowTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\\n\\n if (toolbar.container.querySelector('.ql-link')) {\\n this.quill.keyboard.addBinding({\\n key: 'k',\\n shortKey: true\\n }, (range, context) => {\\n toolbar.handlers.link.call(toolbar, !context.format.link);\\n });\\n }\\n }\\n\\n}\\n\\nSnowTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n if (/^\\\\S+@\\\\S+\\\\.\\\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\\n preview = \\\"mailto:\\\".concat(preview);\\n }\\n\\n const {\\n tooltip\\n } = this.quill.theme;\\n tooltip.edit('link', preview);\\n } else {\\n this.quill.format('link', false);\\n }\\n }\\n\\n }\\n }\\n }\\n});\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass ColorPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass IconPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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 if (this.label.innerHTML === item.innerHTML) return;\\n this.label.innerHTML = item.innerHTML;\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/align-left.svg */ \\\"./assets/icons/align-left.svg\\\");\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/icons/align-center.svg */ \\\"./assets/icons/align-center.svg\\\");\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../assets/icons/align-right.svg */ \\\"./assets/icons/align-right.svg\\\");\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/icons/align-justify.svg */ \\\"./assets/icons/align-justify.svg\\\");\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/icons/background.svg */ \\\"./assets/icons/background.svg\\\");\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../assets/icons/blockquote.svg */ \\\"./assets/icons/blockquote.svg\\\");\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/icons/bold.svg */ \\\"./assets/icons/bold.svg\\\");\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/icons/clean.svg */ \\\"./assets/icons/clean.svg\\\");\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/icons/code.svg */ \\\"./assets/icons/code.svg\\\");\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__);\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/icons/color.svg */ \\\"./assets/icons/color.svg\\\");\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__);\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/icons/direction-ltr.svg */ \\\"./assets/icons/direction-ltr.svg\\\");\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__);\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/icons/direction-rtl.svg */ \\\"./assets/icons/direction-rtl.svg\\\");\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__);\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/icons/formula.svg */ \\\"./assets/icons/formula.svg\\\");\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__);\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/icons/header.svg */ \\\"./assets/icons/header.svg\\\");\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__);\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/icons/header-2.svg */ \\\"./assets/icons/header-2.svg\\\");\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__);\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/icons/italic.svg */ \\\"./assets/icons/italic.svg\\\");\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__);\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/icons/image.svg */ \\\"./assets/icons/image.svg\\\");\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__);\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/icons/indent.svg */ \\\"./assets/icons/indent.svg\\\");\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__);\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/icons/outdent.svg */ \\\"./assets/icons/outdent.svg\\\");\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__);\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/icons/link.svg */ \\\"./assets/icons/link.svg\\\");\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__);\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/icons/list-bullet.svg */ \\\"./assets/icons/list-bullet.svg\\\");\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__);\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/icons/list-check.svg */ \\\"./assets/icons/list-check.svg\\\");\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__);\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/icons/list-ordered.svg */ \\\"./assets/icons/list-ordered.svg\\\");\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__);\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/icons/subscript.svg */ \\\"./assets/icons/subscript.svg\\\");\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__);\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/icons/superscript.svg */ \\\"./assets/icons/superscript.svg\\\");\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__);\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/icons/strike.svg */ \\\"./assets/icons/strike.svg\\\");\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__);\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/icons/table.svg */ \\\"./assets/icons/table.svg\\\");\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__);\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/icons/underline.svg */ \\\"./assets/icons/underline.svg\\\");\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__);\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/icons/video.svg */ \\\"./assets/icons/video.svg\\\");\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__);\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ({\\n align: {\\n '': _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default.a,\\n center: _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default.a,\\n right: _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default.a,\\n justify: _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default.a\\n },\\n background: _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default.a,\\n blockquote: _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default.a,\\n bold: _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default.a,\\n clean: _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default.a,\\n code: _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n 'code-block': _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n color: _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default.a,\\n direction: {\\n '': _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default.a,\\n rtl: _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default.a\\n },\\n formula: _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default.a,\\n header: {\\n '1': _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default.a,\\n '2': _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default.a\\n },\\n italic: _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default.a,\\n image: _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default.a,\\n indent: {\\n '+1': _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default.a,\\n '-1': _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default.a\\n },\\n link: _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default.a,\\n list: {\\n bullet: _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default.a,\\n check: _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default.a,\\n ordered: _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default.a\\n },\\n script: {\\n sub: _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default.a,\\n super: _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default.a\\n },\\n strike: _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default.a,\\n table: _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default.a,\\n underline: _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default.a,\\n video: _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default.a\\n});\\n\\n//# sourceURL=webpack://Quill/./ui/icons.js?\");\n\n/***/ }),\n\n/***/ \"./ui/picker.js\":\n/*!**********************!*\\\n !*** ./ui/picker.js ***!\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 _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/dropdown.svg */ \\\"./assets/icons/dropdown.svg\\\");\\n/* harmony import */ var _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__);\\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 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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\n }\\n });\\n this.select.addEventListener('change', this.update.bind(this));\\n }\\n\\n togglePicker() {\\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\\n\\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\\n if (option.hasAttribute('value')) {\\n item.setAttribute('data-value', option.getAttribute('value'));\\n }\\n\\n if (option.textContent) {\\n item.setAttribute('data-label', option.textContent);\\n }\\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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\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 = _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default.a;\\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'); // Don't want screen readers to read this until options are visible\\n\\n options.setAttribute('aria-hidden', 'true');\\n options.tabIndex = '-1'; // Need a unique id for aria-controls\\n\\n options.id = \\\"ql-picker-options-\\\".concat(optionsCounter);\\n optionsCounter += 1;\\n this.label.setAttribute('aria-controls', options.id);\\n this.options = options;\\n Array.from(this.select.options).forEach(option => {\\n const item = this.buildItem(option);\\n options.appendChild(item);\\n\\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(); // Need setTimeout for accessibility to ensure that the browser executes\\n // focus on the next process thread and after any DOM content changes\\n\\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\\n if (selected != null) {\\n selected.classList.remove('ql-selected');\\n }\\n\\n if (item == null) return;\\n item.classList.add('ql-selected');\\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\\n\\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\\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\\n if (trigger) {\\n this.select.dispatchEvent(new Event('change'));\\n this.close();\\n }\\n }\\n\\n update() {\\n let option;\\n\\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\\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\\n this.label.classList.toggle('ql-active', isActive);\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Picker);\\n\\n//# sourceURL=webpack://Quill/./ui/picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/tooltip.js\":\n/*!***********************!*\\\n !*** ./ui/tooltip.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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\\n if (this.quill.root === this.quill.scrollingContainer) {\\n this.quill.root.addEventListener('scroll', () => {\\n this.root.style.marginTop = \\\"\\\".concat(-1 * this.quill.root.scrollTop, \\\"px\\\");\\n });\\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; // root.scrollTop should be 0 if scrollContainer !== root\\n\\n const top = reference.bottom + this.quill.root.scrollTop;\\n this.root.style.left = \\\"\\\".concat(left, \\\"px\\\");\\n this.root.style.top = \\\"\\\".concat(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\\n if (rootBounds.right > containerBounds.right) {\\n shift = containerBounds.right - rootBounds.right;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\n\\n if (rootBounds.left < containerBounds.left) {\\n shift = containerBounds.left - rootBounds.left;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\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 = \\\"\\\".concat(top - verticalShift, \\\"px\\\");\\n this.root.classList.add('ql-flip');\\n }\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/***/ 1:\n/*!********************************!*\\\n !*** ./util.inspect (ignored) ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"/* (ignored) */\\n\\n//# sourceURL=webpack://Quill/./util.inspect_(ignored)?\");\n\n/***/ })\n\n/******/ })[\"default\"];\n});","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 Action = function () {\n function Action(formatter) {\n _classCallCheck(this, Action);\n\n this.formatter = formatter;\n }\n\n _createClass(Action, [{\n key: 'onCreate',\n value: function onCreate() {}\n }, {\n key: 'onDestroy',\n value: function onDestroy() {}\n }, {\n key: 'onUpdate',\n value: function onUpdate() {}\n }]);\n\n return Action;\n}();\n\nexports.default = Action;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _Action = require('../actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _AlignAction = require('../actions/align/AlignAction');\n\nvar _AlignAction2 = _interopRequireDefault(_AlignAction);\n\nvar _ResizeAction = require('../actions/ResizeAction');\n\nvar _ResizeAction2 = _interopRequireDefault(_ResizeAction);\n\nvar _DeleteAction = require('../actions/DeleteAction');\n\nvar _DeleteAction2 = _interopRequireDefault(_DeleteAction);\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 BlotSpec = function () {\n function BlotSpec(formatter) {\n _classCallCheck(this, BlotSpec);\n\n this.formatter = formatter;\n }\n\n _createClass(BlotSpec, [{\n key: 'init',\n value: function init() {}\n }, {\n key: 'getActions',\n value: function getActions() {\n return [_AlignAction2.default, _ResizeAction2.default, _DeleteAction2.default];\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return null;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.getTargetElement();\n }\n }, {\n key: 'setSelection',\n value: function setSelection() {\n this.formatter.quill.setSelection(null);\n }\n }, {\n key: 'onHide',\n value: function onHide() {}\n }]);\n\n return BlotSpec;\n}();\n\nexports.default = BlotSpec;","/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* istanbul ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* istanbul ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* istanbul ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* istanbul ignore next */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* istanbul ignore next */\n utf8TextDecoder = null\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* istanbul ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n","/* global localStorage */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* istanbul ignore next */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} value\n */\n setItem (key, value) {\n this.map.set(key, value)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n\n/* istanbul ignore next */\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\n\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n /* istanbul ignore next */\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n }\n} catch (e) { }\n\n/* istanbul ignore next */\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\nexport const varStorage = _localStorage\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* istanbul ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\nconst perf = typeof performance === 'undefined' ? null : performance\n\nconst isoCrypto = typeof crypto === 'undefined' ? null : crypto\n\n/**\n * @type {function(number):ArrayBuffer}\n */\nconst cryptoRandomBuffer = isoCrypto !== null\n ? len => {\n // browser\n const arr = new Uint8Array(len)\n isoCrypto.getRandomValues(arr)\n return arr.buffer\n }\n : len => {\n // polyfill\n const arr = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n arr[i] = Math.ceil((Math.random() * 0xFFFFFFFF) >>> 0)\n }\n return arr.buffer\n }\n\nexports.performance = perf\nexports.cryptoRandomBuffer = cryptoRandomBuffer\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\n\nvar _ImageSpec = require('./specs/ImageSpec');\n\nvar _ImageSpec2 = _interopRequireDefault(_ImageSpec);\n\nvar _IframeVideoSpec = require('./specs/IframeVideoSpec');\n\nvar _IframeVideoSpec2 = _interopRequireDefault(_IframeVideoSpec);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultOptions = {\n specs: [_ImageSpec2.default, _IframeVideoSpec2.default],\n overlay: {\n className: 'blot-formatter__overlay',\n style: {\n position: 'absolute',\n boxSizing: 'border-box',\n border: '1px dashed #444'\n }\n },\n align: {\n attribute: 'data-align',\n aligner: {\n applyStyle: true\n },\n icons: {\n left: '\\n \\n \\n \\n \\n \\n ',\n center: '\\n \\n \\n \\n \\n \\n ',\n right: '\\n \\n \\n \\n \\n \\n '\n },\n toolbar: {\n allowDeselect: true,\n mainClassName: 'blot-formatter__toolbar',\n mainStyle: {\n position: 'absolute',\n top: '-12px',\n right: '0',\n left: '0',\n height: '0',\n minWidth: '100px',\n font: '12px/1.0 Arial, Helvetica, sans-serif',\n textAlign: 'center',\n color: '#333',\n boxSizing: 'border-box',\n cursor: 'default',\n zIndex: '1'\n },\n buttonClassName: 'blot-formatter__toolbar-button',\n addButtonSelectStyle: true,\n buttonStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n },\n svgStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n }\n }\n },\n resize: {\n handleClassName: 'blot-formatter__resize-handle',\n handleStyle: {\n position: 'absolute',\n height: '12px',\n width: '12px',\n backgroundColor: 'white',\n border: '1px solid #777',\n boxSizing: 'border-box',\n opacity: '0.80'\n }\n }\n};\n\nexports.default = DefaultOptions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('../Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _DefaultAligner = require('./DefaultAligner');\n\nvar _DefaultAligner2 = _interopRequireDefault(_DefaultAligner);\n\nvar _Aligner = require('./Aligner');\n\nvar _Toolbar = require('./Toolbar');\n\nvar _DefaultToolbar = require('./DefaultToolbar');\n\nvar _DefaultToolbar2 = _interopRequireDefault(_DefaultToolbar);\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 AlignAction = function (_Action) {\n _inherits(AlignAction, _Action);\n\n function AlignAction(formatter) {\n _classCallCheck(this, AlignAction);\n\n var _this = _possibleConstructorReturn(this, (AlignAction.__proto__ || Object.getPrototypeOf(AlignAction)).call(this, formatter));\n\n _this.aligner = new _DefaultAligner2.default(formatter.options.align);\n _this.toolbar = new _DefaultToolbar2.default();\n return _this;\n }\n\n _createClass(AlignAction, [{\n key: 'onCreate',\n value: function onCreate() {\n var toolbar = this.toolbar.create(this.formatter, this.aligner);\n this.formatter.overlay.appendChild(toolbar);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n var toolbar = this.toolbar.getElement();\n if (!toolbar) {\n return;\n }\n\n this.formatter.overlay.removeChild(toolbar);\n this.toolbar.destroy();\n }\n }]);\n\n return AlignAction;\n}(_Action3.default);\n\nexports.default = AlignAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Aligner = require('./Aligner');\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LEFT_ALIGN = 'left';\nvar CENTER_ALIGN = 'center';\nvar RIGHT_ALIGN = 'right';\n\nvar DefaultAligner = function () {\n function DefaultAligner(options) {\n var _this = this,\n _alignments;\n\n _classCallCheck(this, DefaultAligner);\n\n this.applyStyle = options.aligner.applyStyle;\n this.alignAttribute = options.attribute;\n this.alignments = (_alignments = {}, _defineProperty(_alignments, LEFT_ALIGN, {\n name: LEFT_ALIGN,\n icon: options.icons.left,\n apply: function apply(el) {\n _this.setAlignment(el, LEFT_ALIGN);\n _this.setStyle(el, 'inline', 'left', '0 1em 1em 0');\n }\n }), _defineProperty(_alignments, CENTER_ALIGN, {\n name: CENTER_ALIGN,\n icon: options.icons.center,\n apply: function apply(el) {\n _this.setAlignment(el, CENTER_ALIGN);\n _this.setStyle(el, 'block', null, 'auto');\n }\n }), _defineProperty(_alignments, RIGHT_ALIGN, {\n name: RIGHT_ALIGN,\n icon: options.icons.right,\n apply: function apply(el) {\n _this.setAlignment(el, RIGHT_ALIGN);\n _this.setStyle(el, 'inline', 'right', '0 0 1em 1em');\n }\n }), _alignments);\n }\n\n _createClass(DefaultAligner, [{\n key: 'getAlignments',\n value: function getAlignments() {\n var _this2 = this;\n\n return Object.keys(this.alignments).map(function (k) {\n return _this2.alignments[k];\n });\n }\n }, {\n key: 'clear',\n value: function clear(el) {\n el.removeAttribute(this.alignAttribute);\n this.setStyle(el, null, null, null);\n }\n }, {\n key: 'isAligned',\n value: function isAligned(el, alignment) {\n return el.getAttribute(this.alignAttribute) === alignment.name;\n }\n }, {\n key: 'setAlignment',\n value: function setAlignment(el, value) {\n el.setAttribute(this.alignAttribute, value);\n }\n }, {\n key: 'setStyle',\n value: function setStyle(el, display, float, margin) {\n if (this.applyStyle) {\n el.style.setProperty('display', display);\n el.style.setProperty('float', float);\n el.style.setProperty('margin', margin);\n }\n }\n }]);\n\n return DefaultAligner;\n}();\n\nexports.default = DefaultAligner;","'use strict';\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Toolbar = require('./Toolbar');\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 DefaultToolbar = function () {\n function DefaultToolbar() {\n _classCallCheck(this, DefaultToolbar);\n\n this.toolbar = null;\n this.buttons = [];\n }\n\n _createClass(DefaultToolbar, [{\n key: 'create',\n value: function create(formatter, aligner) {\n var toolbar = document.createElement('div');\n toolbar.classList.add(formatter.options.align.toolbar.mainClassName);\n this.addToolbarStyle(formatter, toolbar);\n this.addButtons(formatter, toolbar, aligner);\n\n this.toolbar = toolbar;\n return this.toolbar;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.toolbar = null;\n this.buttons = [];\n }\n }, {\n key: 'getElement',\n value: function getElement() {\n return this.toolbar;\n }\n }, {\n key: 'addToolbarStyle',\n value: function addToolbarStyle(formatter, toolbar) {\n if (formatter.options.align.toolbar.mainStyle) {\n Object.assign(toolbar.style, formatter.options.align.toolbar.mainStyle);\n }\n }\n }, {\n key: 'addButtonStyle',\n value: function addButtonStyle(button, index, formatter) {\n if (formatter.options.align.toolbar.buttonStyle) {\n Object.assign(button.style, formatter.options.align.toolbar.buttonStyle);\n if (index > 0) {\n button.style.borderLeftWidth = '0'; // eslint-disable-line no-param-reassign\n }\n }\n\n if (formatter.options.align.toolbar.svgStyle) {\n Object.assign(button.children[0].style, formatter.options.align.toolbar.svgStyle);\n }\n }\n }, {\n key: 'addButtons',\n value: function addButtons(formatter, toolbar, aligner) {\n var _this = this;\n\n aligner.getAlignments().forEach(function (alignment, i) {\n var button = document.createElement('span');\n button.classList.add(formatter.options.align.toolbar.buttonClassName);\n button.innerHTML = alignment.icon;\n button.addEventListener('click', function () {\n _this.onButtonClick(button, formatter, alignment, aligner);\n });\n _this.preselectButton(button, alignment, formatter, aligner);\n _this.addButtonStyle(button, i, formatter);\n _this.buttons.push(button);\n toolbar.appendChild(button);\n });\n }\n }, {\n key: 'preselectButton',\n value: function preselectButton(button, alignment, formatter, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n if (aligner.isAligned(target, alignment)) {\n this.selectButton(formatter, button);\n }\n }\n }, {\n key: 'onButtonClick',\n value: function onButtonClick(button, formatter, alignment, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n this.clickButton(button, target, formatter, alignment, aligner);\n }\n }, {\n key: 'clickButton',\n value: function clickButton(button, alignTarget, formatter, alignment, aligner) {\n var _this2 = this;\n\n this.buttons.forEach(function (b) {\n _this2.deselectButton(formatter, b);\n });\n if (aligner.isAligned(alignTarget, alignment)) {\n if (formatter.options.align.toolbar.allowDeselect) {\n aligner.clear(alignTarget);\n } else {\n this.selectButton(formatter, button);\n }\n } else {\n this.selectButton(formatter, button);\n alignment.apply(alignTarget);\n }\n\n formatter.update();\n }\n }, {\n key: 'selectButton',\n value: function selectButton(formatter, button) {\n button.classList.add('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.setProperty('filter', 'invert(20%)');\n }\n }\n }, {\n key: 'deselectButton',\n value: function deselectButton(formatter, button) {\n button.classList.remove('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.removeProperty('filter');\n }\n }\n }]);\n\n return DefaultToolbar;\n}();\n\nexports.default = DefaultToolbar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ResizeAction = function (_Action) {\n _inherits(ResizeAction, _Action);\n\n function ResizeAction(formatter) {\n _classCallCheck(this, ResizeAction);\n\n var _this = _possibleConstructorReturn(this, (ResizeAction.__proto__ || Object.getPrototypeOf(ResizeAction)).call(this, formatter));\n\n _this.onMouseDown = function (event) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n _this.dragHandle = event.target;\n _this.setCursor(_this.dragHandle.style.cursor);\n\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var rect = target.getBoundingClientRect();\n\n _this.dragStartX = event.clientX;\n _this.preDragWidth = rect.width;\n _this.targetRatio = rect.height / rect.width;\n\n document.addEventListener('mousemove', _this.onDrag);\n document.addEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.onDrag = function (event) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var deltaX = event.clientX - _this.dragStartX;\n var newWidth = 0;\n\n if (_this.dragHandle === _this.topLeftHandle || _this.dragHandle === _this.bottomLeftHandle) {\n newWidth = Math.round(_this.preDragWidth - deltaX);\n } else {\n newWidth = Math.round(_this.preDragWidth + deltaX);\n }\n\n var newHeight = _this.targetRatio * newWidth;\n\n target.setAttribute('width', '' + newWidth);\n target.setAttribute('height', '' + newHeight);\n\n _this.formatter.update();\n };\n\n _this.onMouseUp = function () {\n _this.setCursor('');\n document.removeEventListener('mousemove', _this.onDrag);\n document.removeEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.topLeftHandle = _this.createHandle('top-left', 'nwse-resize');\n _this.topRightHandle = _this.createHandle('top-right', 'nesw-resize');\n _this.bottomRightHandle = _this.createHandle('bottom-right', 'nwse-resize');\n _this.bottomLeftHandle = _this.createHandle('bottom-left', 'nesw-resize');\n _this.dragHandle = null;\n _this.dragStartX = 0;\n _this.preDragWidth = 0;\n _this.targetRatio = 0;\n return _this;\n }\n\n _createClass(ResizeAction, [{\n key: 'onCreate',\n value: function onCreate() {\n this.formatter.overlay.appendChild(this.topLeftHandle);\n this.formatter.overlay.appendChild(this.topRightHandle);\n this.formatter.overlay.appendChild(this.bottomRightHandle);\n this.formatter.overlay.appendChild(this.bottomLeftHandle);\n\n this.repositionHandles(this.formatter.options.resize.handleStyle);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n this.setCursor('');\n this.formatter.overlay.removeChild(this.topLeftHandle);\n this.formatter.overlay.removeChild(this.topRightHandle);\n this.formatter.overlay.removeChild(this.bottomRightHandle);\n this.formatter.overlay.removeChild(this.bottomLeftHandle);\n }\n }, {\n key: 'createHandle',\n value: function createHandle(position, cursor) {\n var box = document.createElement('div');\n box.classList.add(this.formatter.options.resize.handleClassName);\n box.setAttribute('data-position', position);\n box.style.cursor = cursor;\n\n if (this.formatter.options.resize.handleStyle) {\n Object.assign(box.style, this.formatter.options.resize.handleStyle);\n }\n\n box.addEventListener('mousedown', this.onMouseDown);\n\n return box;\n }\n }, {\n key: 'repositionHandles',\n value: function repositionHandles(handleStyle) {\n var handleXOffset = '0px';\n var handleYOffset = '0px';\n if (handleStyle) {\n if (handleStyle.width) {\n handleXOffset = -parseFloat(handleStyle.width) / 2 + 'px';\n }\n if (handleStyle.height) {\n handleYOffset = -parseFloat(handleStyle.height) / 2 + 'px';\n }\n }\n\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset });\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset });\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset });\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset });\n }\n }, {\n key: 'setCursor',\n value: function setCursor(value) {\n if (document.body) {\n document.body.style.cursor = value;\n }\n\n if (this.formatter.currentSpec) {\n var target = this.formatter.currentSpec.getOverlayElement();\n if (target) {\n target.style.cursor = value;\n }\n }\n }\n }]);\n\n return ResizeAction;\n}(_Action3.default);\n\nexports.default = ResizeAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _quill = require('quill');\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\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 DeleteAction = function (_Action) {\n _inherits(DeleteAction, _Action);\n\n function DeleteAction() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DeleteAction);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DeleteAction.__proto__ || Object.getPrototypeOf(DeleteAction)).call.apply(_ref, [this].concat(args))), _this), _this.onKeyUp = function (e) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n // delete or backspace\n if (e.keyCode === 46 || e.keyCode === 8) {\n var blot = _quill2.default.find(_this.formatter.currentSpec.getTargetElement());\n if (blot) {\n blot.deleteAt(0);\n }\n _this.formatter.hide();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DeleteAction, [{\n key: 'onCreate',\n value: function onCreate() {\n document.addEventListener('keyup', this.onKeyUp, true);\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n document.removeEventListener('keyup', this.onKeyUp);\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp);\n }\n }]);\n\n return DeleteAction;\n}(_Action3.default);\n\nexports.default = DeleteAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ImageSpec = function (_BlotSpec) {\n _inherits(ImageSpec, _BlotSpec);\n\n function ImageSpec(formatter) {\n _classCallCheck(this, ImageSpec);\n\n var _this = _possibleConstructorReturn(this, (ImageSpec.__proto__ || Object.getPrototypeOf(ImageSpec)).call(this, formatter));\n\n _this.onClick = function (event) {\n var el = event.target;\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return;\n }\n\n _this.img = el;\n _this.formatter.show(_this);\n };\n\n _this.img = null;\n return _this;\n }\n\n _createClass(ImageSpec, [{\n key: 'init',\n value: function init() {\n this.formatter.quill.root.addEventListener('click', this.onClick);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.img;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.img = null;\n }\n }]);\n\n return ImageSpec;\n}(_BlotSpec3.default);\n\nexports.default = ImageSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _UnclickableBlotSpec2 = require('./UnclickableBlotSpec');\n\nvar _UnclickableBlotSpec3 = _interopRequireDefault(_UnclickableBlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 IframeVideoSpec = function (_UnclickableBlotSpec) {\n _inherits(IframeVideoSpec, _UnclickableBlotSpec);\n\n function IframeVideoSpec(formatter) {\n _classCallCheck(this, IframeVideoSpec);\n\n return _possibleConstructorReturn(this, (IframeVideoSpec.__proto__ || Object.getPrototypeOf(IframeVideoSpec)).call(this, formatter, 'iframe.ql-video'));\n }\n\n return IframeVideoSpec;\n}(_UnclickableBlotSpec3.default);\n\nexports.default = IframeVideoSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 MOUSE_ENTER_ATTRIBUTE = 'data-blot-formatter-unclickable-bound';\nvar PROXY_IMAGE_CLASS = 'blot-formatter__proxy-image';\n\nvar UnclickableBlotSpec = function (_BlotSpec) {\n _inherits(UnclickableBlotSpec, _BlotSpec);\n\n function UnclickableBlotSpec(formatter, selector) {\n _classCallCheck(this, UnclickableBlotSpec);\n\n var _this = _possibleConstructorReturn(this, (UnclickableBlotSpec.__proto__ || Object.getPrototypeOf(UnclickableBlotSpec)).call(this, formatter));\n\n _this.onTextChange = function () {\n Array.from(document.querySelectorAll(_this.selector + ':not([' + MOUSE_ENTER_ATTRIBUTE + '])')).forEach(function (unclickable) {\n unclickable.setAttribute(MOUSE_ENTER_ATTRIBUTE, 'true');\n unclickable.addEventListener('mouseenter', _this.onMouseEnter);\n });\n };\n\n _this.onMouseEnter = function (event) {\n var unclickable = event.target;\n if (!(unclickable instanceof HTMLElement)) {\n return;\n }\n\n _this.nextUnclickable = unclickable;\n _this.repositionProxyImage(_this.nextUnclickable);\n };\n\n _this.onProxyImageClick = function () {\n _this.unclickable = _this.nextUnclickable;\n _this.nextUnclickable = null;\n _this.formatter.show(_this);\n _this.hideProxyImage();\n };\n\n _this.selector = selector;\n _this.unclickable = null;\n _this.nextUnclickable = null;\n return _this;\n }\n\n _createClass(UnclickableBlotSpec, [{\n key: 'init',\n value: function init() {\n if (document.body) {\n /*\n it's important that this is attached to the body instead of the root quill element.\n this prevents the click event from overlapping with ImageSpec\n */\n document.body.appendChild(this.createProxyImage());\n }\n\n this.hideProxyImage();\n this.proxyImage.addEventListener('click', this.onProxyImageClick);\n this.formatter.quill.on('text-change', this.onTextChange);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.unclickable;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.unclickable;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.hideProxyImage();\n this.nextUnclickable = null;\n this.unclickable = null;\n }\n }, {\n key: 'createProxyImage',\n value: function createProxyImage() {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n context.globalAlpha = 0;\n context.fillRect(0, 0, 1, 1);\n\n this.proxyImage = document.createElement('img');\n this.proxyImage.src = canvas.toDataURL('image/png');\n this.proxyImage.classList.add(PROXY_IMAGE_CLASS);\n\n Object.assign(this.proxyImage.style, {\n position: 'absolute',\n margin: '0'\n });\n\n return this.proxyImage;\n }\n }, {\n key: 'hideProxyImage',\n value: function hideProxyImage() {\n Object.assign(this.proxyImage.style, {\n display: 'none'\n });\n }\n }, {\n key: 'repositionProxyImage',\n value: function repositionProxyImage(unclickable) {\n var rect = unclickable.getBoundingClientRect();\n\n Object.assign(this.proxyImage.style, {\n display: 'block',\n left: rect.left + window.pageXOffset + 'px',\n top: rect.top + window.pageYOffset + 'px',\n width: rect.width + 'px',\n height: rect.height + 'px'\n });\n }\n }]);\n\n return UnclickableBlotSpec;\n}(_BlotSpec3.default);\n\nexports.default = UnclickableBlotSpec;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.QuillCursors=e():t.QuillCursors=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(6),i=function(){function t(t,e,n){this.id=t,this.name=e,this.color=n}return t.prototype.build=function(e){var n=document.createElement(t.CONTAINER_ELEMENT_TAG);n.classList.add(t.CURSOR_CLASS),n.id=\"ql-cursor-\"+this.id,n.innerHTML=e.template;var r=n.getElementsByClassName(t.SELECTION_CLASS)[0],i=n.getElementsByClassName(t.CARET_CONTAINER_CLASS)[0],o=i.getElementsByClassName(t.CARET_CLASS)[0],s=n.getElementsByClassName(t.FLAG_CLASS)[0];return s.style.backgroundColor=this.color,o.style.backgroundColor=this.color,n.getElementsByClassName(t.NAME_CLASS)[0].textContent=this.name,this._hideDelay=e.hideDelayMs+\"ms\",this._hideSpeedMs=e.hideSpeedMs,s.style.transitionDelay=this._hideDelay,s.style.transitionDuration=this._hideSpeedMs+\"ms\",this._el=n,this._selectionEl=r,this._caretEl=i,this._flagEl=s,this._el},t.prototype.show=function(){this._el.classList.remove(t.HIDDEN_CLASS)},t.prototype.hide=function(){this._el.classList.add(t.HIDDEN_CLASS)},t.prototype.remove=function(){this._el.parentNode.removeChild(this._el)},t.prototype.toggleFlag=function(e){var n=this;this._flagEl.classList.toggle(t.SHOW_FLAG_CLASS,e)||(this._flagEl.classList.add(t.NO_DELAY_CLASS),setTimeout((function(){return n._flagEl.classList.remove(t.NO_DELAY_CLASS)}),this._hideSpeedMs))},t.prototype.updateCaret=function(t){this._caretEl.style.top=t.top+\"px\",this._caretEl.style.left=t.left+\"px\",this._caretEl.style.height=t.height+\"px\",this._flagEl.style.top=t.top+\"px\",this._flagEl.style.left=t.left+\"px\"},t.prototype.updateSelection=function(t,e){var n=this;this._clearSelection(),t=t||[],t=Array.from(t),t=this._sanitize(t),(t=this._sortByDomPosition(t)).forEach((function(t){return n._addSelection(t,e)}))},t.prototype._clearSelection=function(){this._selectionEl.innerHTML=\"\"},t.prototype._addSelection=function(t,e){var n=this._selectionBlock(t,e);this._selectionEl.appendChild(n)},t.prototype._selectionBlock=function(e,n){var i=document.createElement(t.SELECTION_ELEMENT_TAG);return i.classList.add(t.SELECTION_BLOCK_CLASS),i.style.top=e.top-n.top+\"px\",i.style.left=e.left-n.left+\"px\",i.style.width=e.width+\"px\",i.style.height=e.height+\"px\",i.style.backgroundColor=r(this.color).setAlpha(.3).toString(),i},t.prototype._sortByDomPosition=function(t){return t.sort((function(t,e){return t.top===e.top?t.left-e.left:t.top-e.top}))},t.prototype._sanitize=function(t){var e=this,n=new Set;return t.filter((function(t){if(!t.width||!t.height)return!1;var r=e._serialize(t);return!n.has(r)&&(n.add(r),!0)}))},t.prototype._serialize=function(t){return[\"top:\"+t.top,\"right:\"+t.right,\"bottom:\"+t.bottom,\"left:\"+t.left].join(\";\")},t.CONTAINER_ELEMENT_TAG=\"SPAN\",t.SELECTION_ELEMENT_TAG=\"SPAN\",t.CURSOR_CLASS=\"ql-cursor\",t.SELECTION_CLASS=\"ql-cursor-selections\",t.SELECTION_BLOCK_CLASS=\"ql-cursor-selection-block\",t.CARET_CLASS=\"ql-cursor-caret\",t.CARET_CONTAINER_CLASS=\"ql-cursor-caret-container\",t.FLAG_CLASS=\"ql-cursor-flag\",t.SHOW_FLAG_CLASS=\"show-flag\",t.FLAG_FLAP_CLASS=\"ql-cursor-flag-flap\",t.NAME_CLASS=\"ql-cursor-name\",t.HIDDEN_CLASS=\"hidden\",t.NO_DELAY_CLASS=\"no-delay\",t}();e.default=i},function(t,e,n){var r=Array.prototype.slice,i=n(12),o=n(13),s=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?n.strict?t===e:t==e:function(t,e,n){var l,c;if(a(t)||a(e))return!1;if(t.prototype!==e.prototype)return!1;if(o(t))return!!o(e)&&(t=r.call(t),e=r.call(e),s(t,e,n));if(u(t)){if(!u(e))return!1;if(t.length!==e.length)return!1;for(l=0;l=0;l--)if(f[l]!=h[l])return!1;for(l=f.length-1;l>=0;l--)if(c=f[l],!s(t[c],e[c],n))return!1;return typeof t==typeof e}(t,e,n))};function a(t){return null==t}function u(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}},function(t,e,n){\"use strict\";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},u=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,n=r.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&r.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!n&&!o)return!1;for(e in t);return void 0===e||r.call(t,e)},l=function(t,e){o&&\"__proto__\"===e.name?o(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},c=function(t,e){if(\"__proto__\"===e){if(!r.call(t,e))return;if(s)return s(t,e).value}return t[e]};t.exports=function t(){var e,n,r,i,o,s,f=arguments[0],h=1,p=arguments.length,d=!1;for(\"boolean\"==typeof f&&(d=f,f=arguments[1]||{},h=2),(null==f||\"object\"!=typeof f&&\"function\"!=typeof f)&&(f={});h=0},t.prototype._handleTextChange=function(t){var e=this;window.setTimeout((function(){e._options.transformOnTextChange&&e._transformCursors(t),e._options.selectionChangeSource&&(e._emitSelection(),e.update())}))},t.prototype._emitSelection=function(){this._quill.emitter.emit(this._quill.constructor.events.SELECTION_CHANGE,this._quill.getSelection(),this._currentSelection,this._options.selectionChangeSource)},t.prototype._setDefaults=function(t){return(t=Object.assign({},t)).template=t.template||a.default,t.containerClass=t.containerClass||\"ql-cursors\",null!==t.selectionChangeSource&&(t.selectionChangeSource=t.selectionChangeSource||this._quill.constructor.sources.API),t.hideDelayMs=Number.isInteger(t.hideDelayMs)?t.hideDelayMs:3e3,t.hideSpeedMs=Number.isInteger(t.hideSpeedMs)?t.hideSpeedMs:400,t.transformOnTextChange=!!t.transformOnTextChange,t},t.prototype._lineRanges=function(t,e,n){var r=this._quill.getLines(t.range);return r.reduce((function(t,i,o){if(!i.children){var s=document.createRange();return s.selectNode(i.domNode),t.concat(s)}var a=0===o?e:i.path(0).pop(),u=a[0],l=a[1],c=o===r.length-1?n:i.path(i.length()-1).pop(),f=c[0],h=c[1],p=document.createRange();return p.setStart(u.domNode,l),p.setEnd(f.domNode,h),t.concat(p)}),[])},t.prototype._transformCursors=function(t){var e=this;t=new l(t),this.cursors().filter((function(t){return t.range})).forEach((function(n){n.range.index=t.transformPosition(n.range.index),e._updateCursor(n)}))},t}();e.default=c},function(t,e,n){var r;!function(i){var o=/^\\s+/,s=/\\s+$/,a=0,u=i.round,l=i.min,c=i.max,f=i.random;function h(t,e){if(e=e||{},(t=t||\"\")instanceof h)return t;if(!(this instanceof h))return new h(t,e);var n=function(t){var e={r:0,g:0,b:0},n=1,r=null,a=null,u=null,f=!1,h=!1;\"string\"==typeof t&&(t=function(t){t=t.replace(o,\"\").replace(s,\"\").toLowerCase();var e,n=!1;if(M[t])t=M[t],n=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=G.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=G.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=G.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=G.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=G.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=G.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=G.hex8.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),a:F(e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex6.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),format:n?\"name\":\"hex\"};if(e=G.hex4.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),a:F(e[4]+\"\"+e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex3.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),format:n?\"name\":\"hex\"};return!1}(t));\"object\"==typeof t&&(U(t.r)&&U(t.g)&&U(t.b)?(p=t.r,d=t.g,g=t.b,e={r:255*T(p,255),g:255*T(d,255),b:255*T(g,255)},f=!0,h=\"%\"===String(t.r).substr(-1)?\"prgb\":\"rgb\"):U(t.h)&&U(t.s)&&U(t.v)?(r=H(t.s),a=H(t.v),e=function(t,e,n){t=6*T(t,360),e=T(e,100),n=T(n,100);var r=i.floor(t),o=t-r,s=n*(1-e),a=n*(1-o*e),u=n*(1-(1-o)*e),l=r%6;return{r:255*[n,a,s,s,u,n][l],g:255*[u,n,n,a,s,s][l],b:255*[s,s,u,n,n,a][l]}}(t.h,r,a),f=!0,h=\"hsv\"):U(t.h)&&U(t.s)&&U(t.l)&&(r=H(t.s),u=H(t.l),e=function(t,e,n){var r,i,o;function s(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=T(t,360),e=T(e,100),n=T(n,100),0===e)r=i=o=n;else{var a=n<.5?n*(1+e):n+e-n*e,u=2*n-a;r=s(u,a,t+1/3),i=s(u,a,t),o=s(u,a,t-1/3)}return{r:255*r,g:255*i,b:255*o}}(t.h,r,u),f=!0,h=\"hsl\"),t.hasOwnProperty(\"a\")&&(n=t.a));var p,d,g;return n=j(n),{ok:f,format:t.format||h,r:l(255,c(e.r,0)),g:l(255,c(e.g,0)),b:l(255,c(e.b,0)),a:n}}(t);this._originalInput=t,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=u(100*this._a)/100,this._format=e.format||n.format,this._gradientType=e.gradientType,this._r<1&&(this._r=u(this._r)),this._g<1&&(this._g=u(this._g)),this._b<1&&(this._b=u(this._b)),this._ok=n.ok,this._tc_id=a++}function p(t,e,n){t=T(t,255),e=T(e,255),n=T(n,255);var r,i,o=c(t,e,n),s=l(t,e,n),a=(o+s)/2;if(o==s)r=i=0;else{var u=o-s;switch(i=a>.5?u/(2-o-s):u/(o+s),o){case t:r=(e-n)/u+(e>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(h(r));return o}function L(t,e){e=e||6;for(var n=h(t).toHsv(),r=n.h,i=n.s,o=n.v,s=[],a=1/e;e--;)s.push(h({h:r,s:i,v:o})),o=(o+a)%1;return s}h.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,n,r=this.toRgb();return t=r.r/255,e=r.g/255,n=r.b/255,.2126*(t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:i.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=j(t),this._roundA=u(100*this._a)/100,this},toHsv:function(){var t=d(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=d(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsva(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=p(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=p(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsla(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHex:function(t){return g(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,n,r,i){var o=[D(u(t).toString(16)),D(u(e).toString(16)),D(u(n).toString(16)),D(I(r))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:u(this._r),g:u(this._g),b:u(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\")\":\"rgba(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:u(100*T(this._r,255))+\"%\",g:u(100*T(this._g,255))+\"%\",b:u(100*T(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%)\":\"rgba(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(R[g(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+b(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=h(t);n=\"#\"+b(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+e+\",endColorstr=\"+n+\")\"},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&this._a>=0;return e||!r||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(n=this.toRgbString()),\"prgb\"===t&&(n=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(n=this.toHexString()),\"hex3\"===t&&(n=this.toHexString(!0)),\"hex4\"===t&&(n=this.toHex8String(!0)),\"hex8\"===t&&(n=this.toHex8String()),\"name\"===t&&(n=this.toName()),\"hsl\"===t&&(n=this.toHslString()),\"hsv\"===t&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return h(this.toString())},_applyModification:function(t,e){var n=t.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(m,arguments)},brighten:function(){return this._applyModification(A,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(v,arguments)},saturate:function(){return this._applyModification(_,arguments)},greyscale:function(){return this._applyModification(y,arguments)},spin:function(){return this._applyModification(C,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(S,arguments)},monochromatic:function(){return this._applyCombination(L,arguments)},splitcomplement:function(){return this._applyCombination(O,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(E,arguments)}},h.fromRatio=function(t,e){if(\"object\"==typeof t){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=\"a\"===r?t[r]:H(t[r]));t=n}return h(t,e)},h.equals=function(t,e){return!(!t||!e)&&h(t).toRgbString()==h(e).toRgbString()},h.random=function(){return h.fromRatio({r:f(),g:f(),b:f()})},h.mix=function(t,e,n){n=0===n?0:n||50;var r=h(t).toRgb(),i=h(e).toRgb(),o=n/100;return h({r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a})},h.readability=function(t,e){var n=h(t),r=h(e);return(i.max(n.getLuminance(),r.getLuminance())+.05)/(i.min(n.getLuminance(),r.getLuminance())+.05)},h.isReadable=function(t,e,n){var r,i,o=h.readability(t,e);switch(i=!1,(r=function(t){var e,n;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),n=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==n&&\"large\"!==n&&(n=\"small\");return{level:e,size:n}}(n)).level+r.size){case\"AAsmall\":case\"AAAlarge\":i=o>=4.5;break;case\"AAlarge\":i=o>=3;break;case\"AAAsmall\":i=o>=7}return i},h.mostReadable=function(t,e,n){var r,i,o,s,a=null,u=0;i=(n=n||{}).includeFallbackColors,o=n.level,s=n.size;for(var l=0;lu&&(u=r,a=h(e[l]));return h.isReadable(t,a,{level:o,size:s})||!i?a:(n.includeFallbackColors=!1,h.mostReadable(t,[\"#fff\",\"#000\"],n))};var M=h.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},R=h.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(M);function j(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function T(t,e){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(t)&&(t=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(t);return t=l(e,c(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),i.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function N(t){return l(1,c(0,t))}function q(t){return parseInt(t,16)}function D(t){return 1==t.length?\"0\"+t:\"\"+t}function H(t){return t<=1&&(t=100*t+\"%\"),t}function I(t){return i.round(255*parseFloat(t)).toString(16)}function F(t){return q(t)/255}var P,B,z,G=(B=\"[\\\\s|\\\\(]+(\"+(P=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",z=\"[\\\\s|\\\\(]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(P),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+z),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+z),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!G.CSS_UNIT.exec(t)}t.exports?t.exports=h:void 0===(r=function(){return h}.call(e,n,e,t))||(t.exports=r)}(Math)},function(t,e,n){var r,i;\n/*!\n * RangeFix v0.2.8\n * https://github.com/edg2s/rangefix\n *\n * Copyright 2014-17 Ed Sanders.\n * Released under the MIT license\n */void 0===(i=\"function\"==typeof(r=function(){var t,e={};function n(t){var e;return t?screen.deviceXDPI===screen.logicalXDPI?t:\"length\"in t?Array.prototype.map.call(t,n):(e=screen.deviceXDPI/screen.logicalXDPI,{top:t.top/e,bottom:t.bottom/e,left:t.left/e,right:t.right/e,width:t.width/e,height:t.height/e}):t}function r(t,e){var n,r=0;if(1024>=e.length)return Array.prototype.push.apply(t,e);for(;r1,t.getClientRects||(a.setEnd(o,1),t.getClientRects=t.getBoundingClientRect=2===a.getClientRects().length),t.getBoundingClientRect||(a.setEnd(a.startContainer,a.startOffset),e=a.getBoundingClientRect(),t.getBoundingClientRect=0===e.top&&0===e.left),document.body.removeChild(n),u=window.ActiveXObject&&new Function(\"/*@cc_on return @_jscript_version; @*/\")(),t.ieZoom=!!u&&u<=10),t},e.getClientRects=function(t){var e,i,o,s,a,u=this.isBroken();if(u.ieZoom)return n(t.getClientRects());if(!u.getClientRects)return t.getClientRects();for(e=[],o=[],i=t.endContainer,s=t.endOffset,a=document.createRange();i!==t.commonAncestorContainer;)a.setStart(i,0),a.setEnd(i,s),r(o,a.getClientRects()),s=Array.prototype.indexOf.call(i.parentNode.childNodes,i),i=i.parentNode;return(a=t.cloneRange()).setEnd(i,s),r(e,a.getClientRects()),r(e,o),e},e.getBoundingClientRect=function(t){var e,r,i,o,s,a,u=this.getClientRects(t);if(0===u.length)return null;if(s=t.getBoundingClientRect(),(a=this.isBroken()).ieZoom)return n(s);if(!a.getBoundingClientRect)return s;if(0===s.width&&0===s.height)return u[0];for(e=0,r=u.length;e
    \\n \\n \\n \\n
    \\n \\n \\n
    \\n';e.default=o},function(t,e,n){\"use strict\";n.r(e),function(t){var n=function(){if(\"undefined\"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return(function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n0},t.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),a?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?\"\":e;s.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),l=function(t,e){for(var n=0,r=Object.keys(e);n0},t}(),A=\"undefined\"!=typeof WeakMap?new WeakMap:new n,x=function t(e){if(!(this instanceof t))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=u.getInstance(),r=new m(e,n,this);A.set(this,r)};[\"observe\",\"unobserve\",\"disconnect\"].forEach((function(t){x.prototype[t]=function(){var e;return(e=A.get(this))[t].apply(e,arguments)}}));var C=void 0!==i.ResizeObserver?i.ResizeObserver:x;e.default=C}.call(this,n(10))},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},i=r(n(1)),o=r(n(2)),s=r(n(14)),a=r(n(15)),u=r(n(3)),l=String.fromCharCode(0),c=function(){function t(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]}return t.prototype.insert=function(t,e){var n={};return\"string\"==typeof t&&0===t.length?this:(n.insert=t,null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n))},t.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},t.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},t.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=o.default(!0,{},t),\"object\"==typeof n){if(\"number\"==typeof t.delete&&\"number\"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if(\"number\"==typeof n.delete&&null!=t.insert&&(e-=1,\"object\"!=typeof(n=this.ops[e-1])))return this.ops.unshift(t),this;if(i.default(t.attributes,n.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},t.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},t.prototype.filter=function(t){return this.ops.filter(t)},t.prototype.forEach=function(t){this.ops.forEach(t)},t.prototype.map=function(t){return this.ops.map(t)},t.prototype.partition=function(t){var e=[],n=[];return this.forEach((function(r){(t(r)?e:n).push(r)})),[e,n]},t.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},t.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+u.default.length(e):e.delete?t-e.delete:t}),0)},t.prototype.length=function(){return this.reduce((function(t,e){return t+u.default.length(e)}),0)},t.prototype.slice=function(e,n){void 0===e&&(e=0),void 0===n&&(n=1/0);for(var r=[],i=u.default.iterator(this.ops),o=0;o0&&r.next(s.retain-l)}for(var c=new t(o);n.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())c.push(r.next());else if(\"delete\"===n.peekType())c.push(n.next());else{var f=Math.min(n.peekLength(),r.peekLength()),h=n.next(f),p=r.next(f);if(\"number\"==typeof p.retain){var d={};\"number\"==typeof h.retain?d.retain=f:d.insert=h.insert;var g=a.default.compose(h.attributes,p.attributes,\"number\"==typeof h.retain);if(g&&(d.attributes=g),c.push(d),!r.hasNext()&&i.default(c.ops[c.ops.length-1],d)){var b=new t(n.rest());return c.concat(b).chop()}}else\"number\"==typeof p.delete&&\"number\"==typeof h.retain&&c.push(p)}return c.chop()},t.prototype.concat=function(e){var n=new t(this.ops.slice());return e.ops.length>0&&(n.push(e.ops[0]),n.ops=n.ops.concat(e.ops.slice(1))),n},t.prototype.diff=function(e,n){if(this.ops===e.ops)return new t;var r=[this,e].map((function(t){return t.map((function(n){if(null!=n.insert)return\"string\"==typeof n.insert?n.insert:l;throw new Error(\"diff() called \"+(t===e?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new t,c=s.default(r[0],r[1],n),f=u.default.iterator(this.ops),h=u.default.iterator(e.ops);return c.forEach((function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case s.default.INSERT:n=Math.min(h.peekLength(),e),o.push(h.next(n));break;case s.default.DELETE:n=Math.min(e,f.peekLength()),f.next(n),o.delete(n);break;case s.default.EQUAL:n=Math.min(f.peekLength(),h.peekLength(),e);var r=f.next(n),u=h.next(n);i.default(r.insert,u.insert)?o.retain(n,a.default.diff(r.attributes,u.attributes)):o.push(u).delete(n)}e-=n}})),o.chop()},t.prototype.eachLine=function(e,n){void 0===n&&(n=\"\\n\");for(var r=u.default.iterator(this.ops),i=new t,o=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var s=r.peek(),a=u.default.length(s)-r.peekLength(),l=\"string\"==typeof s.insert?s.insert.indexOf(n,a)-a:-1;if(l<0)i.push(r.next());else if(l>0)i.push(r.next(l));else{if(!1===e(i,r.next(1).attributes||{},o))return;o+=1,i=new t}}i.length()>0&&e(i,{},o)},t.prototype.invert=function(e){var n=new t;return this.reduce((function(t,r){if(r.insert)n.delete(u.default.length(r));else{if(r.retain&&null==r.attributes)return n.retain(r.retain),t+r.retain;if(r.delete||r.retain&&r.attributes){var i=r.delete||r.retain;return e.slice(t,t+i).forEach((function(t){r.delete?n.push(t):r.retain&&r.attributes&&n.retain(u.default.length(t),a.default.invert(r.attributes,t.attributes))})),t+i}}return t}),0),n.chop()},t.prototype.transform=function(e,n){if(void 0===n&&(n=!1),n=!!n,\"number\"==typeof e)return this.transformPosition(e,n);for(var r=e,i=u.default.iterator(this.ops),o=u.default.iterator(r.ops),s=new t;i.hasNext()||o.hasNext();)if(\"insert\"!==i.peekType()||!n&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())s.push(o.next());else{var l=Math.min(i.peekLength(),o.peekLength()),c=i.next(l),f=o.next(l);if(c.delete)continue;f.delete?s.push(f):s.retain(l,a.default.transform(c.attributes,f.attributes,n))}else s.retain(u.default.length(i.next()));return s.chop()},t.prototype.transformPosition=function(t,e){void 0===e&&(e=!1),e=!!e;for(var n=u.default.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var i=n.peekLength(),o=n.peekType();n.next(),\"delete\"!==o?(\"insert\"===o&&(rs)){var p=e.slice(0,h);if((m=e.slice(h))===l){var d=Math.min(a,h),g=u.slice(0,d),b=p.slice(0,d);if(g===b){var v=u.slice(d),_=p.slice(d);return c(g,v,_,l)}}}if(null===f||f===a){var y=a,m=(p=e.slice(0,y),e.slice(y));if(p===u){var A=Math.min(o-y,s-y),x=l.slice(l.length-A),C=m.slice(m.length-A);if(x===C){v=l.slice(0,l.length-A),_=m.slice(0,m.length-A);return c(u,v,_,x)}}}}if(r.length>0&&i&&0===i.length){g=t.slice(0,r.index),x=t.slice(r.index+r.length),d=g.length,A=x.length;if(!(se.length?t:e,u=t.length>e.length?e:t,l=a.indexOf(u);if(-1!==l)return s=[[1,a.substring(0,l)],[0,u],[1,a.substring(l+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1===u.length)return[[-1,t],[1,e]];var c=function(t,e){var n=t.length>e.length?t:e,r=t.length>e.length?e:t;if(n.length<4||2*r.length=t.length?[r,s,a,u,f]:null}var a,u,l,c,f,h=s(n,r,Math.ceil(n.length/4)),p=s(n,r,Math.ceil(n.length/2));if(!h&&!p)return null;a=p?h&&h[4].length>p[4].length?h:p:h;t.length>e.length?(u=a[0],l=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],l=a[3]);var d=a[4];return[u,l,c,f,d]}(t,e);if(c){var f=c[0],h=c[1],p=c[2],d=c[3],g=c[4],b=n(f,p),v=n(h,d);return b.concat([[0,g]],v)}return function(t,e){for(var n=t.length,i=e.length,o=Math.ceil((n+i)/2),s=o,a=2*o,u=new Array(a),l=new Array(a),c=0;cn)d+=2;else if(m>i)p+=2;else if(h){if((C=s+f-_)>=0&&C=A)return r(t,e,w,m)}}}for(var x=-v+g;x<=v-b;x+=2){for(var C=s+x,S=(A=x===-v||x!==v&&l[C-1]n)b+=2;else if(S>i)g+=2;else if(!h){if((y=s+f-x)>=0&&y=(A=n-A))return r(t,e,w,m)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-h),e=e.substring(0,e.length-h));return p&&g.unshift([0,p]),d&&g.push([0,d]),function t(e,n){e.push([0,\"\"]);var r,s=0,a=0,c=0,f=\"\",h=\"\";for(;s=0&&l(e[p][1])){var d=e[p][1].slice(-1);if(e[p][1]=e[p][1].slice(0,-1),f=d+f,h=d+h,!e[p][1]){e.splice(p,1),s--;var g=p-1;e[g]&&1===e[g][0]&&(c++,h=e[g][1]+h,g--),e[g]&&-1===e[g][0]&&(a++,f=e[g][1]+f,g--),p=g}}if(u(e[s][1])){d=e[s][1].charAt(0);e[s][1]=e[s][1].slice(1),f+=d,h+=d}}if(s0||h.length>0){f.length>0&&h.length>0&&(0!==(r=i(h,f))&&(p>=0?e[p][1]+=h.substring(0,r):(e.splice(0,0,[0,h.substring(0,r)]),s++),h=h.substring(r),f=f.substring(r)),0!==(r=o(h,f))&&(e[s][1]=h.substring(h.length-r)+e[s][1],h=h.substring(0,h.length-r),f=f.substring(0,f.length-r)));var b=c+a;0===f.length&&0===h.length?(e.splice(s-b,b),s-=b):0===f.length?(e.splice(s-b,b,[1,h]),s=s-b+1):0===h.length?(e.splice(s-b,b,[-1,f]),s=s-b+1):(e.splice(s-b,b,[-1,f],[1,h]),s=s-b+2)}0!==s&&0===e[s-1][0]?(e[s-1][1]+=e[s][1],e.splice(s,1)):s++,c=0,a=0,f=\"\",h=\"\"}\"\"===e[e.length-1][1]&&e.pop();var v=!1;s=1;for(;s=55296&&t<=56319}function a(t){return t>=56320&&t<=57343}function u(t){return a(t.charCodeAt(0))}function l(t){return s(t.charCodeAt(t.length-1))}function c(t,e,n,r){return l(t)||u(r)?null:function(t){for(var e=[],n=0;n0&&e.push(t[n]);return e}([[0,t],[-1,e],[1,n],[0,r]])}function f(t,e,r){return n(t,e,r,!0)}f.INSERT=1,f.DELETE=-1,f.EQUAL=0,t.exports=f},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(n(1)),s=r(n(2));!function(t){t.compose=function(t,e,n){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var r=s.default(!0,{},e);for(var i in n||(r=Object.keys(r).reduce((function(t,e){return null!=r[e]&&(t[e]=r[e]),t}),{})),t)void 0!==t[i]&&void 0===e[i]&&(r[i]=t[i]);return Object.keys(r).length>0?r:void 0},t.diff=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce((function(n,r){return o.default(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n}),{});return Object.keys(n).length>0?n:void 0},t.invert=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),t=t||{};var n=Object.keys(e).reduce((function(n,r){return e[r]!==t[r]&&void 0!==t[r]&&(n[r]=e[r]),n}),{});return Object.keys(t).reduce((function(n,r){return t[r]!==e[r]&&void 0===e[r]&&(n[r]=null),n}),n)},t.transform=function(t,e,n){if(void 0===n&&(n=!1),\"object\"!=typeof t)return e;if(\"object\"==typeof e){if(!n)return e;var r=Object.keys(e).reduce((function(n,r){return void 0===t[r]&&(n[r]=e[r]),n}),{});return Object.keys(r).length>0?r:void 0}}}(i||(i={})),e.default=i},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(n(3)),o=function(){function t(t){this.ops=t,this.index=0,this.offset=0}return t.prototype.hasNext=function(){return this.peekLength()<1/0},t.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=i.default.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),\"number\"==typeof e.retain?o.retain=t:\"string\"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},t.prototype.peek=function(){return this.ops[this.index]},t.prototype.peekLength=function(){return this.ops[this.index]?i.default.length(this.ops[this.index])-this.offset:1/0},t.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},t.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=t,this.index=e,[n].concat(r)}return[]},t}();e.default=o},function(t,e,n){var r=n(18),i=n(19);\"string\"==typeof(i=i.__esModule?i.default:i)&&(i=[[t.i,i,\"\"]]);var o={insert:\"head\",singleton:!1},s=(r(t.i,i,o),i.locals?i.locals:{});t.exports=s},function(t,e,n){\"use strict\";var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s={};function a(t,e,n){for(var r=0;r2?arguments[2]:{},o=n(e);i&&(o=a.call(o,Object.getOwnPropertySymbols(e)));for(var s=0;s0&&(r.attributes=e),this.push(r))},p.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},p.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&\"object\"===o(e)&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},p.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=s(!0,{},t),\"object\"===o(r)){if(\"number\"==typeof t.delete&&\"number\"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if(\"number\"==typeof r.delete&&null!=t.insert&&(e-=1,\"object\"!==o(r=this.ops[e-1])))return this.ops.unshift(t),this;if(i(t.attributes,r.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},p.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},p.prototype.filter=function(t){return this.ops.filter(t)},p.prototype.forEach=function(t){this.ops.forEach(t)},p.prototype.map=function(t){return this.ops.map(t)},p.prototype.partition=function(t){var e=[],r=[];return this.forEach((function(o){(t(o)?e:r).push(o)})),[e,r]},p.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},p.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+a.length(e):e.delete?t-e.delete:t}),0)},p.prototype.length=function(){return this.reduce((function(t,e){return t+a.length(e)}),0)},p.prototype.slice=function(t,e){t=t||0,\"number\"!=typeof e&&(e=1/0);for(var r=[],o=a.iterator(this.ops),n=0;n0&&r.next(n.retain-s)}for(var u=new p(o);e.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())u.push(r.next());else if(\"delete\"===e.peekType())u.push(e.next());else{var c=Math.min(e.peekLength(),r.peekLength()),f=e.next(c),l=r.next(c);if(\"number\"==typeof l.retain){var y={};\"number\"==typeof f.retain?y.retain=c:y.insert=f.insert;var h=a.attributes.compose(f.attributes,l.attributes,\"number\"==typeof f.retain);if(h&&(y.attributes=h),u.push(y),!r.hasNext()&&i(u.ops[u.ops.length-1],y)){var b=new p(e.rest());return u.concat(b).chop()}}else\"number\"==typeof l.delete&&\"number\"==typeof f.retain&&u.push(l)}return u.chop()},p.prototype.concat=function(t){var e=new p(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},p.prototype.diff=function(t,e){if(this.ops===t.ops)return new p;var r=[this,t].map((function(e){return e.map((function(r){if(null!=r.insert)return\"string\"==typeof r.insert?r.insert:u;throw new Error(\"diff() called \"+(e===t?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new p,s=n(r[0],r[1],e),c=a.iterator(this.ops),f=a.iterator(t.ops);return s.forEach((function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),o.push(f.next(r));break;case n.DELETE:r=Math.min(e,c.peekLength()),c.next(r),o.delete(r);break;case n.EQUAL:r=Math.min(c.peekLength(),f.peekLength(),e);var s=c.next(r),u=f.next(r);i(s.insert,u.insert)?o.retain(r,a.attributes.diff(s.attributes,u.attributes)):o.push(u).delete(r)}e-=r}})),o.chop()},p.prototype.eachLine=function(t,e){e=e||\"\\n\";for(var r=a.iterator(this.ops),o=new p,n=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var i=r.peek(),s=a.length(i)-r.peekLength(),u=\"string\"==typeof i.insert?i.insert.indexOf(e,s)-s:-1;if(u<0)o.push(r.next());else if(u>0)o.push(r.next(u));else{if(!1===t(o,r.next(1).attributes||{},n))return;n+=1,o=new p}}o.length()>0&&t(o,{},n)},p.prototype.transform=function(t,e){if(e=!!e,\"number\"==typeof t)return this.transformPosition(t,e);for(var r=a.iterator(this.ops),o=a.iterator(t.ops),n=new p;r.hasNext()||o.hasNext();)if(\"insert\"!==r.peekType()||!e&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())n.push(o.next());else{var i=Math.min(r.peekLength(),o.peekLength()),s=r.next(i),u=o.next(i);if(s.delete)continue;u.delete?n.push(u):n.retain(i,a.attributes.transform(s.attributes,u.attributes,e))}else n.retain(a.length(r.next()));return n.chop()},p.prototype.transformPosition=function(t,e){e=!!e;for(var r=a.iterator(this.ops),o=0;r.hasNext()&&o<=t;){var n=r.peekLength(),i=r.peekType();r.next(),\"delete\"!==i?(\"insert\"===i&&(o=0;s--)if(v[s]!=S[s])return!1;for(s=v.length-1;s>=0;s--)if(h=v[s],!f(t[h],e[h],r))return!1;return!0}(t,e,h))}function l(t){return null==t}function y(t){return!(!t||\"object\"!==o(t)||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}t.exports=f},function(t,e,r){\"use strict\";var o=Array.prototype.slice,n=r(5),i=Object.keys,s=i?function(t){return i(t)}:r(17),a=Object.keys;s.shim=function(){Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(o.call(t)):a(t)}):Object.keys=s;return Object.keys||s},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.toString;t.exports=function(t){var e=n.call(t),r=\"[object Arguments]\"===e;return r||(r=\"[object Array]\"!==e&&null!==t&&\"object\"===o(t)&&\"number\"==typeof t.length&&t.length>=0&&\"[object Function]\"===n.call(t.callee)),r}},function(t,e,r){\"use strict\";var o=r(1),n=r(21)(\"%Function%\"),i=n.apply,s=n.call;t.exports=function(){return o.apply(s,arguments)},t.exports.apply=function(){return o.apply(i,arguments)}},function(t,e){function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var o;o=function(){return this}();try{o=o||new Function(\"return this\")()}catch(t){\"object\"===(\"undefined\"==typeof window?\"undefined\":r(window))&&(o=window)}t.exports=o},function(t,e,r){\"use strict\";var o=function(t){return t!=t};t.exports=function(t,e){return 0===t&&0===e?1/t==1/e:t===e||!(!o(t)||!o(e))}},function(t,e,r){\"use strict\";var o=r(8);t.exports=function(){return\"function\"==typeof Object.is?Object.is:o}},function(t,e,r){\"use strict\";var o=Object,n=TypeError;t.exports=function(){if(null!=this&&this!==o(this))throw new n(\"RegExp.prototype.flags getter called on non-object\");var t=\"\";return this.global&&(t+=\"g\"),this.ignoreCase&&(t+=\"i\"),this.multiline&&(t+=\"m\"),this.dotAll&&(t+=\"s\"),this.unicode&&(t+=\"u\"),this.sticky&&(t+=\"y\"),t}},function(t,e,r){\"use strict\";var o=r(10),n=r(0).supportsDescriptors,i=Object.getOwnPropertyDescriptor,s=TypeError;t.exports=function(){if(!n)throw new s(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");if(\"gim\"===/a/gim.flags){var t=i(RegExp.prototype,\"flags\");if(t&&\"function\"==typeof t.get&&\"boolean\"==typeof/a/.dotAll)return t.get}return o}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,u=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},p=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,r=n.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||n.call(t,e)},c=function(t,e){s&&\"__proto__\"===e.name?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},f=function(t,e){if(\"__proto__\"===e){if(!n.call(t,e))return;if(a)return a(t,e).value}return t[e]};t.exports=function t(){var e,r,n,i,s,a,l=arguments[0],y=1,h=arguments.length,b=!1;for(\"boolean\"==typeof l&&(b=l,l=arguments[1]||{},y=2),(null==l||\"object\"!==o(l)&&\"function\"!=typeof l)&&(l={});yt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var u=a.pathname.split(\"/\"),f=u[u.length-1];c(f,e.removeDirectoryIndex)&&(u=u.slice(0,u.length-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(var l=0,y=i(a.searchParams.keys());lt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var i=new n.a,s=e.data;o.forEach((function(e){var r=s.split(e),o=r.shift();i.insert(o),i.insert(e,{link:t.normalize(e)}),s=r.join(e)})),i.insert(s),r.ops=i.ops}return r}}))}},{key:\"registerTypeListener\",value:function(){var t=this;this.quill.on(\"text-change\",(function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var o=r[r.length-1];o.insert&&\"string\"==typeof o.insert&&o.insert.match(/\\s/)&&t.checkTextForUrl()}}))}},{key:\"checkTextForUrl\",value:function(){var t=this.quill.getSelection();if(t){var e=a(this.quill.getLeaf(t.index),1)[0];if(e.text&&\"a\"!==e.parent.domNode.localName){var r=e.text.match(this.options.urlRegularExpression);if(r){var o=this.quill.getIndex(e)+r.index;this.textToUrl(o,r[0])}}}}},{key:\"textToUrl\",value:function(t,e){var r=(new n.a).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:\"normalize\",value:function(t){if(this.options.normalizeRegularExpression.test(t))try{return s()(t,this.options.normalizeUrlOptions)}catch(t){console.error(t)}return t}}])&&l(e.prototype,r),o&&l(e,o),t}();window.Quill&&window.Quill.register(\"modules/magicUrl\",h)},function(t,e){function r(t,e,s){if(t==e)return t?[[0,t]]:[];(s<0||t.lengthe.length?t:e,u=t.length>e.length?e:t,p=a.indexOf(u);if(-1!=p)return s=[[1,a.substring(0,p)],[0,u],[1,a.substring(p+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1==u.length)return[[-1,t],[1,e]];var c=function(t,e){var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.length=t.length?[o,s,a,u,f]:null}var a,u,p,c,f,l=s(r,o,Math.ceil(r.length/4)),y=s(r,o,Math.ceil(r.length/2));if(!l&&!y)return null;a=y?l&&l[4].length>y[4].length?l:y:l;t.length>e.length?(u=a[0],p=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],p=a[3]);var h=a[4];return[u,p,c,f,h]}(t,e);if(c){var f=c[0],l=c[1],y=c[2],h=c[3],b=c[4],m=r(f,y),d=r(l,h);return m.concat([[0,b]],d)}return function(t,e){for(var r=t.length,n=e.length,i=Math.ceil((r+n)/2),s=i,a=2*i,u=new Array(a),p=new Array(a),c=0;cr)h+=2;else if(S>n)y+=2;else if(l){if((w=s+f-g)>=0&&w=j)return o(t,e,A,S)}}}for(var O=-d+b;O<=d-m;O+=2){for(var w=s+O,x=(j=O==-d||O!=d&&p[w-1]r)m+=2;else if(x>n)b+=2;else if(!l){if((v=s+f-O)>=0&&v=(j=r-j))return o(t,e,A,S)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-u),e=e.substring(0,e.length-u));return p&&f.unshift([0,p]),c&&f.push([0,c]),function t(e){e.push([0,\"\"]);var r,o=0,s=0,a=0,u=\"\",p=\"\";for(;o1?(0!==s&&0!==a&&(0!==(r=n(p,u))&&(o-s-a>0&&0==e[o-s-a-1][0]?e[o-s-a-1][1]+=p.substring(0,r):(e.splice(0,0,[0,p.substring(0,r)]),o++),p=p.substring(r),u=u.substring(r)),0!==(r=i(p,u))&&(e[o][1]=p.substring(p.length-r)+e[o][1],p=p.substring(0,p.length-r),u=u.substring(0,u.length-r))),0===s?e.splice(o-a,s+a,[1,p]):0===a?e.splice(o-s,s+a,[-1,u]):e.splice(o-s-a,s+a,[-1,u],[1,p]),o=o-s-a+(s?1:0)+(a?1:0)+1):0!==o&&0==e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,a=0,s=0,u=\"\",p=\"\"}\"\"===e[e.length-1][1]&&e.pop();var c=!1;o=1;for(;o0&&o.splice(n+2,0,[s[0],u]),a(o,n,3)}return t}(f,s)),f=function(t){for(var e=!1,r=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},o=2;o=55296&&n.charCodeAt(n.length-1)<=56319)&&-1===t[o-1][0]&&r(t[o-1][1])&&1===t[o][0]&&r(t[o][1])&&(e=!0,t[o-1][1]=t[o-2][1].slice(-1)+t[o-1][1],t[o][1]=t[o-2][1].slice(-1)+t[o][1],t[o-2][1]=t[o-2][1].slice(0,-1));var n;if(!e)return t;var i=[];for(o=0;o0&&i.push(t[o]);return i}(f)}function o(t,e,o,n){var i=t.substring(0,o),s=e.substring(0,n),a=t.substring(o),u=e.substring(n),p=r(i,s),c=r(a,u);return p.concat(c)}function n(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,o=Math.min(t.length,e.length),n=o,i=0;r=0&&o>=e-1;o--)if(o+10&&!i.call(t,0))for(var m=0;m0)for(var d=0;d=0&&\"[object Array]\"!==i.call(t)&&\"[object Function]\"===i.call(t.callee)},u=function(){return s(arguments)}();s.isLegacyArguments=a,t.exports=u?s:a},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(8),s=r(9),a=r(24),u=n(s(),Object);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=\"Function.prototype.bind called on incompatible \",n=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if(\"function\"!=typeof e||\"[object Function]\"!==i.call(e))throw new TypeError(o+e);for(var r,s=n.call(arguments,1),a=function(){if(this instanceof r){var o=e.apply(this,s.concat(n.call(arguments)));return Object(o)===o?o:this}return e.apply(t,s.concat(n.call(arguments)))},u=Math.max(0,e.length-s.length),p=[],c=0;c1&&\"boolean\"!=typeof e)throw new TypeError('\"allowMissing\" argument must be a boolean');for(var r=m(t),o=d(\"%\"+(r.length>0?r[0]:\"\")+\"%\",e),s=1;s=r.length){var a=i(o,r[s]);if(!e&&!(r[s]in o))throw new n(\"base intrinsic for \"+t+\" exists, but the property is not available.\");o=a?a.get||a.value:o[r[s]]}else o=o[r[s]];return o}},function(t,e,r){\"use strict\";(function(e){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=e.Symbol,i=r(23);t.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"===o(n(\"foo\"))&&(\"symbol\"===o(Symbol(\"bar\"))&&i())))}}).call(this,r(7))},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"===o(Symbol.iterator))return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){\"use strict\";var o=r(9),n=r(0);t.exports=function(){var t=o();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(26),i=RegExp.prototype.exec,s=Object.getOwnPropertyDescriptor,a=Object.prototype.toString,u=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){if(!t||\"object\"!==o(t))return!1;if(!u)return\"[object RegExp]\"===a.call(t);var e=s(t,\"lastIndex\");return!(!e||!n(e,\"value\"))&&function(t){try{var e=t.lastIndex;return t.lastIndex=0,i.call(t),!0}catch(t){return!1}finally{t.lastIndex=e}}(t)}},function(t,e,r){\"use strict\";var o=r(1);t.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(10),s=r(11),a=r(28),u=n(i);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=r(0).supportsDescriptors,n=r(11),i=Object.getOwnPropertyDescriptor,s=Object.defineProperty,a=TypeError,u=Object.getPrototypeOf,p=/a/;t.exports=function(){if(!o||!u)throw new a(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");var t=n(),e=u(p),r=i(e,\"flags\");return r&&r.get===t||s(e,\"flags\",{configurable:!0,enumerable:!1,get:t}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Date.prototype.getDay,i=Object.prototype.toString,s=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){return\"object\"===o(t)&&null!==t&&(s?function(t){try{return n.call(t),!0}catch(t){return!1}}(t):\"[object Date]\"===i.call(t))}},function(t,e,r){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(3),i=r(12),s={attributes:{compose:function(t,e,r){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var n=i(!0,{},e);for(var s in r||(n=Object.keys(n).reduce((function(t,e){return null!=n[e]&&(t[e]=n[e]),t}),{})),t)void 0!==t[s]&&void 0===e[s]&&(n[s]=t[s]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce((function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r}),{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if(\"object\"!==o(t))return e;if(\"object\"===o(e)){if(!r)return e;var n=Object.keys(e).reduce((function(r,o){return void 0===t[o]&&(r[o]=e[o]),r}),{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new a(t)},length:function(t){return\"number\"==typeof t.delete?t.delete:\"number\"==typeof t.retain?t.retain:\"string\"==typeof t.insert?t.insert.length:1}};function a(t){this.ops=t,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,o=s.length(e);if(t>=o-r?(t=o-r,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var n={};return e.attributes&&(n.attributes=e.attributes),\"number\"==typeof e.retain?n.retain=t:\"string\"==typeof e.insert?n.insert=e.insert.substr(r,t):n.insert=e.insert,n}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?s.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,r=this.next(),o=this.ops.slice(this.index);return this.offset=t,this.index=e,[r].concat(o)}return[]},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(32),i=r(34);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=S,e.resolve=function(t,e){return S(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?S(t,!1,!0).resolveObject(e):e},e.format=function(t){i.isString(t)&&(t=S(t));return t instanceof s?t.format():s.prototype.format.call(t)},e.Url=s;var a=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,p=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,c=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),f=[\"'\"].concat(c),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(f),y=[\"/\",\"?\",\"#\"],h=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,\"javascript:\":!0},d={javascript:!0,\"javascript:\":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},v=r(35);function S(t,e,r){if(t&&i.isObject(t)&&t instanceof s)return t;var o=new s;return o.parse(t,e,r),o}s.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError(\"Parameter 'url' must be a string, not \"+o(t));var s=t.indexOf(\"?\"),u=-1!==s&&s127?F+=\"x\":F+=C[D];if(!F.match(h)){var N=R.slice(0,I),$=R.slice(I+1),L=C.match(b);L&&(N.push(L[1]),$.unshift(L[2])),$.length&&(S=\"/\"+$.join(\".\")+S),this.hostname=N.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),U||(this.hostname=n.toASCII(this.hostname));var _=this.port?\":\"+this.port:\"\",q=this.hostname||\"\";this.host=q+_,this.href+=this.host,U&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==S[0]&&(S=\"/\"+S))}if(!m[w])for(I=0,T=f.length;I0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift());return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!w.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var A=w.slice(-1)[0],P=(r.host||t.host||w.length>1)&&(\".\"===A||\"..\"===A)||\"\"===A,E=0,I=w.length;I>=0;I--)\".\"===(A=w[I])?w.splice(I,1):\"..\"===A?(w.splice(I,1),E++):E&&(w.splice(I,1),E--);if(!j&&!O)for(;E--;E)w.unshift(\"..\");!j||\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0)||w.unshift(\"\"),P&&\"/\"!==w.join(\"/\").substr(-1)&&w.push(\"\");var k,U=\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0);x&&(r.hostname=r.host=U?\"\":w.length?w.shift():\"\",(k=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift()));return(j=j||r.host&&w.length)&&!U&&w.unshift(\"\"),w.length?r.pathname=w.join(\"/\"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},s.prototype.parseHost=function(){var t=this.host,e=u.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){(function(t,o){var n;function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}\n/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){var a=\"object\"==i(e)&&e&&!e.nodeType&&e,u=\"object\"==i(t)&&t&&!t.nodeType&&t,p=\"object\"==(void 0===o?\"undefined\":i(o))&&o;p.global!==p&&p.window!==p&&p.self!==p||(s=p);var c,f,l=2147483647,y=/^xn--/,h=/[^\\x20-\\x7E]/,b=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,m={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,g=String.fromCharCode;function v(t){throw new RangeError(m[t])}function S(t,e){for(var r=t.length,o=[];r--;)o[r]=e(t[r]);return o}function j(t,e){var r=t.split(\"@\"),o=\"\";return r.length>1&&(o=r[0]+\"@\",t=r[1]),o+S((t=t.replace(b,\".\")).split(\".\"),e).join(\".\")}function O(t){for(var e,r,o=[],n=0,i=t.length;n=55296&&e<=56319&&n65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join(\"\")}function x(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var o=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;o+=36)t=d(t/35);return d(o+36*t/(t+38))}function P(t){var e,r,o,n,i,s,a,u,p,c,f,y=[],h=t.length,b=0,m=128,g=72;for((r=t.lastIndexOf(\"-\"))<0&&(r=0),o=0;o=128&&v(\"not-basic\"),y.push(t.charCodeAt(o));for(n=r>0?r+1:0;n=h&&v(\"invalid-input\"),((u=(f=t.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:36)>=36||u>d((l-b)/s))&&v(\"overflow\"),b+=u*s,!(u<(p=a<=g?1:a>=g+26?26:a-g));a+=36)s>d(l/(c=36-p))&&v(\"overflow\"),s*=c;g=A(b-i,e=y.length+1,0==i),d(b/e)>l-m&&v(\"overflow\"),m+=d(b/e),b%=e,y.splice(b++,0,m)}return w(y)}function E(t){var e,r,o,n,i,s,a,u,p,c,f,y,h,b,m,S=[];for(y=(t=O(t)).length,e=128,r=0,i=72,s=0;s=e&&fd((l-r)/(h=o+1))&&v(\"overflow\"),r+=(a-e)*h,e=a,s=0;sl&&v(\"overflow\"),f==e){for(u=r,p=36;!(u<(c=p<=i?1:p>=i+26?26:p-i));p+=36)m=u-c,b=36-c,S.push(g(x(c+m%b,0))),u=d(m/b);S.push(g(x(u,0))),i=A(r,h,o==n),r=0,++o}++r,++e}return S.join(\"\")}if(c={version:\"1.4.1\",ucs2:{decode:O,encode:w},decode:P,encode:E,toASCII:function(t){return j(t,(function(t){return h.test(t)?\"xn--\"+E(t):t}))},toUnicode:function(t){return j(t,(function(t){return y.test(t)?P(t.slice(4).toLowerCase()):t}))}},\"object\"==i(r(13))&&r(13))void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n);else if(a&&u)if(t.exports==a)u.exports=c;else for(f in c)c.hasOwnProperty(f)&&(a[f]=c[f]);else s.punycode=c}(this)}).call(this,r(33)(t),r(7))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports={isString:function(t){return\"string\"==typeof t},isObject:function(t){return\"object\"===o(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,r){\"use strict\";e.decode=e.parse=r(36),e.encode=e.stringify=r(37)},function(t,e,r){\"use strict\";function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||\"&\",r=r||\"=\";var s={};if(\"string\"!=typeof t||0===t.length)return s;var a=/\\+/g;t=t.split(e);var u=1e3;i&&\"number\"==typeof i.maxKeys&&(u=i.maxKeys);var p=t.length;u>0&&p>u&&(p=u);for(var c=0;c=0?(f=b.substr(0,m),l=b.substr(m+1)):(f=b,l=\"\"),y=decodeURIComponent(f),h=decodeURIComponent(l),o(s,y)?n(s[y])?s[y].push(h):s[y]=[s[y],h]:s[y]=h}return s};var n=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=function(t){switch(o(t)){case\"string\":return t;case\"boolean\":return t?\"true\":\"false\";case\"number\":return isFinite(t)?t:\"\";default:return\"\"}};t.exports=function(t,e,r,u){return e=e||\"&\",r=r||\"=\",null===t&&(t=void 0),\"object\"===o(t)?s(a(t),(function(o){var a=encodeURIComponent(n(o))+r;return i(t[o])?s(t[o],(function(t){return a+encodeURIComponent(n(t))})).join(e):a+encodeURIComponent(n(t[o]))})).join(e):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(t)):\"\"};var i=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function s(t,e){if(t.map)return t.map(e);for(var r=[],o=0;o\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set} set\n * @return {Array}\n */\nexport const toArray = set => Array.from(set)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {Array} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array}\n */\nexport const create = () => /** @type {Array} */ ([])\n\n/**\n * @template D\n * @param {Array} a\n * @return {Array}\n */\nexport const copy = a => /** @type {Array} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array} dest\n * @param {Array} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike|Iterable} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n *\n * @param {Array} arr\n * @param {function(ITEM, number, Array):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => arr.every(f)\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @param {Array} arr\n * @param {function(S, number, Array):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => arr.some(f)\n\n/**\n * @template ELEM\n *\n * @param {Array} a\n * @param {Array} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n *\n * @template N\n */\nexport class Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map}\n */\n this._observers = map.create()\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, name, set.create).add(f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, f)\n f(...args)\n }\n this.on(name, _f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n","/**\n * Isomorphic library exports from isomorphic.js.\n *\n * @module isomorphic\n */\n\n// @ts-ignore\nimport iso from 'isomorphic.js'\n\nexport const performance = /** @type {any} */ (iso.performance)\nexport const cryptoRandomBuffer = /** @type {any} */ (iso.cryptoRandomBuffer)\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* istanbul ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object} obj\n */\nexport const keys = Object.keys\n\n/**\n * @param {Object} obj\n * @param {function(any,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @template R\n * @param {Object} obj\n * @param {function(any,string):R} f\n * @return {Array}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @param {Object} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object} a\n * @param {Object} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array} fs\n * @param {Array} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array|object} a\n * @param {Array|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((a instanceof Array && array.equalFlat(a, /** @type {Array} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array>} arr\n * @param {function(L, R):X} f\n * @return {Array}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* istanbul ignore next */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const createTextNode = text => doc.createTextNode(text)\n\n/* istanbul ignore next */\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\n/* istanbul ignore next */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array|HTMLCollection} children\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array} nodes\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\n/* istanbul ignore next */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array|pair.Pair>} attrs Array of key-value pairs\n * @param {Array} children\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\n/* istanbul ignore next */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair} pair\n */\n/* istanbul ignore next */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array>} pairs\n * @return {string}\n */\n/* istanbul ignore next */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map} m\n * @return {string}\n */\n/* istanbul ignore next */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\n/* istanbul ignore next */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf}\n */\n/* istanbul ignore next */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nconst _parse = html => domParser.parseFromString(`${html}`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\n/* istanbul ignore next */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* istanbul ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/* istanbul ignore next */\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* istanbul ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/* istanbul ignore next */\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* istanbul ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as symbol from './symbol.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as time from './time.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/**\n * @type {Object>}\n */\nconst _browserStyleMap = {\n [BOLD]: pair.create('font-weight', 'bold'),\n [UNBOLD]: pair.create('font-weight', 'normal'),\n [BLUE]: pair.create('color', 'blue'),\n [GREEN]: pair.create('color', 'green'),\n [GREY]: pair.create('color', 'grey'),\n [RED]: pair.create('color', 'red'),\n [PURPLE]: pair.create('color', 'purple'),\n [ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [UNCOLOR]: pair.create('color', 'black')\n}\n\nconst _nodeStyleMap = {\n [BOLD]: '\\u001b[1m',\n [UNBOLD]: '\\u001b[2m',\n [BLUE]: '\\x1b[34m',\n [GREEN]: '\\x1b[32m',\n [GREY]: '\\u001b[37m',\n [RED]: '\\x1b[31m',\n [PURPLE]: '\\x1b[35m',\n [ORANGE]: '\\x1b[38;5;208m',\n [UNCOLOR]: '\\x1b[0m'\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeBrowserLoggingArgs = args => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeNodeLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n /* istanbul ignore else */\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/* istanbul ignore next */\nconst computeLoggingArgs = env.isNode ? computeNodeLoggingArgs : computeBrowserLoggingArgs\n\n/**\n * @param {Array} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(ORANGE)\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Error} err\n */\nexport const printError = err => {\n console.error(err)\n vconsoles.forEach(vc => vc.printError(err))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log('%c ', `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`)\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach(vc => vc.printImg(url, height))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} base64\n * @param {number} height\n */\nexport const printImgBase64 = (base64, height) => printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.group(args))\n}\n\n/**\n * @param {Array} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupEnd())\n}\n\n/* istanbul ignore next */\n/**\n * @param {function():Node} createNode\n */\nexport const printDom = createNode =>\n vconsoles.forEach(vc => vc.printDom(createNode()))\n\n/* istanbul ignore next */\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\nexport const printCanvas = (canvas, height) => printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = new Set()\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst _computeLineSpans = args => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [pair.create('style', dom.mapToStyleString(currentStyle))], [dom.text(arg)])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(dom.element('span', [], [dom.text(/** @type {string} */ (content))]))\n }\n }\n return spans\n}\n\nconst lineStyle = 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* istanbul ignore next */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [pair.create('hidden', collapsed), pair.create('style', 'color:grey;font-size:120%;')], [dom.text('▼')])\n const triangleRight = dom.element('span', [pair.create('hidden', !collapsed), pair.create('style', 'color:grey;font-size:125%;')], [dom.text('▶')])\n const content = dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], [triangleDown, triangleRight, dom.text(' ')].concat(_computeLineSpans(args)))\n const nextContainer = dom.element('div', [pair.create('hidden', collapsed)])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', event => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], _computeLineSpans(args))])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([RED, BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('img', [pair.create('src', url), pair.create('height', `${math.round(height * 1.5)}px`)])])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n\n/* istanbul ignore next */\n/**\n * @param {Element} dom\n */\nexport const createVConsole = dom => new VConsole(dom)\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/**\n * @param {string} moduleName\n * @return {function(...any)}\n */\nexport const createModuleLogger = moduleName => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null && (debugRegexVar === '*' || debugRegexVar === 'true' || new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n\n return !doLogging ? func.nop : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n print(color, moduleName, UNCOLOR, ...args.map(arg => (typeof arg === 'string' || typeof arg === 'symbol') ? arg : JSON.stringify(arg)), color, ' +' + timeDiff + 'ms')\n }\n}\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator} iterator\n * @param {function(T):R} f\n * @return {IterableIterator}\n */\nexport const mapIterator = (iterator, f) => ({\n /**\n * @param {function(T):R} f\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult} next\n * @return {IterableIterator}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","import { Observable } from 'lib0/observable.js';\nimport { appendTo, last } from 'lib0/array.js';\nimport { floor, min, max, abs } from 'lib0/math.js';\nimport { setIfUndefined, any, create as create$2, copy } from 'lib0/map.js';\nimport { writeVarUint, Encoder, toUint8Array, IntDiffOptRleEncoder, UintOptRleEncoder, RleEncoder, writeUint8, StringEncoder, createEncoder, writeVarUint8Array, writeUint8Array, writeAny, writeVarString } from 'lib0/encoding.js';\nimport { readVarUint, createDecoder, readUint8, IntDiffOptRleDecoder, readVarUint8Array, UintOptRleDecoder, RleDecoder, StringDecoder, readAny, readVarString } from 'lib0/decoding.js';\nimport { uint32 } from 'lib0/random.js';\nimport { copyUint8Array } from 'lib0/buffer.js';\nimport { unexpectedCase, methodUnimplemented, create as create$1 } from 'lib0/error.js';\nimport { BITS5, BIT8, BIT7, BIT6, BIT2, BIT4, BIT1, BIT3 } from 'lib0/binary.js';\nimport { callAll } from 'lib0/function.js';\nimport { create } from 'lib0/set.js';\nimport { print, ORANGE, BOLD, UNBOLD, RED } from 'lib0/logging.js';\nimport { getUnixTime } from 'lib0/time.js';\nimport { iteratorFilter, iteratorMap } from 'lib0/iterator.js';\nimport { equalFlat } from 'lib0/object.js';\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {Observable}\n */\nclass AbstractConnector extends Observable {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super();\n this.doc = ydoc;\n this.awareness = awareness;\n }\n}\n\nclass DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock;\n /**\n * @type {number}\n */\n this.len = len;\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nclass DeleteSet {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(clientid));\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i];\n iterateStructs(transaction, structs, del.clock, del.len, f);\n }\n });\n\n/**\n * @param {Array} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nconst findIndexDS = (dis, clock) => {\n let left = 0;\n let right = dis.length - 1;\n while (left <= right) {\n const midindex = floor((left + right) / 2);\n const mid = dis[midindex];\n const midclock = mid.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client);\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n};\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock);\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j;\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1];\n const right = dels[i];\n if (left.clock + left.len === right.clock) {\n left.len += right.len;\n } else {\n if (j < i) {\n dels[j] = right;\n }\n j++;\n }\n }\n dels.length = j;\n });\n};\n\n/**\n * @param {Array} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nconst mergeDeleteSets = dss => {\n const merged = new DeleteSet();\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array}\n */\n const dels = delsLeft.slice();\n for (let i = dssI + 1; i < dss.length; i++) {\n appendTo(dels, dss[i].clients.get(client) || []);\n }\n merged.clients.set(client, dels);\n }\n });\n }\n sortAndMergeDeleteSet(merged);\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nconst addToDeleteSet = (ds, client, clock, length) => {\n setIfUndefined(ds.clients, client, () => []).push(new DeleteItem(clock, length));\n};\n\nconst createDeleteSet = () => new DeleteSet();\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nconst createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet();\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array}\n */\n const dsitems = [];\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i];\n if (struct.deleted) {\n const clock = struct.id.clock;\n let len = struct.length;\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.id.clock === clock + len && next.deleted; next = structs[++i + 1]) {\n len += next.length;\n }\n }\n dsitems.push(new DeleteItem(clock, len));\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems);\n }\n });\n return ds\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst writeDeleteSet = (encoder, ds) => {\n writeVarUint(encoder.restEncoder, ds.clients.size);\n ds.clients.forEach((dsitems, client) => {\n encoder.resetDsCurVal();\n writeVarUint(encoder.restEncoder, client);\n const len = dsitems.length;\n writeVarUint(encoder.restEncoder, len);\n for (let i = 0; i < len; i++) {\n const item = dsitems[i];\n encoder.writeDsClock(item.clock);\n encoder.writeDsLen(item.len);\n }\n });\n};\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nconst readDeleteSet = decoder => {\n const ds = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n if (numberOfDeletes > 0) {\n const dsField = setIfUndefined(ds.clients, client, () => []);\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));\n }\n }\n }\n return ds\n};\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n const structs = store.clients.get(client) || [];\n const state = getState(store, client);\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock();\n const clockEnd = clock + decoder.readDsLen();\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state);\n }\n let index = findIndexSS(structs, clock);\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index];\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n index++; // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++];\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock));\n }\n struct.delete(transaction);\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock);\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n // TODO: no need for encoding+decoding ds anymore\n const unappliedDSEncoder = new DSEncoderV2();\n writeDeleteSet(unappliedDSEncoder, unappliedDS);\n store.pendingDeleteReaders.push(new DSDecoderV2(createDecoder((unappliedDSEncoder.toUint8Array()))));\n }\n};\n\n/**\n * @module Y\n */\n\nconst generateNewClientId = uint32;\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends Observable\n */\nclass Doc extends Observable {\n /**\n * @param {Object} conf configuration\n * @param {boolean} [conf.gc] Disable garbage collection (default: gc=true)\n * @param {function(Item):boolean} [conf.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n */\n constructor ({ gc = true, gcFilter = () => true } = {}) {\n super();\n this.gc = gc;\n this.gcFilter = gcFilter;\n this.clientID = generateNewClientId();\n /**\n * @type {Map>}\n */\n this.share = new Map();\n this.store = new StructStore();\n /**\n * @type {Transaction | null}\n */\n this._transaction = null;\n /**\n * @type {Array}\n */\n this._transactionCleanups = [];\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @param {function(Transaction):void} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n *\n * @public\n */\n transact (f, origin = null) {\n transact(this, f, origin);\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `y.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `y.define(name, Y.Array) === y.define(name, Y.Array)`\n *\n * After this method is called, the type is also available on `y.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Yjs instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @example\n * const y = new Y(..)\n * const appState = {\n * document: y.getText('document')\n * comments: y.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Function} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {AbstractType} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = AbstractType) {\n const type = setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor();\n t._integrate(this, null);\n return t\n });\n const Constr = type.constructor;\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor();\n t._map = type._map;\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t;\n }\n });\n t._start = type._start;\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t;\n }\n t._length = type._length;\n this.share.set(name, t);\n t._integrate(this, null);\n return t\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return type\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray}\n *\n * @public\n */\n getArray (name = '') {\n // @ts-ignore\n return this.get(name, YArray)\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n // @ts-ignore\n return this.get(name, YText)\n }\n\n /**\n * @param {string} [name]\n * @return {YMap}\n *\n * @public\n */\n getMap (name = '') {\n // @ts-ignore\n return this.get(name, YMap)\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n // @ts-ignore\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const doc = {};\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON();\n });\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n this.emit('destroyed', [true]);\n super.destroy();\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n on (eventName, f) {\n super.on(eventName, f);\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n off (eventName, f) {\n super.off(eventName, f);\n }\n}\n\nclass DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return readVarUint(this.restDecoder)\n }\n}\n\nclass UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return copyUint8Array(readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return readVarString(this.restDecoder)\n }\n}\n\nclass DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.dsCurrVal = 0;\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n readDsClock () {\n this.dsCurrVal += readVarUint(this.restDecoder);\n return this.dsCurrVal\n }\n\n readDsLen () {\n const diff = readVarUint(this.restDecoder) + 1;\n this.dsCurrVal += diff;\n return diff\n }\n}\n\nclass UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder);\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array}\n */\n this.keys = [];\n readUint8(decoder); // read feature flag - currently unused\n this.keyClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.clientDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.leftClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.rightClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.infoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.stringDecoder = new StringDecoder(readVarUint8Array(decoder));\n this.parentInfoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.typeRefDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.lenDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read();\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read();\n this.keys.push(key);\n return key\n }\n }\n}\n\nclass DSEncoderV1 {\n constructor () {\n this.restEncoder = new Encoder();\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n writeVarUint(this.restEncoder, clock);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n}\n\nclass UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n writeVarUint(this.restEncoder, client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n writeUint8(this.restEncoder, info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n writeVarString(this.restEncoder, s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n writeVarUint(this.restEncoder, isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n writeVarUint(this.restEncoder, info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n writeVarString(this.restEncoder, JSON.stringify(embed));\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n writeVarString(this.restEncoder, key);\n }\n}\n\nclass DSEncoderV2 {\n constructor () {\n this.restEncoder = new Encoder(); // encodes all the rest / non-optimized\n this.dsCurrVal = 0;\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal;\n this.dsCurrVal = clock;\n writeVarUint(this.restEncoder, diff);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n unexpectedCase();\n }\n writeVarUint(this.restEncoder, len - 1);\n this.dsCurrVal += len;\n }\n}\n\nclass UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super();\n /**\n * @type {Map}\n */\n this.keyMap = new Map();\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0;\n this.keyClockEncoder = new IntDiffOptRleEncoder();\n this.clientEncoder = new UintOptRleEncoder();\n this.leftClockEncoder = new IntDiffOptRleEncoder();\n this.rightClockEncoder = new IntDiffOptRleEncoder();\n this.infoEncoder = new RleEncoder(writeUint8);\n this.stringEncoder = new StringEncoder();\n this.parentInfoEncoder = new RleEncoder(writeUint8);\n this.typeRefEncoder = new UintOptRleEncoder();\n this.lenEncoder = new UintOptRleEncoder();\n }\n\n toUint8Array () {\n const encoder = createEncoder();\n writeUint8(encoder, 0); // this is a feature flag that we might use in the future\n writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.clientEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.infoEncoder));\n writeVarUint8Array(encoder, this.stringEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.parentInfoEncoder));\n writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.lenEncoder.toUint8Array());\n // @note The rest encoder is appended! (note the missing var)\n writeUint8Array(encoder, toUint8Array(this.restEncoder));\n return toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client);\n this.leftClockEncoder.write(id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client);\n this.rightClockEncoder.write(id.clock);\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n writeAny(this.restEncoder, embed);\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key);\n if (clock === undefined) {\n this.keyClockEncoder.write(this.keyClock++);\n this.stringEncoder.write(key);\n } else {\n this.keyClockEncoder.write(this.keyClock++);\n }\n }\n}\n\nlet DefaultDSEncoder = DSEncoderV1;\nlet DefaultDSDecoder = DSDecoderV1;\nlet DefaultUpdateEncoder = UpdateEncoderV1;\nlet DefaultUpdateDecoder = UpdateDecoderV1;\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Array} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n const startNewStructs = findIndexSS(structs, clock);\n // write # encoded structs\n writeVarUint(encoder.restEncoder, structs.length - startNewStructs);\n encoder.writeClient(client);\n writeVarUint(encoder.restEncoder, clock);\n const firstStruct = structs[startNewStructs];\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock);\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {StructStore} store\n * @param {Map} _sm\n *\n * @private\n * @function\n */\nconst writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map();\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock);\n }\n });\n getStateVector(store).forEach((clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0);\n }\n });\n // write # states that were updated\n writeVarUint(encoder.restEncoder, sm.size);\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n Array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n // @ts-ignore\n writeStructs(encoder, store.clients.get(client), client, clock);\n });\n};\n\n/**\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Map>} clientRefs\n * @param {Doc} doc\n * @return {Map>}\n *\n * @private\n * @function\n */\nconst readClientsStructRefs = (decoder, clientRefs, doc) => {\n const numOfStateUpdates = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = readVarUint(decoder.restDecoder);\n /**\n * @type {Array}\n */\n const refs = new Array(numberOfStructs);\n const client = decoder.readClient();\n let clock = readVarUint(decoder.restDecoder);\n // const start = performance.now()\n clientRefs.set(client, refs);\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n if ((BITS5 & info) !== 0) {\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (BIT7 | BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n (info & BIT8) === BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & BIT7) === BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & BIT6) === BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct;\n clock += struct.length;\n } else {\n const len = decoder.readLen();\n refs[i] = new GC(createID(client, clock), len);\n clock += len;\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n};\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst resumeStructIntegration = (transaction, store) => {\n const stack = store.pendingStack; // @todo don't forget to append stackhead at the end\n const clientsStructRefs = store.pendingClientsStructRefs;\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n const clientsStructRefsIds = Array.from(clientsStructRefs.keys()).sort((a, b) => a - b);\n if (clientsStructRefsIds.length === 0) {\n return\n }\n const getNextStructTarget = () => {\n let nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop();\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n } else {\n store.pendingClientsStructRefs.clear();\n return null\n }\n }\n return nextStructsTarget\n };\n let curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null && stack.length === 0) {\n return\n }\n /**\n * @type {GC|Item}\n */\n let stackHead = stack.length > 0\n ? /** @type {GC|Item} */ (stack.pop())\n : /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++];\n // caching the state because it is used very often\n const state = new Map();\n // iterate over all struct readers until we are done\n while (true) {\n const localClock = setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client));\n const offset = stackHead.id.clock < localClock ? localClock - stackHead.id.clock : 0;\n if (stackHead.id.clock + offset !== localClock) {\n // A previous message from this client is missing\n // check if there is a pending structRef with a smaller clock and switch them\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(stackHead.id.client) || { refs: [], i: 0 };\n if (structRefs.refs.length !== structRefs.i) {\n const r = structRefs.refs[structRefs.i];\n if (r.id.clock < stackHead.id.clock) {\n // put ref with smaller clock on stack instead and continue\n structRefs.refs[structRefs.i] = stackHead;\n stackHead = r;\n // sort the set because this approach might bring the list out of order\n structRefs.refs = structRefs.refs.slice(structRefs.i).sort((r1, r2) => r1.id.clock - r2.id.clock);\n structRefs.i = 0;\n continue\n }\n }\n // wait until missing struct is available\n stack.push(stackHead);\n return\n }\n const missing = stackHead.getMissing(transaction, store);\n if (missing === null) {\n if (offset === 0 || offset < stackHead.length) {\n stackHead.integrate(transaction, offset);\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length);\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop());\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n } else {\n curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n }\n }\n } else {\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(missing) || { refs: [], i: 0 };\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message.\n stack.push(stackHead);\n return\n }\n stack.push(stackHead);\n stackHead = structRefs.refs[structRefs.i++];\n }\n }\n store.pendingClientsStructRefs.clear();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst tryResumePendingDeleteReaders = (transaction, store) => {\n const pendingReaders = store.pendingDeleteReaders;\n store.pendingDeleteReaders = [];\n for (let i = 0; i < pendingReaders.length; i++) {\n readAndApplyDeleteSet(pendingReaders[i], transaction, store);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nconst writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState);\n\n/**\n * @param {StructStore} store\n * @param {Map>} clientsStructsRefs\n *\n * @private\n * @function\n */\nconst mergeReadStructsIntoPendingReads = (store, clientsStructsRefs) => {\n const pendingClientsStructRefs = store.pendingClientsStructRefs;\n clientsStructsRefs.forEach((structRefs, client) => {\n const pendingStructRefs = pendingClientsStructRefs.get(client);\n if (pendingStructRefs === undefined) {\n pendingClientsStructRefs.set(client, { refs: structRefs, i: 0 });\n } else {\n // merge into existing structRefs\n const merged = pendingStructRefs.i > 0 ? pendingStructRefs.refs.slice(pendingStructRefs.i) : pendingStructRefs.refs;\n for (let i = 0; i < structRefs.length; i++) {\n merged.push(structRefs[i]);\n }\n pendingStructRefs.i = 0;\n pendingStructRefs.refs = merged.sort((r1, r2) => r1.id.clock - r2.id.clock);\n }\n });\n};\n\n/**\n * @param {Map,i:number}>} pendingClientsStructRefs\n */\nconst cleanupPendingStructs = pendingClientsStructRefs => {\n // cleanup pendingClientsStructs if not fully finished\n pendingClientsStructRefs.forEach((refs, client) => {\n if (refs.i === refs.refs.length) {\n pendingClientsStructRefs.delete(client);\n } else {\n refs.refs.splice(0, refs.i);\n refs.i = 0;\n }\n });\n};\n\n/**\n * Read the next Item in a Decoder and fill this Item with the read data.\n *\n * This is called when data is received from a remote peer.\n *\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readStructs = (decoder, transaction, store) => {\n const clientsStructRefs = new Map();\n // let start = performance.now()\n readClientsStructRefs(decoder, clientsStructRefs, transaction.doc);\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n mergeReadStructsIntoPendingReads(store, clientsStructRefs);\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n resumeStructIntegration(transaction, store);\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n cleanupPendingStructs(store.pendingClientsStructRefs);\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n tryResumePendingDeleteReaders(transaction, store);\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n};\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {AbstractUpdateDecoder} [structDecoder]\n *\n * @function\n */\nconst readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n readStructs(structDecoder, transaction, ydoc.store);\n readAndApplyDeleteSet(structDecoder, transaction, ydoc.store);\n }, transactionOrigin, false);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new DefaultUpdateDecoder(decoder));\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nconst applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = createDecoder(update);\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder));\n};\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, DefaultUpdateDecoder);\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {AbstractUpdateEncoder} encoder\n * @param {Doc} doc\n * @param {Map} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nconst writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector);\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store));\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {AbstractUpdateEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdateV2 = (doc, encodedTargetStateVector, encoder = new UpdateEncoderV2()) => {\n const targetStateVector = encodedTargetStateVector == null ? new Map() : decodeStateVector(encodedTargetStateVector);\n writeStateAsUpdate(encoder, doc, targetStateVector);\n return encoder.toUint8Array()\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new DefaultUpdateEncoder());\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {AbstractDSDecoder} decoder\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst readStateVector = decoder => {\n const ss = new Map();\n const ssLength = readVarUint(decoder.restDecoder);\n for (let i = 0; i < ssLength; i++) {\n const client = readVarUint(decoder.restDecoder);\n const clock = readVarUint(decoder.restDecoder);\n ss.set(client, clock);\n }\n return ss\n};\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(createDecoder(decodedState)));\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVector = decodedState => readStateVector(new DefaultDSDecoder(createDecoder(decodedState)));\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Map} sv\n * @function\n */\nconst writeStateVector = (encoder, sv) => {\n writeVarUint(encoder.restEncoder, sv.size);\n sv.forEach((clock, client) => {\n writeVarUint(encoder.restEncoder, client); // @todo use a special client decoder that is based on mapping\n writeVarUint(encoder.restEncoder, clock);\n });\n return encoder\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Doc} doc\n *\n * @function\n */\nconst writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store));\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n writeDocumentStateVector(encoder, doc);\n return encoder.toUint8Array()\n};\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVector = doc => encodeStateVectorV2(doc, new DefaultDSEncoder());\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nclass EventHandler {\n constructor () {\n /**\n * @type {Array}\n */\n this.l = [];\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler}\n *\n * @private\n * @function\n */\nconst createEventHandler = () => new EventHandler();\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nconst addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f);\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nconst removeEventHandlerListener = (eventHandler, f) => {\n eventHandler.l = eventHandler.l.filter(g => f !== g);\n};\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nconst callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n callAll(eventHandler.l, [arg0, arg1]);\n\nclass ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client;\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock;\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock);\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nconst createID = (client, clock) => new ID(client, clock);\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nconst writeID = (encoder, id) => {\n writeVarUint(encoder, id.client);\n writeVarUint(encoder, id.clock);\n};\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nconst readID = decoder =>\n createID(readVarUint(decoder), readVarUint(decoder));\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType} type\n * @return {string}\n *\n * @private\n * @function\n */\nconst findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw unexpectedCase()\n};\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nconst isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType} */ (child.parent)._item;\n }\n return false\n};\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType} type\n */\nconst logType = type => {\n const res = [];\n let n = type._start;\n while (n) {\n res.push(n);\n n = n.right;\n }\n console.log('Children: ', res);\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content));\n};\n\nclass PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map}\n */\n const dss = new Map();\n this.yusers = storeType;\n this.doc = doc;\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map}\n */\n this.clients = new Map();\n this.dss = dss;\n /**\n * @param {YMap} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray}\n */\n const ds = user.get('ds');\n const ids = user.get('ids');\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription);\n ds.observe(/** @param {YArrayEvent} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(createDecoder(encodedDs)))]));\n }\n });\n });\n });\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(encodedDs)))));\n ids.observe(/** @param {YArrayEvent} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n );\n ids.forEach(addClientId);\n };\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n );\n });\n // add intial data\n storeType.forEach(initUser);\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} [conf]\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers;\n let user = users.get(userDescription);\n if (!user) {\n user = new YMap();\n user.set('ids', new YArray());\n user.set('ds', new YArray());\n users.set(userDescription, user);\n }\n user.get('ids').push([clientid]);\n users.observe(event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription);\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite;\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid]);\n }\n });\n const encoder = new DSEncoderV1();\n const ds = this.dss.get(userDescription);\n if (ds) {\n writeDeleteSet(encoder, ds);\n user.get('ds').push([encoder.toUint8Array()]);\n }\n }\n }, 0);\n });\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds');\n const ds = transaction.deleteSet;\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1();\n writeDeleteSet(encoder, ds);\n yds.push([encoder.toUint8Array()]);\n }\n });\n });\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nclass RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n */\n constructor (type, tname, item) {\n /**\n * @type {ID|null}\n */\n this.type = type;\n /**\n * @type {string|null}\n */\n this.tname = tname;\n /**\n * @type {ID | null}\n */\n this.item = item;\n }\n}\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock));\n\nclass AbsolutePosition {\n /**\n * @param {AbstractType} type\n * @param {number} index\n */\n constructor (type, index) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n /**\n * @type {number}\n */\n this.index = index;\n }\n}\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n *\n * @function\n */\nconst createAbsolutePosition = (type, index) => new AbsolutePosition(type, index);\n\n/**\n * @param {AbstractType} type\n * @param {ID|null} item\n *\n * @function\n */\nconst createRelativePosition = (type, item) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = findRootTypeKey(type);\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock);\n }\n return new RelativePosition(typeid, tname, item)\n};\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromTypeIndex = (type, index) => {\n let t = type._start;\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index))\n }\n index -= t.length;\n }\n t = t.right;\n }\n return createRelativePosition(type, null)\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nconst writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item } = rpos;\n if (item !== null) {\n writeVarUint(encoder, 0);\n writeID(encoder, item);\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n writeUint8(encoder, 1);\n writeVarString(encoder, tname);\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n writeUint8(encoder, 2);\n writeID(encoder, type);\n } else {\n throw unexpectedCase()\n }\n return encoder\n};\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition|null}\n *\n * @function\n */\nconst readRelativePosition = decoder => {\n let type = null;\n let tname = null;\n let itemID = null;\n switch (readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder);\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = readVarString(decoder);\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder);\n }\n }\n return new RelativePosition(type, tname, itemID)\n};\n\n/**\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nconst createAbsolutePositionFromRelativePosition = (rpos, doc) => {\n const store = doc.store;\n const rightID = rpos.item;\n const typeID = rpos.type;\n const tname = rpos.tname;\n let type = null;\n let index = 0;\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followRedone(store, rightID);\n const right = res.item;\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType} */ (right.parent);\n if (type._item === null || !type._item.deleted) {\n index = right.deleted || !right.countable ? 0 : res.diff;\n let n = right.left;\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length;\n }\n n = n.left;\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname);\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followRedone(store, typeID);\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type;\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw unexpectedCase()\n }\n index = type._length;\n }\n return createAbsolutePosition(type, index)\n};\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n *\n * @function\n */\nconst compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type)\n);\n\nclass Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds;\n /**\n * State Map\n * @type {Map}\n */\n this.sv = sv;\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nconst equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients;\n const ds2 = snap2.ds.clients;\n const sv1 = snap1.sv;\n const sv2 = snap2.sv;\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || [];\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i];\n const dsitem2 = dsitems2[i];\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n */\nconst encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds);\n writeStateVector(encoder, snapshot.sv);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nconst encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DefaultDSEncoder());\n\n/**\n * @param {Uint8Array} buf\n * @param {AbstractDSDecoder} [decoder]\n * @return {Snapshot}\n */\nconst decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n};\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nconst decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(createDecoder(buf)));\n\n/**\n * @param {DeleteSet} ds\n * @param {Map} sm\n * @return {Snapshot}\n */\nconst createSnapshot = (ds, sm) => new Snapshot(ds, sm);\n\nconst emptySnapshot = createSnapshot(createDeleteSet(), new Map());\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nconst snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store));\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nconst isVisible = (item, snapshot) => snapshot === undefined ? !item.deleted : (\n snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id)\n);\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nconst splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, create);\n const store = transaction.doc.store;\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n });\n iterateDeletedStructs(transaction, snapshot.ds, item => {});\n meta.add(snapshot);\n }\n};\n\nclass StructStore {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n /**\n * Store incompleted struct reads here\n * `i` denotes to the next read operation\n * We could shift the array of refs instead, but shift is incredible\n * slow in Chrome for arrays with more than 100k elements\n * @see tryResumePendingStructRefs\n * @type {Map}>}\n */\n this.pendingClientsStructRefs = new Map();\n /**\n * Stack of pending structs waiting for struct dependencies\n * Maximum length of stack is structReaders.size\n * @type {Array}\n */\n this.pendingStack = [];\n /**\n * @type {Array}\n */\n this.pendingDeleteReaders = [];\n }\n}\n\n/**\n * Return the states as a Map.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map}\n *\n * @public\n * @function\n */\nconst getStateVector = store => {\n const sm = new Map();\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1];\n sm.set(client, struct.id.clock + struct.length);\n });\n return sm\n};\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nconst getState = (store, client) => {\n const structs = store.clients.get(client);\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1];\n return lastStruct.id.clock + lastStruct.length\n};\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nconst addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client);\n if (structs === undefined) {\n structs = [];\n store.clients.set(struct.id.client, structs);\n } else {\n const lastStruct = structs[structs.length - 1];\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw unexpectedCase()\n }\n }\n structs.push(struct);\n};\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nconst findIndexSS = (structs, clock) => {\n let left = 0;\n let right = structs.length - 1;\n let mid = structs[right];\n let midclock = mid.id.clock;\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = floor((clock / (midclock + mid.length - 1)) * right); // pivoting the search\n while (left <= right) {\n mid = structs[midindex];\n midclock = mid.id.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n midindex = floor((left + right) / 2);\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw unexpectedCase()\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nconst find = (store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n return structs[findIndexSS(structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nconst getItem = /** @type {function(StructStore,ID):Item} */ (find);\n\n/**\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clock\n */\nconst findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock);\n const struct = structs[index];\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n return index + 1\n }\n return index\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(id.client));\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n const index = findIndexSS(structs, id.clock);\n const struct = structs[index];\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1));\n }\n return struct\n};\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nconst replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array} */ (store.clients.get(struct.id.client));\n structs[findIndexSS(structs, struct.id.clock)] = newStruct;\n};\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len;\n let index = findIndexCleanStart(transaction, structs, clockStart);\n let struct;\n do {\n struct = structs[index++];\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd);\n }\n f(struct);\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n};\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const map = y.define('map', YMap)\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * y.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nclass Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet();\n /**\n * Holds the state before the transaction started.\n * @type {Map}\n */\n this.beforeState = getStateVector(doc.store);\n /**\n * Holds the state after the transaction.\n * @type {Map}\n */\n this.afterState = new Map();\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map,Set>}\n */\n this.changed = new Map();\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map,Array>}\n */\n this.changedParentTypes = new Map();\n /**\n * @type {Array}\n */\n this._mergeStructs = [];\n /**\n * @type {any}\n */\n this.origin = origin;\n /**\n * Stores meta information on the transaction\n * @type {Map}\n */\n this.meta = new Map();\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local;\n }\n}\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nconst writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet);\n writeStructsFromTransaction(encoder, transaction);\n writeDeleteSet(encoder, transaction.deleteSet);\n return true\n};\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType} type\n * @param {string|null} parentSub\n */\nconst addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item;\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n setIfUndefined(transaction.changed, type, create).add(parentSub);\n }\n};\n\n/**\n * @param {Array} structs\n * @param {number} pos\n */\nconst tryToMergeWithLeft = (structs, pos) => {\n const left = structs[pos - 1];\n const right = structs[pos];\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n structs.splice(pos, 1);\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left));\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n const endDeleteItemClock = deleteItem.clock + deleteItem.len;\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si];\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false);\n }\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiecy and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1));\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[--si]\n ) {\n tryToMergeWithLeft(structs, si);\n }\n }\n });\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter);\n tryMergeDeleteSet(ds, store);\n};\n\n/**\n * @param {Array} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i];\n const doc = transaction.doc;\n const store = doc.store;\n const ds = transaction.deleteSet;\n const mergeStructs = transaction._mergeStructs;\n try {\n sortAndMergeDeleteSet(ds);\n transaction.afterState = getStateVector(transaction.doc.store);\n doc._transaction = null;\n doc.emit('beforeObserverCalls', [transaction, doc]);\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array}\n */\n const fs = [];\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs);\n }\n })\n );\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) =>\n fs.push(() => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._item === null || !type._item.deleted) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n );\n events\n .forEach(event => {\n event.currentTarget = type;\n });\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction);\n }\n })\n );\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]));\n });\n callAll(fs, []);\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter);\n }\n tryMergeDeleteSet(ds, store);\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0;\n if (beforeClock !== clock) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = max(findIndexSS(structs, beforeClock), 1);\n for (let i = structs.length - 1; i >= firstChangePos; i--) {\n tryToMergeWithLeft(structs, i);\n }\n }\n });\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = 0; i < mergeStructs.length; i++) {\n const { client, clock } = mergeStructs[i].id;\n const structs = /** @type {Array} */ (store.clients.get(client));\n const replacedStructPos = findIndexSS(structs, clock);\n if (replacedStructPos + 1 < structs.length) {\n tryToMergeWithLeft(structs, replacedStructPos + 1);\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLeft(structs, replacedStructPos);\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n doc.clientID = generateNewClientId();\n print(ORANGE, BOLD, '[yjs] ', UNBOLD, RED, 'Changed the client-id because another client seems to be using it.');\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc]);\n if (doc._observers.has('update')) {\n const encoder = new DefaultUpdateEncoder();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = [];\n doc.emit('afterAllTransactions', [doc, transactionCleanups]);\n } else {\n cleanupTransactions(transactionCleanups, i + 1);\n }\n }\n }\n};\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @param {Doc} doc\n * @param {function(Transaction):void} f\n * @param {any} [origin=true]\n *\n * @function\n */\nconst transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups;\n let initialCall = false;\n if (doc._transaction === null) {\n initialCall = true;\n doc._transaction = new Transaction(doc, origin, local);\n transactionCleanups.push(doc._transaction);\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc]);\n }\n doc.emit('beforeTransaction', [doc._transaction, doc]);\n }\n try {\n f(doc._transaction);\n } finally {\n if (initialCall && transactionCleanups[0] === doc._transaction) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0);\n }\n }\n};\n\nclass StackItem {\n /**\n * @param {DeleteSet} ds\n * @param {Map} beforeState\n * @param {Map} afterState\n */\n constructor (ds, beforeState, afterState) {\n this.ds = ds;\n this.beforeState = beforeState;\n this.afterState = afterState;\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map();\n }\n}\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array} stack\n * @param {string} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Whether a change happened\n * @type {StackItem?}\n */\n let result = null;\n const doc = undoManager.doc;\n const scope = undoManager.scope;\n transact(doc, transaction => {\n while (stack.length > 0 && result === null) {\n const store = doc.store;\n const stackItem = /** @type {StackItem} */ (stack.pop());\n /**\n * @type {Set}\n */\n const itemsToRedo = new Set();\n /**\n * @type {Array}\n */\n const itemsToDelete = [];\n let performedChange = false;\n stackItem.afterState.forEach((endClock, client) => {\n const startClock = stackItem.beforeState.get(client) || 0;\n const len = endClock - startClock;\n // @todo iterateStructs should not need the structs parameter\n const structs = /** @type {Array} */ (store.clients.get(client));\n if (startClock !== endClock) {\n // make sure structs don't overlap with the range of created operations [stackItem.start, stackItem.start + stackItem.end)\n // this must be executed before deleted structs are iterated.\n getItemCleanStart(transaction, createID(client, startClock));\n if (endClock < getState(doc.store, client)) {\n getItemCleanStart(transaction, createID(client, endClock));\n }\n iterateStructs(transaction, structs, startClock, len, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id);\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff));\n }\n if (item.length > len) {\n getItemCleanStart(transaction, createID(item.id.client, endClock));\n }\n struct = item;\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct);\n }\n }\n });\n }\n });\n iterateDeletedStructs(transaction, stackItem.ds, struct => {\n const id = struct.id;\n const clock = id.clock;\n const client = id.client;\n const startClock = stackItem.beforeState.get(client) || 0;\n const endClock = stackItem.afterState.get(client) || 0;\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in [stackItem.start, stackItem.start + stackItem.end) because they were created and deleted in the same capture interval.\n !(clock >= startClock && clock < endClock)\n ) {\n itemsToRedo.add(struct);\n }\n });\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo) !== null || performedChange;\n });\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i];\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction);\n performedChange = true;\n }\n }\n result = stackItem;\n if (result != null) {\n undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType }, undoManager]);\n }\n }\n }, undoManager);\n return result\n};\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter whan an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set} [UndoManagerOptions.trackedOrigins=new Set([null])]\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {Observable<'stack-item-added'|'stack-item-popped'>}\n */\nclass UndoManager extends Observable {\n /**\n * @param {AbstractType|Array>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, { captureTimeout, deleteFilter = () => true, trackedOrigins = new Set([null]) } = {}) {\n if (captureTimeout == null) {\n captureTimeout = 500;\n }\n super();\n this.scope = typeScope instanceof Array ? typeScope : [typeScope];\n this.deleteFilter = deleteFilter;\n trackedOrigins.add(this);\n this.trackedOrigins = trackedOrigins;\n /**\n * @type {Array}\n */\n this.undoStack = [];\n /**\n * @type {Array}\n */\n this.redoStack = [];\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false;\n this.redoing = false;\n this.doc = /** @type {Doc} */ (this.scope[0].doc);\n this.lastChange = 0;\n this.doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n // Only track certain transactions\n if (!this.scope.some(type => transaction.changedParentTypes.has(type)) || (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))) {\n return\n }\n const undoing = this.undoing;\n const redoing = this.redoing;\n const stack = undoing ? this.redoStack : this.undoStack;\n if (undoing) {\n this.stopCapturing(); // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.redoStack = [];\n }\n const beforeState = transaction.beforeState;\n const afterState = transaction.afterState;\n const now = getUnixTime();\n if (now - this.lastChange < captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1];\n lastOp.ds = mergeDeleteSets([lastOp.ds, transaction.deleteSet]);\n lastOp.afterState = afterState;\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, beforeState, afterState));\n }\n if (!undoing && !redoing) {\n this.lastChange = now;\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true);\n }\n });\n this.emit('stack-item-added', [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo' }, this]);\n });\n }\n\n clear () {\n this.doc.transact(transaction => {\n /**\n * @param {StackItem} stackItem\n */\n const clearItem = stackItem => {\n iterateDeletedStructs(transaction, stackItem.ds, item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false);\n }\n });\n };\n this.undoStack.forEach(clearItem);\n this.redoStack.forEach(clearItem);\n });\n this.undoStack = [];\n this.redoStack = [];\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0;\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true;\n let res;\n try {\n res = popStackItem(this, this.undoStack, 'undo');\n } finally {\n this.undoing = false;\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true;\n let res;\n try {\n res = popStackItem(this, this.redoStack, 'redo');\n } finally {\n this.redoing = false;\n }\n return res\n }\n}\n\n/**\n * YEvent describes the changes on a YType.\n */\nclass YEvent {\n /**\n * @param {AbstractType} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {AbstractType}\n */\n this.target = target;\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType}\n */\n this.currentTarget = target;\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction;\n /**\n * @type {Object|null}\n */\n this._changes = null;\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n // @ts-ignore _item is defined because target is integrated\n return getPathTo(this.currentTarget, this.target)\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * @return {{added:Set,deleted:Set,delta:Array<{insert:Array}|{delete:number}|{retain:number}>}}\n */\n get changes () {\n let changes = this._changes;\n if (changes === null) {\n const target = this.target;\n const added = create();\n const deleted = create();\n /**\n * @type {Array<{insert:Array}|{delete:number}|{retain:number}>}\n */\n const delta = [];\n /**\n * @type {Map}\n */\n const keys = new Map();\n changes = {\n added, deleted, delta, keys\n };\n const changed = /** @type Set */ (this.transaction.changed.get(target));\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null;\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp);\n }\n };\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp();\n lastOp = { delete: 0 };\n }\n lastOp.delete += item.length;\n deleted.add(item);\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp();\n lastOp = { insert: [] };\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent());\n added.add(item);\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp();\n lastOp = { retain: 0 };\n }\n lastOp.retain += item.length;\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp();\n }\n }\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key));\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action;\n let oldValue;\n if (this.adds(item)) {\n let prev = item.left;\n while (prev !== null && this.adds(prev)) {\n prev = prev.left;\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete';\n oldValue = last(prev.content.getContent());\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update';\n oldValue = last(prev.content.getContent());\n } else {\n action = 'add';\n oldValue = undefined;\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete';\n oldValue = last(/** @type {Item} */ item.content.getContent());\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue });\n }\n });\n this._changes = changes;\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType} parent\n * @param {AbstractType} child target\n * @return {Array} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = [];\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub);\n } else {\n // parent is array-ish\n let i = 0;\n let c = /** @type {AbstractType} */ (child._item.parent)._start;\n while (c !== child._item && c !== null) {\n if (!c.deleted) {\n i++;\n }\n c = c.right;\n }\n path.unshift(i);\n }\n child = /** @type {AbstractType} */ (child._item.parent);\n }\n return path\n};\n\nconst maxSearchMarker = 80;\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0;\n\nclass ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true;\n this.p = p;\n this.index = index;\n this.timestamp = globalSearchMarkerTimestamp++;\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++; };\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false;\n marker.p = p;\n p.marker = true;\n marker.index = index;\n marker.timestamp = globalSearchMarkerTimestamp++;\n};\n\n/**\n * @param {Array} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b);\n overwriteMarker(marker, p, index);\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index);\n searchMarker.push(pm);\n return pm\n }\n};\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType} yarray\n * @param {number} index\n */\nconst findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => abs(index - a.index) < abs(index - b.index) ? a : b);\n let p = yarray._start;\n let pindex = 0;\n if (marker !== null) {\n p = marker.p;\n pindex = marker.index;\n refreshMarkerTimestamp(marker); // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length;\n }\n p = p.right;\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && abs(marker.index - pindex) < /** @type {YText|YArray} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex);\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n};\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nconst updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i];\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p;\n p.marker = false;\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left;\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length;\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1);\n continue\n }\n m.p = p;\n p.marker = true;\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = max(index, m.index + len);\n }\n }\n};\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType} t\n * @return {Array}\n */\nconst getTypeChildren = t => {\n let s = t._start;\n const arr = [];\n while (s) {\n arr.push(s);\n s = s.right;\n }\n return arr\n};\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nconst callTypeObservers = (type, transaction, event) => {\n const changedType = type;\n const changedParentTypes = transaction.changedParentTypes;\n while (true) {\n // @ts-ignore\n setIfUndefined(changedParentTypes, type, () => []).push(event);\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType} */ (type._item.parent);\n }\n callEventHandlerListeners(changedType._eH, event, transaction);\n};\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nclass AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null;\n /**\n * @type {Map}\n */\n this._map = new Map();\n /**\n * @type {Item|null}\n */\n this._start = null;\n /**\n * @type {Doc|null}\n */\n this.doc = null;\n this._length = 0;\n /**\n * Event handlers\n * @type {EventHandler}\n */\n this._eH = createEventHandler();\n /**\n * Deep event handlers\n * @type {EventHandler,Transaction>}\n */\n this._dEH = createEventHandler();\n /**\n * @type {null | Array}\n */\n this._searchMarker = null;\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y;\n this._item = item;\n }\n\n /**\n * @return {AbstractType}\n */\n _copy () {\n throw methodUnimplemented()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0;\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f);\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f);\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType} type\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArray = type => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType} type\n * @param {Snapshot} snapshot\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArraySnapshot = (type, snapshot) => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {AbstractType} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nconst typeListForEach = (type, f) => {\n let index = 0;\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type);\n }\n }\n n = n.right;\n }\n};\n\n/**\n * @template C,R\n * @param {AbstractType} type\n * @param {function(C,number,AbstractType):R} f\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListMap = (type, f) => {\n /**\n * @type {Array}\n */\n const result = [];\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type));\n });\n return result\n};\n\n/**\n * @param {AbstractType} type\n * @return {IterableIterator}\n *\n * @private\n * @function\n */\nconst typeListCreateIterator = type => {\n let n = type._start;\n /**\n * @type {Array|null}\n */\n let currentContent = null;\n let currentContentIndex = 0;\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right;\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent();\n currentContentIndex = 0;\n n = n.right; // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++];\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null;\n }\n return {\n done: false,\n value\n }\n }\n }\n};\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nconst typeListGet = (type, index) => {\n const marker = findMarker(type, index);\n let n = type._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length;\n }\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {Item?} referenceItem\n * @param {Array|Array|boolean|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const store = doc.store;\n const right = referenceItem === null ? parent._start : referenceItem.right;\n /**\n * @type {Array|number>}\n */\n let jsonContent = [];\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent));\n left.integrate(transaction, 0);\n jsonContent = [];\n }\n };\n content.forEach(c => {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c);\n break\n default:\n packJsonContent();\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))));\n left.integrate(transaction, 0);\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c));\n left.integrate(transaction, 0);\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n });\n packJsonContent();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {Array|Array|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev; // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0;\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n break\n }\n index -= n.length;\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nconst typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index;\n const startLength = length;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n index -= n.length;\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length));\n }\n n.delete(transaction);\n length -= n.length;\n }\n n = n.right;\n }\n if (length > 0) {\n throw create$1('array length exceeded')\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nconst typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key);\n if (c !== undefined) {\n c.delete(transaction);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Object|number|Array|string|Uint8Array|AbstractType} value\n *\n * @private\n * @function\n */\nconst typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let content;\n if (value == null) {\n content = new ContentAny([value]);\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value]);\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value));\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value);\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0);\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGet = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType} parent\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAll = (parent) => {\n /**\n * @type {Object}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst typeMapHas = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n};\n\n/**\n * @param {Map} map\n * @return {IterableIterator>}\n *\n * @private\n * @function\n */\nconst createMapIterator = map => iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted);\n\n/**\n * @module YArray\n */\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n */\nclass YArrayEvent extends YEvent {\n /**\n * @param {YArray} yarray The changed type\n * @param {Transaction} transaction The transaction object\n */\n constructor (yarray, transaction) {\n super(yarray, transaction);\n this._transaction = transaction;\n }\n}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YArray extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array?}\n * @private\n */\n this._prelimContent = [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YArray()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction));\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, 0, ...content);\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content);\n }\n\n /**\n * Preppends content to this YArray.\n *\n * @param {Array} content Array of content to preppend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, length);\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template T,M\n * @param {function(T,number,YArray):M} f Function that produces an element of the new Array\n * @return {Array} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {function(T,number,YArray):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYArray = decoder => new YArray();\n\n/**\n * @template T\n * Event that describes the changes on a YMap.\n */\nclass YMapEvent extends YEvent {\n /**\n * @param {YMap} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction);\n this.keysChanged = subs;\n }\n}\n\n/**\n * @template T number|string|Object|Array|Uint8Array\n * A shared Map implementation.\n *\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YMap extends AbstractType {\n /**\n *\n * @param {Iterable=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super();\n /**\n * @type {Map?}\n * @private\n */\n this._prelimContent = null;\n\n if (entries === undefined) {\n this._prelimContent = new Map();\n } else {\n this._prelimContent = new Map(entries);\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value);\n });\n this._prelimContent = null;\n }\n\n _copy () {\n return new YMap()\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs));\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1];\n map[key] = v instanceof AbstractType ? v.toJSON() : v;\n }\n });\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n keys () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n values () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator}\n */\n entries () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => [v[0], v[1].content.getContent()[v[1].length - 1]])\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(T,string,YMap):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this);\n }\n });\n return map\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).delete(key);\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {T} value The value of the element to add\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, value);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).set(key, value);\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {T|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYMap = decoder => new YMap();\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && equalFlat(a, b));\n\nclass ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left;\n this.right = right;\n this.index = index;\n this.currentAttributes = currentAttributes;\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n unexpectedCase();\n }\n switch (this.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!this.right.deleted) {\n this.index += this.right.length;\n }\n break\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content));\n }\n break\n }\n this.left = this.right;\n this.right = this.right.right;\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count));\n }\n pos.index += pos.right.length;\n count -= pos.right.length;\n }\n break\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content));\n }\n break\n }\n pos.left = pos.right;\n pos.right = pos.right.right;\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index) => {\n const currentAttributes = new Map();\n const marker = findMarker(parent, index);\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes);\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes);\n return findNextPosition(transaction, pos, index)\n }\n};\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key);\n }\n currPos.forward();\n }\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let left = currPos.left;\n const right = currPos.right;\n negatedAttributes.forEach((val, key) => {\n left = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n left.integrate(transaction, 0);\n });\n};\n\n/**\n * @param {Map} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format;\n if (value === null) {\n currentAttributes.delete(key);\n } else {\n currentAttributes.set(key, value);\n }\n};\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] || null, /** @type {ContentFormat} */ (currPos.right.content).value))) ; else {\n break\n }\n currPos.forward();\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n * @return {Map}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const negatedAttributes = new Map();\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key];\n const currentVal = currPos.currentAttributes.get(key) || null;\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal);\n const { left, right } = currPos;\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n }\n return negatedAttributes\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object} text\n * @param {Object} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null;\n }\n });\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : new ContentEmbed(text);\n let { left, right, index } = currPos;\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength());\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content);\n right.integrate(transaction, 0);\n currPos.right = right;\n currPos.index = index;\n currPos.forward();\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n while (length > 0 && currPos.right !== null) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key);\n } else {\n negatedAttributes.set(key, value);\n }\n currPos.right.delete(transaction);\n }\n break\n }\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n break\n }\n }\n currPos.forward();\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = '';\n for (; length > 0; length--) {\n newlines += '\\n';\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} end exclusive end, automatically iterates to the next Content Item\n * @param {Map} startAttributes\n * @param {Map} endAttributes This attribute is modified!\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, end, startAttributes, endAttributes) => {\n while (end && end.content.constructor !== ContentString && end.content.constructor !== ContentEmbed) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n updateCurrentAttributes(endAttributes, /** @type {ContentFormat} */ (end.content));\n }\n end = end.right;\n }\n let cleanups = 0;\n while (start !== end) {\n if (!start.deleted) {\n const content = start.content;\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content);\n if ((endAttributes.get(key) || null) !== value || (startAttributes.get(key) || null) === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction);\n cleanups++;\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right);\n }\n return cleanups\n};\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || (item.right.content.constructor !== ContentString && item.right.content.constructor !== ContentEmbed))) {\n item = item.right;\n }\n const attrs = new Set();\n // iterate back until a content item is found\n while (item && (item.deleted || (item.content.constructor !== ContentString && item.content.constructor !== ContentEmbed))) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key;\n if (attrs.has(key)) {\n item.delete(transaction);\n } else {\n attrs.add(key);\n }\n }\n item = item.left;\n }\n};\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nconst cleanupYTextFormatting = type => {\n let res = 0;\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start);\n let end = type._start;\n let startAttributes = create$2();\n const currentAttributes = copy(startAttributes);\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content));\n break\n case ContentEmbed:\n case ContentString:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes);\n startAttributes = copy(currentAttributes);\n start = end;\n break\n }\n }\n end = end.right;\n }\n });\n return res\n};\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length;\n const startAttrs = copy(currPos.currentAttributes);\n const start = currPos.right;\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n currPos.right.delete(transaction);\n break\n }\n }\n currPos.forward();\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, copy(currPos.currentAttributes));\n }\n const parent = /** @type {AbstractType} */ (/** @type {Item} */ (currPos.left || currPos.right).parent);\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length);\n }\n return currPos\n};\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @typedef {Object} DeltaItem\n * @property {number|undefined} DeltaItem.delete\n * @property {number|undefined} DeltaItem.retain\n * @property {string|undefined} DeltaItem.string\n * @property {Object} DeltaItem.attributes\n */\n\n/**\n * Event that describes the changes on a YText type.\n */\nclass YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n */\n constructor (ytext, transaction) {\n super(ytext, transaction);\n /**\n * @type {Array|null}\n */\n this._delta = null;\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc);\n this._delta = [];\n transact(y, transaction => {\n const delta = /** @type {Array} */ (this._delta);\n const currentAttributes = new Map(); // saves all current attributes for insert\n const oldAttributes = new Map();\n let item = this.target._start;\n /**\n * @type {string?}\n */\n let action = null;\n /**\n * @type {Object}\n */\n const attributes = {}; // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = '';\n let retain = 0;\n let deleteLen = 0;\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op;\n switch (action) {\n case 'delete':\n op = { delete: deleteLen };\n deleteLen = 0;\n break\n case 'insert':\n op = { insert };\n if (currentAttributes.size > 0) {\n op.attributes = {};\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value;\n }\n });\n }\n insert = '';\n break\n case 'retain':\n op = { retain };\n if (Object.keys(attributes).length > 0) {\n op.attributes = {};\n for (const key in attributes) {\n op.attributes[key] = attributes[key];\n }\n }\n retain = 0;\n break\n }\n delta.push(op);\n action = null;\n }\n };\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp();\n action = 'insert';\n insert = /** @type {ContentEmbed} */ (item.content).embed;\n addOp();\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += 1;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += 1;\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp();\n action = 'insert';\n }\n insert += /** @type {ContentString} */ (item.content).str;\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += item.length;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += item.length;\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content);\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (equalAttrs(value, (oldAttributes.get(key) || null))) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else {\n item.delete(transaction);\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value);\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n attributes[key] = curVal;\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (value === null) {\n attributes[key] = value;\n } else {\n delete attributes[key];\n }\n } else {\n item.delete(transaction);\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp();\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content));\n }\n break\n }\n }\n item = item.right;\n }\n addOp();\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1];\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop();\n } else {\n break\n }\n }\n });\n }\n return this._delta\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType\n */\nclass YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super();\n /**\n * Array of pending operations on this type\n * @type {Array?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n try {\n /** @type {Array} */ (this._pending).forEach(f => f());\n } catch (e) {\n console.error(e);\n }\n this._pending = null;\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n const event = new YTextEvent(this, transaction);\n const doc = transaction.doc;\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local) {\n // check if another formatting item was inserted\n let foundFormattingItem = false;\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0;\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (!item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n if (foundFormattingItem) {\n break\n }\n }\n if (!foundFormattingItem) {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || foundFormattingItem) {\n return\n }\n if (item.parent === this && item.content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n }\n transact(doc, (t) => {\n if (foundFormattingItem) {\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n cleanupYTextFormatting(this);\n } else {\n // If no formatting attribute was inserted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n iterateDeletedStructs(t, t.deleteSet, item => {\n if (item instanceof GC) {\n return\n }\n if (item.parent === this) {\n cleanupContextlessFormattingGap(t, item);\n }\n });\n }\n });\n }\n callTypeObservers(this, transaction, event);\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = '';\n /**\n * @type {Item|null}\n */\n let n = this._start;\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str;\n }\n n = n.right;\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} [opts]\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map());\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i];\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert;\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {});\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {});\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete);\n }\n }\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.applyDelta(delta));\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array}\n */\n const ops = [];\n const currentAttributes = new Map();\n const doc = /** @type {Doc} */ (this.doc);\n let str = '';\n let n = this._start;\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object}\n */\n const attributes = {};\n let addAttributes = false;\n currentAttributes.forEach((value, key) => {\n addAttributes = true;\n attributes[key] = value;\n });\n /**\n * @type {Object}\n */\n const op = { insert: str };\n if (addAttributes) {\n op.attributes = attributes;\n }\n ops.push(op);\n str = '';\n }\n }\n // snapshots are merged again after the transaction, so we need to keep the\n // transalive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot);\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot);\n }\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange');\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'removed') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' });\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'added') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' });\n }\n } else if (cur !== undefined) {\n packStr();\n currentAttributes.delete('ychange');\n }\n str += /** @type {ContentString} */ (n.content).str;\n break\n }\n case ContentEmbed: {\n packStr();\n /**\n * @type {Object}\n */\n const op = {\n insert: /** @type {ContentEmbed} */ (n.content).embed\n };\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object} */ ({});\n op.attributes = attrs;\n currentAttributes.forEach((value, key) => {\n attrs[key] = value;\n });\n }\n ops.push(op);\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr();\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content));\n }\n break\n }\n }\n n = n.right;\n }\n packStr();\n }, splitSnapshotAffectedStructs);\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (!attributes) {\n attributes = {};\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v; });\n }\n insertText(transaction, this, pos, text, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insert(index, text, attributes));\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object} embed The Object that represents the embed.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes = {}) {\n if (embed.constructor !== Object) {\n throw new Error('Embed must be an Object')\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n insertText(transaction, this, pos, embed, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes));\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index), length);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.delete(index, length));\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.format(index, length, attributes));\n }\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nconst readYText = decoder => new YText();\n\n/**\n * @module YXml\n */\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable}\n */\nclass YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f;\n this._root = root;\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start);\n this._firstCall = true;\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode;\n let type = /** @type {any} */ (n.content).type;\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type;\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start;\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right;\n break\n } else if (n.parent === this._root) {\n n = null;\n } else {\n n = /** @type {AbstractType} */ (n.parent)._item;\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false;\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n;\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType\n */\nclass YXmlFragment extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array|null}\n */\n this._prelimContent = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase();\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query);\n const next = iterator.next();\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase();\n // @ts-ignore\n return Array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction));\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment();\n if (binding !== undefined) {\n binding._createAssociation(fragment, this);\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null);\n });\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content);\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length);\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nconst readYXmlFragment = decoder => new YXmlFragment();\n\n/**\n * An YXmlElement imitates the behavior of a\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}.\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n */\nclass YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super();\n this.nodeName = nodeName;\n /**\n * @type {Map|null}\n */\n this._prelimAttrs = new Map();\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value);\n });\n this._prelimAttrs = null;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes();\n const stringBuilder = [];\n const keys = [];\n for (const key in attrs) {\n keys.push(key);\n }\n keys.sort();\n const keysLen = keys.length;\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i];\n stringBuilder.push(key + '=\"' + attrs[key] + '\"');\n }\n const nodeName = this.nodeName.toLocaleLowerCase();\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : '';\n return `<${nodeName}${attrsString}>${super.toString()}`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).delete(attributeName);\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {String} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).set(attributeName, attributeValue);\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {String} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @param {Snapshot} [snapshot]\n * @return {Object} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes (snapshot) {\n return typeMapGetAll(this)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName);\n const attrs = this.getAttributes();\n for (const key in attrs) {\n dom.setAttribute(key, attrs[key]);\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding));\n });\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID);\n encoder.writeKey(this.nodeName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nconst readYXmlElement = decoder => new YXmlElement(decoder.readKey());\n\n/**\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nclass YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlFragment} target The target on which the event is created.\n * @param {Set} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set}\n */\n this.attributesChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.attributesChanged.add(sub);\n }\n });\n }\n}\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap}\n */\nclass YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super();\n /**\n * @type {string}\n */\n this.hookName = hookName;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName];\n let dom;\n if (hook !== undefined) {\n dom = hook.createDom(this);\n } else {\n dom = document.createElement(this.hookName);\n }\n dom.setAttribute('data-yjs-hook', this.hookName);\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID);\n encoder.writeKey(this.hookName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nconst readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey());\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nclass YXmlText extends YText {\n _copy () {\n return new YXmlText()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString());\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = [];\n for (const nodeName in delta.attributes) {\n const attrs = [];\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] });\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1);\n nestedNodes.push({ nodeName, attrs });\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1);\n // now convert to dom string\n let str = '';\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i];\n str += `<${node.nodeName}`;\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j];\n str += ` ${attr.key}=\"${attr.value}\"`;\n }\n str += '>';\n }\n str += delta.insert;\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += ``;\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nconst readYXmlText = decoder => new YXmlText();\n\nclass AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id;\n this.length = length;\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw methodUnimplemented()\n }\n}\n\nconst structGCRefNumber = 0;\n\n/**\n * @private\n */\nclass GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.length -= offset;\n }\n addStruct(transaction.doc.store, this);\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber);\n encoder.writeLen(this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\nclass ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentBinary}\n */\nconst readContentBinary = decoder => new ContentBinary(decoder.readBuf());\n\nclass ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset);\n this.len = offset;\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len);\n item.markDeleted();\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentDeleted}\n */\nconst readContentDeleted = decoder => new ContentDeleted(decoder.readLen());\n\n/**\n * @private\n */\nclass ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentEmbed}\n */\nconst readContentEmbed = decoder => new ContentEmbed(decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key;\n this.value = value;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} offset\n * @return {ContentFormat}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n /** @type {AbstractType} */ (item.parent)._searchMarker = null;\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key);\n encoder.writeJSON(this.value);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentFormat}\n */\nconst readContentFormat = decoder => new ContentFormat(decoder.readString(), decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentJSON {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c));\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentJSON}\n */\nconst readContentJSON = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n const c = decoder.readString();\n if (c === 'undefined') {\n cs.push(undefined);\n } else {\n cs.push(JSON.parse(c));\n }\n }\n return new ContentJSON(cs)\n};\n\nclass ContentAny {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeAny(c);\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentAny}\n */\nconst readContentAny = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny());\n }\n return new ContentAny(cs)\n};\n\n/**\n * @private\n */\nclass ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset));\n this.str = this.str.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset));\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentString}\n */\nconst readContentString = decoder => new ContentString(decoder.readString());\n\n/**\n * @type {Array>}\n * @private\n */\nconst typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n];\n\nconst YArrayRefID = 0;\nconst YMapRefID = 1;\nconst YTextRefID = 2;\nconst YXmlElementRefID = 3;\nconst YXmlFragmentRefID = 4;\nconst YXmlHookRefID = 5;\nconst YXmlTextRefID = 6;\n\n/**\n * @private\n */\nclass ContentType {\n /**\n * @param {AbstractType} type\n */\n constructor (type) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item);\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start;\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // Whis will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item);\n }\n item = item.right;\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // same as above\n transaction._mergeStructs.push(item);\n }\n });\n transaction.changed.delete(this.type);\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start;\n while (item !== null) {\n item.gc(store, true);\n item = item.right;\n }\n this.type._start = null;\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true);\n item = item.left;\n }\n });\n this.type._map = new Map();\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentType}\n */\nconst readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder));\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nconst followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id;\n let diff = 0;\n let item;\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff);\n }\n item = getItem(store, nextID);\n diff = nextID.clock - item.id.clock;\n nextID = item.redone;\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n};\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nconst keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep;\n item = /** @type {AbstractType} */ (item.parent)._item;\n }\n};\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nconst splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id;\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n );\n if (leftItem.deleted) {\n rightItem.markDeleted();\n }\n if (leftItem.keep) {\n rightItem.keep = true;\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff);\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem;\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem;\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem);\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem);\n }\n leftItem.length = diff;\n return rightItem\n};\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set} redoitems\n *\n * @return {Item|null}\n *\n * @private\n */\nconst redoItem = (transaction, item, redoitems) => {\n const doc = transaction.doc;\n const store = doc.store;\n const ownClientID = doc.clientID;\n const redone = item.redone;\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType} */ (item.parent)._item;\n /**\n * @type {Item|null}\n */\n let left;\n /**\n * @type {Item|null}\n */\n let right;\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left;\n right = item;\n } else {\n // Is a map item. Insert as current value\n left = item;\n while (left.right !== null) {\n left = left.right;\n if (left.id.client !== ownClientID) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n }\n if (left.right !== null) {\n left = /** @type {Item} */ (/** @type {AbstractType} */ (item.parent)._map.get(item.parentSub));\n }\n right = null;\n }\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true && parentItem.redone === null) {\n // try to undo parent if it will be undone anyway\n if (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems) === null) {\n return null\n }\n }\n if (parentItem !== null && parentItem.redone !== null) {\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone);\n }\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left;\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone);\n }\n if (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace;\n break\n }\n left = left.left;\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right;\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone);\n }\n if (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace;\n break\n }\n right = right.right;\n }\n }\n const nextClock = getState(store, ownClientID);\n const nextId = createID(ownClientID, nextClock);\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentItem === null ? item.parent : /** @type {ContentType} */ (parentItem.content).type,\n item.parentSub,\n item.content.copy()\n );\n item.redone = nextId;\n keepItem(redoneItem, true);\n redoneItem.integrate(transaction, 0);\n return redoneItem\n};\n\n/**\n * Abstract class that represents any content.\n */\nclass Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength());\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin;\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left;\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right;\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin;\n /**\n * @type {AbstractType|ID|null}\n */\n this.parent = parent;\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub;\n /**\n * If this type's effect is reundone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null;\n /**\n * @type {AbstractContent}\n */\n this.content = content;\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? BIT2 : 0;\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & BIT4) > 0) !== isMarked) {\n this.info ^= BIT4;\n }\n }\n\n get marker () {\n return (this.info & BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= BIT1;\n }\n }\n\n get countable () {\n return (this.info & BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= BIT3;\n }\n }\n\n markDeleted () {\n this.info |= BIT3;\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin);\n this.origin = this.left.lastId;\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin);\n this.rightOrigin = this.right.id;\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null;\n }\n // only set parent if this shouldn't be garbage collected\n if (!this.parent) {\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent;\n this.parentSub = this.left.parentSub;\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent;\n this.parentSub = this.right.parentSub;\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent);\n if (parentItem.constructor === GC) {\n this.parent = null;\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type;\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1));\n this.origin = this.left.lastId;\n this.content = this.content.splice(offset);\n this.length -= offset;\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left;\n\n /**\n * @type {Item|null}\n */\n let o;\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right;\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (o !== null && o.left !== null) {\n o = o.left;\n }\n } else {\n o = /** @type {AbstractType} */ (this.parent)._start;\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set}\n */\n const conflictingItems = new Set();\n /**\n * @type {Set}\n */\n const itemsBeforeOrigin = new Set();\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o);\n conflictingItems.add(o);\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o;\n conflictingItems.clear();\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o;\n conflictingItems.clear();\n }\n } else {\n break\n }\n o = o.right;\n }\n this.left = left;\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right;\n this.right = right;\n this.left.right = this;\n } else {\n let r;\n if (this.parentSub !== null) {\n r = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (r !== null && r.left !== null) {\n r = r.left;\n }\n } else {\n r = /** @type {AbstractType} */ (this.parent)._start\n ;/** @type {AbstractType} */ (this.parent)._start = this;\n }\n this.right = r;\n }\n if (this.right !== null) {\n this.right.left = this;\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType} */ (this.parent)._map.set(this.parentSub, this);\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction);\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType} */ (this.parent)._length += this.length;\n }\n addStruct(transaction.doc.store, this);\n this.content.integrate(transaction, this);\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType} */ (this.parent), this.parentSub);\n if ((/** @type {AbstractType} */ (this.parent)._item !== null && /** @type {AbstractType} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction);\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0);\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left;\n while (n !== null && n.deleted) {\n n = n.left;\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n if (right.keep) {\n this.keep = true;\n }\n this.right = right.right;\n if (this.right !== null) {\n this.right.left = this;\n }\n this.length += right.length;\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType} */ (this.parent);\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length;\n }\n this.markDeleted();\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length);\n setIfUndefined(transaction.changed, parent, create).add(this.parentSub);\n this.content.delete(transaction);\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw unexpectedCase()\n }\n this.content.gc(store);\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length));\n } else {\n this.content = new ContentDeleted(this.length);\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin;\n const rightOrigin = this.rightOrigin;\n const parentSub = this.parentSub;\n const info = (this.content.getRef() & BITS5) |\n (origin === null ? 0 : BIT8) | // origin is defined\n (rightOrigin === null ? 0 : BIT7) | // right origin is defined\n (parentSub === null ? 0 : BIT6); // parentSub is non-null\n encoder.writeInfo(info);\n if (origin !== null) {\n encoder.writeLeftID(origin);\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin);\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType} */ (this.parent);\n const parentItem = parent._item;\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent);\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(ykey);\n } else {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parentItem.id);\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub);\n }\n }\n this.content.write(encoder, offset);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @param {number} info\n */\nconst readItemContent = (decoder, info) => contentRefs[info & BITS5](decoder);\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array}\n */\nconst contentRefs = [\n () => { throw unexpectedCase() }, // GC is not ItemContent\n readContentDeleted,\n readContentJSON,\n readContentBinary,\n readContentString,\n readContentEmbed,\n readContentFormat,\n readContentType,\n readContentAny\n];\n\nexport { AbstractConnector, AbstractStruct, AbstractType, YArray as Array, ContentAny, ContentBinary, ContentDeleted, ContentEmbed, ContentFormat, ContentJSON, ContentString, ContentType, Doc, GC, ID, Item, YMap as Map, PermanentUserData, RelativePosition, Snapshot, YText as Text, Transaction, UndoManager, YXmlElement as XmlElement, YXmlFragment as XmlFragment, YXmlHook as XmlHook, YXmlText as XmlText, YArrayEvent, YEvent, YMapEvent, YTextEvent, YXmlEvent, applyUpdate, applyUpdateV2, compareIDs, compareRelativePositions, createAbsolutePositionFromRelativePosition, createDeleteSet, createDeleteSetFromStructStore, createID, createRelativePositionFromJSON, createRelativePositionFromTypeIndex, createSnapshot, decodeSnapshot, decodeSnapshotV2, decodeStateVector, decodeStateVectorV2, emptySnapshot, encodeSnapshot, encodeSnapshotV2, encodeStateAsUpdate, encodeStateAsUpdateV2, encodeStateVector, encodeStateVectorV2, equalSnapshots, findRootTypeKey, getState, getTypeChildren, isDeleted, isParentOf, iterateDeletedStructs, logType, readRelativePosition, readUpdate, readUpdateV2, snapshot, transact, tryGc, typeListToArraySnapshot, typeMapGetSnapshot, writeRelativePosition };\n//# sourceMappingURL=yjs.mjs.map\n","/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map}\n */\nconst channels = new Map()\n\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null\n addEventListener('storage', e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') }))\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n}\n\n// Use BroadcastChannel or Polyfill\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = new Set()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n bc.onmessage = e => subs.forEach(sub => sub(e.data))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const subscribe = (room, f) => getChannel(room).subs.add(f)\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const unsubscribe = (room, f) => getChannel(room).subs.delete(f)\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n */\nexport const publish = (room, data) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data))\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map} StateMap\n */\n\n/**\n * Core Yjs defines three message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the the client is assured that\n * it received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server shoul only reply to requests, and not initiate them.\n * Therefore it is necesarry that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep1)\n const sv = Y.encodeStateVector(doc)\n encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep2)\n encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n encoding.writeVarUint(encoder, messageYjsUpdate)\n encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Will not be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc)\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin)\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin)\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n}\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nexport const createMutex = () => {\n let token = true\n return (f, g) => {\n if (token) {\n token = false\n try {\n f()\n } finally {\n token = true\n }\n } else if (g !== undefined) {\n g()\n }\n }\n}\n","/*\nUnlike stated in the LICENSE file, it is not necessary to include the copyright notice and permission notice when you copy code from this file.\n*/\n\n/**\n * @module provider/websocket\n */\n\n/* eslint-env browser */\n\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as bc from 'lib0/broadcastchannel.js'\nimport * as time from 'lib0/time.js'\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as syncProtocol from 'y-protocols/sync.js'\nimport * as authProtocol from 'y-protocols/auth.js'\nimport * as awarenessProtocol from 'y-protocols/awareness.js'\nimport * as mutex from 'lib0/mutex.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as math from 'lib0/math.js'\nimport * as url from 'lib0/url.js'\n\nconst messageSync = 0\nconst messageQueryAwareness = 3\nconst messageAwareness = 1\nconst messageAuth = 2\n\nconst reconnectTimeoutBase = 1200\nconst maxReconnectTimeout = 2500\n// @todo - this should depend on awareness.outdatedTime\nconst messageReconnectTimeout = 30000\n\n/**\n * @param {WebsocketProvider} provider\n * @param {string} reason\n */\nconst permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.\\n${reason}`)\n\n/**\n * @param {WebsocketProvider} provider\n * @param {Uint8Array} buf\n * @param {boolean} emitSynced\n * @return {encoding.Encoder}\n */\nconst readMessage = (provider, buf, emitSynced) => {\n const decoder = decoding.createDecoder(buf)\n const encoder = encoding.createEncoder()\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageSync: {\n encoding.writeVarUint(encoder, messageSync)\n const syncMessageType = syncProtocol.readSyncMessage(decoder, encoder, provider.doc, provider)\n if (emitSynced && syncMessageType === syncProtocol.messageYjsSyncStep2 && !provider.synced) {\n provider.synced = true\n }\n break\n }\n case messageQueryAwareness:\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, Array.from(provider.awareness.getStates().keys())))\n break\n case messageAwareness:\n awarenessProtocol.applyAwarenessUpdate(provider.awareness, decoding.readVarUint8Array(decoder), provider)\n break\n case messageAuth:\n authProtocol.readAuthMessage(decoder, provider.doc, permissionDeniedHandler)\n break\n default:\n console.error('Unable to compute message')\n return encoder\n }\n return encoder\n}\n\n/**\n * @param {WebsocketProvider} provider\n */\nconst setupWS = provider => {\n if (provider.shouldConnect && provider.ws === null) {\n const websocket = new provider._WS(provider.url)\n websocket.binaryType = 'arraybuffer'\n provider.ws = websocket\n provider.wsconnecting = true\n provider.wsconnected = false\n provider.synced = false\n websocket.onmessage = event => {\n provider.wsLastMessageReceived = time.getUnixTime()\n const encoder = readMessage(provider, new Uint8Array(event.data), true)\n if (encoding.length(encoder) > 1) {\n websocket.send(encoding.toUint8Array(encoder))\n }\n }\n websocket.onclose = () => {\n provider.ws = null\n provider.wsconnecting = false\n if (provider.wsconnected) {\n provider.wsconnected = false\n provider.synced = false\n // update awareness (all users left)\n awarenessProtocol.removeAwarenessStates(provider.awareness, Array.from(provider.awareness.getStates().keys()), provider)\n provider.emit('status', [{\n status: 'disconnected'\n }])\n } else {\n provider.wsUnsuccessfulReconnects++\n }\n // Start with no reconnect timeout and increase timeout by\n // log10(wsUnsuccessfulReconnects).\n // The idea is to increase reconnect timeout slowly and have no reconnect\n // timeout at the beginning (log(1) = 0)\n setTimeout(setupWS, math.min(math.log10(provider.wsUnsuccessfulReconnects + 1) * reconnectTimeoutBase, maxReconnectTimeout), provider)\n }\n websocket.onopen = () => {\n provider.wsLastMessageReceived = time.getUnixTime()\n provider.wsconnecting = false\n provider.wsconnected = true\n provider.wsUnsuccessfulReconnects = 0\n provider.emit('status', [{\n status: 'connected'\n }])\n // always send sync step 1 when connected\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, provider.doc)\n websocket.send(encoding.toUint8Array(encoder))\n // broadcast local awareness state\n if (provider.awareness.getLocalState() !== null) {\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, [provider.doc.clientID]))\n websocket.send(encoding.toUint8Array(encoderAwarenessState))\n }\n }\n }\n}\n\n/**\n * @param {WebsocketProvider} provider\n * @param {ArrayBuffer} buf\n */\nconst broadcastMessage = (provider, buf) => {\n if (provider.wsconnected) {\n // @ts-ignore We know that wsconnected = true\n provider.ws.send(buf)\n }\n if (provider.bcconnected) {\n provider.mux(() => {\n bc.publish(provider.url, buf)\n })\n }\n}\n\n/**\n * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.\n * The document name is attached to the provided url. I.e. the following example\n * creates a websocket connection to http://localhost:1234/my-document-name\n *\n * @example\n * import * as Y from 'yjs'\n * import { WebsocketProvider } from 'y-websocket'\n * const doc = new Y.Doc()\n * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)\n *\n * @extends {Observable}\n */\nexport class WebsocketProvider extends Observable {\n /**\n * @param {string} serverUrl\n * @param {string} roomname\n * @param {Y.Doc} doc\n * @param {object} [opts]\n * @param {boolean} [opts.connect]\n * @param {awarenessProtocol.Awareness} [opts.awareness]\n * @param {Object} [opts.params]\n * @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill\n * @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds\n */\n constructor (serverUrl, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), params = {}, WebSocketPolyfill = WebSocket, resyncInterval = -1 } = {}) {\n super()\n // ensure that url is always ends with /\n while (serverUrl[serverUrl.length - 1] === '/') {\n serverUrl = serverUrl.slice(0, serverUrl.length - 1)\n }\n const encodedParams = url.encodeQueryParams(params)\n this.bcChannel = serverUrl + '/' + roomname\n this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '?' + encodedParams)\n this.roomname = roomname\n this.doc = doc\n this._WS = WebSocketPolyfill\n /**\n * @type {Object}\n */\n this._localAwarenessState = {}\n this.awareness = awareness\n this.wsconnected = false\n this.wsconnecting = false\n this.bcconnected = false\n this.wsUnsuccessfulReconnects = 0\n this.mux = mutex.createMutex()\n /**\n * @type {boolean}\n */\n this._synced = false\n /**\n * @type {WebSocket?}\n */\n this.ws = null\n this.wsLastMessageReceived = 0\n /**\n * Whether to connect to other peers or not\n * @type {boolean}\n */\n this.shouldConnect = connect\n\n /**\n * @type {NodeJS.Timeout | number}\n */\n this._resyncInterval = 0\n if (resyncInterval > 0) {\n this._resyncInterval = setInterval(() => {\n if (this.ws) {\n if (!this.synced) {\n alert(`\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message..`)\n console.warn('Client was unsynced anyway')\n }\n // resend sync step 1\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, doc)\n this.ws.send(encoding.toUint8Array(encoder))\n }\n }, resyncInterval)\n }\n\n /**\n * @param {ArrayBuffer} data\n */\n this._bcSubscriber = data => {\n this.mux(() => {\n const encoder = readMessage(this, new Uint8Array(data), false)\n if (encoding.length(encoder) > 1) {\n bc.publish(this.bcChannel, encoding.toUint8Array(encoder))\n }\n })\n }\n /**\n * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)\n * @param {Uint8Array} update\n * @param {any} origin\n */\n this._updateHandler = (update, origin) => {\n if (origin !== this || origin === null) {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeUpdate(encoder, update)\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n }\n this.doc.on('update', this._updateHandler)\n /**\n * @param {any} changed\n * @param {any} origin\n */\n this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => {\n const changedClients = added.concat(updated).concat(removed)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n window.addEventListener('beforeunload', () => {\n awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload')\n })\n awareness.on('update', this._awarenessUpdateHandler)\n this._checkInterval = setInterval(() => {\n if (this.wsconnected && messageReconnectTimeout < time.getUnixTime() - this.wsLastMessageReceived) {\n // no message received in a long time - not even your own awareness\n // updates (which are updated every 15 seconds)\n /** @type {WebSocket} */ (this.ws).close()\n }\n }, messageReconnectTimeout / 10)\n if (connect) {\n this.connect()\n }\n }\n\n /**\n * @type {boolean}\n */\n get synced () {\n return this._synced\n }\n\n set synced (state) {\n if (this._synced !== state) {\n this._synced = state\n this.emit('sync', [state])\n }\n }\n\n destroy () {\n if (this._resyncInterval !== 0) {\n clearInterval(/** @type {NodeJS.Timeout} */ (this._resyncInterval))\n }\n clearInterval(this._checkInterval)\n this.disconnect()\n this.awareness.off('update', this._awarenessUpdateHandler)\n this.doc.off('update', this._updateHandler)\n super.destroy()\n }\n\n connectBc () {\n if (!this.bcconnected) {\n bc.subscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = true\n }\n // send sync step1 to bc\n this.mux(() => {\n // write sync step 1\n const encoderSync = encoding.createEncoder()\n encoding.writeVarUint(encoderSync, messageSync)\n syncProtocol.writeSyncStep1(encoderSync, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderSync))\n // broadcast local state\n const encoderState = encoding.createEncoder()\n encoding.writeVarUint(encoderState, messageSync)\n syncProtocol.writeSyncStep2(encoderState, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderState))\n // write queryAwareness\n const encoderAwarenessQuery = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessQuery))\n // broadcast local awareness state\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID]))\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessState))\n })\n }\n\n disconnectBc () {\n // broadcast message with local awareness state set to null (indicating disconnect)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map()))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n if (this.bcconnected) {\n bc.unsubscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = false\n }\n }\n\n disconnect () {\n this.shouldConnect = false\n this.disconnectBc()\n if (this.ws !== null) {\n this.ws.close()\n }\n }\n\n connect () {\n this.shouldConnect = true\n if (!this.wsconnected && this.ws === null) {\n setupWS(this)\n this.connectBc()\n }\n }\n}\n","\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\n\nexport const messagePermissionDenied = 0\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {string} reason\n */\nexport const writePermissionDenied = (encoder, reason) => {\n encoding.writeVarUint(encoder, messagePermissionDenied)\n encoding.writeVarString(encoder, reason)\n}\n\n/**\n * @callback PermissionDeniedHandler\n * @param {any} y\n * @param {string} reason\n */\n\n/**\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} y\n * @param {PermissionDeniedHandler} permissionDeniedHandler\n */\nexport const readAuthMessage = (decoder, y, permissionDeniedHandler) => {\n switch (decoding.readVarUint(decoder)) {\n case messagePermissionDenied: permissionDeniedHandler(y, decoding.readVarString(decoder))\n }\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (var i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * @module bindings/quill\n */\n\nimport { createMutex } from 'lib0/mutex.js'\nimport * as Y from 'yjs' // eslint-disable-line\nimport { Awareness } from 'y-protocols/awareness.js' // eslint-disable-line\n\n/**\n * Removes the pending '\\n's if it has no attributes.\n */\nexport const normQuillDelta = delta => {\n if (delta.length > 0) {\n const d = delta[delta.length - 1]\n const insert = d.insert\n if (d.attributes === undefined && insert !== undefined && insert.slice(-1) === '\\n') {\n delta = delta.slice()\n let ins = insert.slice(0, -1)\n while (ins.slice(-1) === '\\n') {\n ins = ins.slice(0, -1)\n }\n delta[delta.length - 1] = { insert: ins }\n if (ins.length === 0) {\n delta.pop()\n }\n return delta\n }\n }\n return delta\n}\n\n/**\n * @param {any} quillCursors\n */\nconst updateCursor = (quillCursors, aw, clientId, doc, type) => {\n try {\n if (aw && aw.cursor && clientId !== doc.clientID) {\n const user = aw.user || {}\n const color = user.color || '#ffa500'\n const name = user.name || `User: ${clientId}`\n quillCursors.createCursor(clientId.toString(), name, color)\n const anchor = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.anchor), doc)\n const head = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.head), doc)\n if (anchor && head && anchor.type === type) {\n quillCursors.moveCursor(clientId.toString(), { index: anchor.index, length: head.index - anchor.index })\n }\n } else {\n quillCursors.removeCursor(clientId.toString())\n }\n } catch (err) {\n console.error(err)\n }\n}\n\nexport class QuillBinding {\n /**\n * @param {Y.Text} type\n * @param {any} quill\n * @param {Awareness} [awareness]\n */\n constructor (type, quill, awareness) {\n const mux = createMutex()\n const doc = /** @type {Y.Doc} */ (type.doc)\n this.mux = mux\n this.type = type\n this.doc = doc\n this.quill = quill\n const quillCursors = quill.getModule('cursors') || null\n this.quillCursors = quillCursors\n // This object contains all attributes used in the quill instance\n this._negatedUsedFormats = {}\n this.awareness = awareness\n this._awarenessChange = ({ added, removed, updated }) => {\n const states = /** @type {Awareness} */ (awareness).getStates()\n added.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n updated.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n removed.forEach(id => {\n quillCursors.removeCursor(id.toString())\n })\n }\n this._typeObserver = event => {\n mux(() => {\n const eventDelta = event.delta\n // We always explicitly set attributes, otherwise concurrent edits may\n // result in quill assuming that a text insertion shall inherit existing\n // attributes.\n const delta = []\n for (let i = 0; i < eventDelta.length; i++) {\n const d = eventDelta[i]\n if (d.insert !== undefined) {\n delta.push(Object.assign({}, d, { attributes: Object.assign({}, this._negatedUsedFormats, d.attributes || {}) }))\n } else {\n delta.push(d)\n }\n }\n quill.updateContents(delta, 'yjs')\n })\n }\n type.observe(this._typeObserver)\n this._quillObserver = (eventType, delta) => {\n if (delta && delta.ops) {\n // update content\n const ops = delta.ops\n ops.forEach(op => {\n if (op.attributes !== undefined) {\n for (let key in op.attributes) {\n if (this._negatedUsedFormats[key] === undefined) {\n this._negatedUsedFormats[key] = false\n }\n }\n }\n })\n mux(() => {\n type.applyDelta(ops)\n })\n }\n // always check selection\n if (awareness && quillCursors) {\n const sel = quill.getSelection()\n const aw = /** @type {any} */ (awareness.getLocalState())\n if (sel === null) {\n if (awareness.getLocalState() !== null) {\n awareness.setLocalStateField('cursor', /** @type {any} */ (null))\n }\n } else {\n const anchor = Y.createRelativePositionFromTypeIndex(type, sel.index)\n const head = Y.createRelativePositionFromTypeIndex(type, sel.index + sel.length)\n if (!aw || !aw.cursor || !Y.compareRelativePositions(anchor, aw.cursor.anchor) || !Y.compareRelativePositions(head, aw.cursor.head)) {\n awareness.setLocalStateField('cursor', {\n anchor,\n head\n })\n }\n }\n // update all remote cursor locations\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n }\n }\n quill.on('editor-change', this._quillObserver)\n mux(() => {\n // This indirectly initializes _negatedUsedFormats.\n // Make sure that this call this after the _quillObserver is set.\n quill.setContents(type.toDelta())\n })\n // init remote cursors\n if (quillCursors !== null && awareness) {\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n awareness.on('change', this._awarenessChange)\n }\n }\n destroy () {\n this.type.unobserve(this._typeObserver)\n this.quill.off(this._quillObserver)\n if (this.awareness) {\n this.awareness.off('change', this._awarenessChange)\n }\n }\n}\n","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe\n\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","/**!\n* tippy.js v6.2.7\n* (c) 2017-2020 atomiks\n* MIT License\n*/\nimport { createPopper } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0];\n\n return element ? element.ownerDocument || document : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar ua = isBrowser ? navigator.userAgent : '';\nvar isIE = /MSIE |Trident\\//.test(ua);\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: function appendTo() {\n return document.body;\n },\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, {}, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, {}, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function (event) {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles() {\n popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(void 0, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n } // Clicked on interactive popper\n\n\n if (instance.props.interactive && popper.contains(event.target)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (getCurrentTarget().contains(event.target)) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper
    or tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. ) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance);\n instance.state.isMounted = true;\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles();\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n }\n\n enableInstances(false);\n setReferences();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onTrigger: function onTrigger(instance, event) {\n var target = event.currentTarget;\n var index = references.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n instance.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n return target.getBoundingClientRect();\n }\n }));\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: references\n }));\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: references\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({}, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (placement !== state.placement) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n cursorRectIndex = rects.indexOf(cursorRect);\n }\n },\n onUntrigger: function onUntrigger() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = /** @class */ (function () {\n function Positioning() {\n }\n Positioning.prototype.getAllStyles = function (element) { return window.getComputedStyle(element); };\n Positioning.prototype.getStyle = function (element, prop) { return this.getAllStyles(element)[prop]; };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) { round = true; }\n var elPosition;\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) { round = true; }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var _a = placement.split('-'), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var marginTop = parseFloat(targetElStyles.marginTop);\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n var marginRight = parseFloat(targetElStyles.marginRight);\n var topPosition = 0;\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n var targetElBCR = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\nexport { Positioning };\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n var classList = targetElement.classList;\n var addClassesToTarget = function (targetPlacement) {\n var _a = targetPlacement.split('-'), primary = _a[0], secondary = _a[1];\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); });\n }\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n var testPlacement;\n var isInViewport = false;\n for (var _i = 0, placementVals_1 = placementVals; _i < placementVals_1.length; _i++) {\n testPlacement = placementVals_1[_i];\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n//# sourceMappingURL=positioning.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { positionElements } from 'positioning';\r\nvar QuillEvents;\r\n(function (QuillEvents) {\r\n QuillEvents[\"EDITOR_CHANGE\"] = \"editor-change\";\r\n QuillEvents[\"SCROLL_BEFORE_UPDATE\"] = \"scroll-before-update\";\r\n QuillEvents[\"SCROLL_BLOT_MOUNT\"] = \"scroll-blot-mount\";\r\n QuillEvents[\"SCROLL_BLOT_UNMOUNT\"] = \"scroll-blot-unmount\";\r\n QuillEvents[\"SCROLL_OPTIMIZE\"] = \"scroll-optimize\";\r\n QuillEvents[\"SCROLL_UPDATE\"] = \"scroll-update\";\r\n QuillEvents[\"SELECTION_CHANGE\"] = \"selection-change\";\r\n QuillEvents[\"TEXT_CHANGE\"] = \"text-change\";\r\n})(QuillEvents || (QuillEvents = {}));\r\nvar QuillSources;\r\n(function (QuillSources) {\r\n QuillSources[\"API\"] = \"api\";\r\n QuillSources[\"SILENT\"] = \"silent\";\r\n QuillSources[\"USER\"] = \"user\";\r\n})(QuillSources || (QuillSources = {}));\r\nvar DEFAULT_PLACEMENT = [\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top-left',\r\n 'top-right',\r\n 'auto',\r\n];\r\nvar iconAddColRight = '';\r\nvar iconAddColLeft = '';\r\nvar iconAddRowAbove = '';\r\nvar iconAddRowBelow = '';\r\nvar iconRemoveCol = '';\r\nvar iconRemoveRow = '';\r\nvar iconRemoveTable = '';\r\nvar TableUI = /** @class */ (function () {\r\n function TableUI(quill, options) {\r\n var _this = this;\r\n this.TOGGLE_TEMPLATE = \"\";\r\n this.DEFAULTS = {\r\n maxRowCount: -1,\r\n };\r\n this.menuItems = [\r\n {\r\n title: 'Sağa sütun ekle',\r\n icon: iconAddColRight,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnRight();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Sola sütün ekle',\r\n icon: iconAddColLeft,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnLeft();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Aşağı satır ekle',\r\n icon: iconAddRowAbove,\r\n handler: function () {\r\n _this.table.insertRowAbove();\r\n },\r\n },\r\n {\r\n title: 'Yukarı satır ekle',\r\n icon: iconAddRowBelow,\r\n handler: function () {\r\n _this.table.insertRowBelow();\r\n },\r\n },\r\n {\r\n title: 'Sütunu sil',\r\n icon: iconRemoveCol,\r\n handler: function () {\r\n _this.table.deleteColumn();\r\n },\r\n },\r\n {\r\n title: 'Satırı sil',\r\n icon: iconRemoveRow,\r\n handler: function () {\r\n _this.table.deleteRow();\r\n },\r\n },\r\n {\r\n title: 'Tabloyu sil',\r\n icon: iconRemoveTable,\r\n handler: function () {\r\n _this.table.deleteTable();\r\n },\r\n },\r\n ];\r\n this.editorChangeHandler = function (type, range, oldRange, source) {\r\n if (type === QuillEvents.SELECTION_CHANGE) {\r\n _this.detectButton(range);\r\n }\r\n };\r\n this.contextMenuHandler = function (evt) {\r\n if (!_this.isTable()) {\r\n return true;\r\n }\r\n evt.preventDefault();\r\n _this.showMenu();\r\n };\r\n this.toggleClickHandler = function (e) {\r\n _this.toggleMenu();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n this.docClickHandler = function () { return _this.hideMenu; };\r\n this.quill = quill;\r\n this.options = __assign(__assign({}, this.DEFAULTS), options);\r\n this.table = quill.getModule('table');\r\n if (!this.table) {\r\n console.error('\"table\" module not found');\r\n return;\r\n }\r\n this.toggle = quill.addContainer('ql-table-toggle');\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n this.toggle.innerHTML = this.TOGGLE_TEMPLATE;\r\n this.toggle.addEventListener('click', this.toggleClickHandler);\r\n this.quill.on(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.addEventListener('contextmenu', this.contextMenuHandler);\r\n }\r\n TableUI.prototype.isTable = function (range) {\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return false;\r\n }\r\n var formats = this.quill.getFormat(range.index);\r\n return !!(formats['table'] && !range.length);\r\n };\r\n TableUI.prototype.getColCount = function (range) {\r\n if (range === void 0) { range = null; }\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return 0;\r\n }\r\n var table = this.table.getTable(range)[0];\r\n if (!table) {\r\n return 0;\r\n }\r\n var maxColumns = table.rows().reduce(function (max, row) {\r\n return Math.max(row.children.length, max);\r\n }, 0);\r\n return maxColumns;\r\n };\r\n TableUI.prototype.showMenu = function () {\r\n var _this = this;\r\n this.hideMenu();\r\n this.menu = this.quill.addContainer('ql-table-menu');\r\n this.menuItems.forEach(function (it) {\r\n _this.menu.appendChild(_this.createMenuItem(it));\r\n });\r\n positionElements(this.toggle, this.menu, DEFAULT_PLACEMENT, false);\r\n document.addEventListener('click', this.docClickHandler);\r\n };\r\n TableUI.prototype.hideMenu = function () {\r\n if (this.menu) {\r\n this.menu.remove();\r\n this.menu = null;\r\n document.removeEventListener('click', this.docClickHandler);\r\n }\r\n };\r\n TableUI.prototype.createMenuItem = function (item) {\r\n var _this = this;\r\n var node = document.createElement('div');\r\n node.classList.add('ql-table-menu__item');\r\n var iconSpan = document.createElement('span');\r\n iconSpan.classList.add('ql-table-menu__item-icon');\r\n iconSpan.innerHTML = item.icon;\r\n var textSpan = document.createElement('span');\r\n textSpan.classList.add('ql-table-menu__item-text');\r\n textSpan.innerText = item.title;\r\n node.appendChild(iconSpan);\r\n node.appendChild(textSpan);\r\n node.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n _this.quill.focus();\r\n item.handler();\r\n _this.hideMenu();\r\n _this.detectButton(_this.quill.getSelection());\r\n }, false);\r\n return node;\r\n };\r\n TableUI.prototype.detectButton = function (range) {\r\n if (range == null) {\r\n return;\r\n }\r\n var show = this.isTable(range);\r\n if (show) {\r\n var _a = this.quill.getLine(range.index), cell = _a[0], offset = _a[1];\r\n var containerBounds = this.quill.container.getBoundingClientRect();\r\n var bounds = cell.domNode.getBoundingClientRect();\r\n bounds = {\r\n bottom: bounds.bottom - containerBounds.top,\r\n height: bounds.height,\r\n left: bounds.left - containerBounds.left,\r\n right: bounds.right - containerBounds.left,\r\n top: bounds.top - containerBounds.top,\r\n width: bounds.width,\r\n };\r\n this.showToggle(bounds);\r\n }\r\n else {\r\n this.hideToggle();\r\n this.hideMenu();\r\n }\r\n };\r\n TableUI.prototype.showToggle = function (position) {\r\n this.position = position;\r\n this.toggle.classList.remove('ql-table-toggle_hidden');\r\n this.toggle.style.top = position.top + \"px\";\r\n this.toggle.style.left = position.left + \"px\";\r\n };\r\n TableUI.prototype.hideToggle = function () {\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n };\r\n TableUI.prototype.toggleMenu = function () {\r\n if (this.menu) {\r\n this.hideToggle();\r\n }\r\n else {\r\n this.showMenu();\r\n }\r\n };\r\n TableUI.prototype.destroy = function () {\r\n this.hideMenu();\r\n this.quill.off(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.removeEventListener('contextmenu', this.contextMenuHandler);\r\n this.toggle.removeEventListener('click', this.toggleClickHandler);\r\n this.toggle.remove();\r\n this.toggle = null;\r\n this.options = this.DEFAULTS;\r\n this.menu = null;\r\n this.table = null;\r\n this.quill = null;\r\n };\r\n return TableUI;\r\n}());\r\nexport default TableUI;\r\n//# sourceMappingURL=index.js.map","import * as Y from 'yjs'\nimport {\n WebsocketProvider\n} from 'y-websocket'\nimport {\n QuillBinding\n} from 'y-quill'\nimport Quill from 'quill'\nimport QuillCursors from 'quill-cursors'\nimport tippy from 'tippy.js';\nimport * as QuillTableUI from 'quill-table-ui'\nimport MagicUrl from 'quill-magic-url'\nimport { ImageDrop } from 'quill-image-drop-module'\nimport BlotFormatter from 'quill-blot-formatter'\n\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageDrop', ImageDrop)\nQuill.register('modules/magicUrl', MagicUrl);\nQuill.register('modules/cursors', QuillCursors)\nQuill.register({\n 'modules/tableUI': QuillTableUI.default\n}, true)\n\nwindow.addEventListener('load', () => {\n const ydoc = new Y.Doc()\n var provider = new WebsocketProvider('ws://localhost:9000', documentUUID, ydoc)\n const type = ydoc.getText(documentUUID)\n\n let editor = new Quill('#full-container .editor', {\n bounds: '#full-container .editor',\n modules: {\n 'cursors': true,\n 'syntax': true,\n 'toolbar': { container: '.toolbar' },\n 'table': true,\n 'tableUI': true,\n 'magicUrl': true,\n 'imageDrop': true,\n 'blotFormatter': {}\n },\n\n theme: 'snow'\n });\n\n editorInstance = editor\n providerInstance = provider\n\n const binding = new QuillBinding(type, editor, provider.awareness)\n\n provider.awareness.setLocalStateField('user', {\n name: divergent_name,\n color: divergent_color\n })\n\n tippy('.ql-bold', {\n content: 'Kalın'\n })\n tippy('.ql-italic', {\n content: 'Eğik'\n })\n tippy('.ql-underline', {\n content: 'Altı Çizili'\n })\n tippy('.ql-strike', {\n content: 'Üstü Çizili'\n })\n tippy('.ql-blockquote', {\n content: 'Alıntı'\n })\n tippy('.ql-code-block', {\n content: 'Kod Bloğu'\n })\n tippy('[value=\"ordered\"]', {\n content: 'Sıralı Liste'\n })\n tippy('[value=\"bullet\"]', {\n content: 'Liste'\n })\n tippy('[value=\"+1\"]', {\n content: 'İçe Adım'\n })\n tippy('[value=\"-1\"]', {\n content: 'Dışa Adım'\n })\n tippy('.ql-link', {\n content: 'Link'\n })\n tippy('.ql-image', {\n content: 'Resim'\n })\n tippy('.ql-clean', {\n content: 'Biçimlendirmeyi Temizle'\n })\n\n\n // Auto-save AJAX\n let save = () => {\n $.ajax(saveRoute, {\n type: 'POST',\n data: {\n '_token': csrfToken,\n 'data': $(\".ql-editor\").html()\n },\n success: function (data, status, xhr) {\n //console.log('status: ' + status + ', data: ' + data);\n },\n error: function (jqXhr, textStatus, errorMessage) {\n clearInterval(saveLoop);\n console.log('Error' + errorMessage);\n }\n })\n }\n\n let saveLoop = setInterval(() => {\n save()\n }, 9999999)\n\n let checker = false;\n\n $(\".editor\").keypress(function () {\n if (!checker) {\n clearInterval(saveLoop)\n saveLoop = setInterval(() => {\n save()\n }, 8000)\n checker = true\n }\n\n })\n})\n\n","/**\n * Custom module for quilljs to allow user to drag images from their file system into the editor\n * and paste images from clipboard (Works on Chrome, Firefox, Edge, not on Safari)\n * @see https://quilljs.com/blog/building-a-custom-module/\n */\nexport class ImageDrop {\n\n\t/**\n\t * Instantiate the module given a quill instance and any options\n\t * @param {Quill} quill\n\t * @param {Object} options\n\t */\n\tconstructor(quill, options = {}) {\n\t\t// save the quill reference\n\t\tthis.quill = quill;\n\t\t// bind handlers to this instance\n\t\tthis.handleDrop = this.handleDrop.bind(this);\n\t\tthis.handlePaste = this.handlePaste.bind(this);\n\t\t// listen for drop and paste events\n\t\tthis.quill.root.addEventListener('drop', this.handleDrop, false);\n\t\tthis.quill.root.addEventListener('paste', this.handlePaste, false);\n\t}\n\n\t/**\n\t * Handler for drop event to read dropped files from evt.dataTransfer\n\t * @param {Event} evt\n\t */\n\thandleDrop(evt) {\n\t\tevt.preventDefault();\n\t\tif (evt.dataTransfer && evt.dataTransfer.files && evt.dataTransfer.files.length) {\n\t\t\tif (document.caretRangeFromPoint) {\n\t\t\t\tconst selection = document.getSelection();\n\t\t\t\tconst range = document.caretRangeFromPoint(evt.clientX, evt.clientY);\n\t\t\t\tif (selection && range) {\n\t\t\t\t\tselection.setBaseAndExtent(range.startContainer, range.startOffset, range.startContainer, range.startOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.readFiles(evt.dataTransfer.files, this.insert.bind(this));\n\t\t}\n\t}\n\n\t/**\n\t * Handler for paste event to read pasted files from evt.clipboardData\n\t * @param {Event} evt\n\t */\n\thandlePaste(evt) {\n\t\tif (evt.clipboardData && evt.clipboardData.items && evt.clipboardData.items.length) {\n\t\t\tthis.readFiles(evt.clipboardData.items, dataUrl => {\n\t\t\t\tconst selection = this.quill.getSelection();\n\t\t\t\tif (selection) {\n\t\t\t\t\t// we must be in a browser that supports pasting (like Firefox)\n\t\t\t\t\t// so it has already been placed into the editor\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// otherwise we wait until after the paste when this.quill.getSelection()\n\t\t\t\t\t// will return a valid index\n\t\t\t\t\tsetTimeout(() => this.insert(dataUrl), 0);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Insert the image into the document at the current cursor position\n\t * @param {String} dataUrl The base64-encoded image URI\n\t */\n\tinsert(dataUrl) {\n\t\tconst index = (this.quill.getSelection() || {}).index || this.quill.getLength();\n\t\tthis.quill.insertEmbed(index, 'image', dataUrl, 'user');\n\t}\n\n\t/**\n\t * Extract image URIs a list of files from evt.dataTransfer or evt.clipboardData\n\t * @param {File[]} files One or more File objects\n\t * @param {Function} callback A function to send each data URI to\n\t */\n\treadFiles(files, callback) {\n\t\t// check each file for an image\n\t\t[].forEach.call(files, file => {\n\t\t\tif (!file.type.match(/^image\\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\\.microsoft\\.icon)/i)) {\n\t\t\t\t// file is not an image\n\t\t\t\t// Note that some file formats such as psd start with image/* but are not readable\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// set up file reader\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = (evt) => {\n\t\t\t\tcallback(evt.target.result);\n\t\t\t};\n\t\t\t// read the clipboard item or file\n\t\t\tconst blob = file.getAsFile ? file.getAsFile() : file;\n\t\t\tif (blob instanceof Blob) {\n\t\t\t\treader.readAsDataURL(blob);\n\t\t\t}\n\t\t});\n\t}\n\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/editor/package.json b/editor/package.json index 98fdbe0..d57ec92 100644 --- a/editor/package.json +++ b/editor/package.json @@ -1,5 +1,5 @@ { - "name": "Collab Quill Editor", + "name": "Collab-Quill-Editor", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/editor/quill.js b/editor/quill.js index 01e8822..5748d65 100644 --- a/editor/quill.js +++ b/editor/quill.js @@ -23,8 +23,8 @@ Quill.register({ window.addEventListener('load', () => { const ydoc = new Y.Doc() - var provider = new WebsocketProvider('ws://localhost:9000', 'quill', ydoc) - const type = ydoc.getText('quill') + var provider = new WebsocketProvider('ws://localhost:9000', documentUUID, ydoc) + const type = ydoc.getText(documentUUID) let editor = new Quill('#full-container .editor', { bounds: '#full-container .editor', @@ -36,14 +36,15 @@ window.addEventListener('load', () => { 'tableUI': true, 'magicUrl': true, 'imageDrop': true, - 'blotFormatter': { - - } + 'blotFormatter': {} }, theme: 'snow' }); + editorInstance = editor + providerInstance = provider + const binding = new QuillBinding(type, editor, provider.awareness) provider.awareness.setLocalStateField('user', { @@ -90,4 +91,41 @@ window.addEventListener('load', () => { tippy('.ql-clean', { content: 'Biçimlendirmeyi Temizle' }) -}) \ No newline at end of file + + + // Auto-save AJAX + let save = () => { + $.ajax(saveRoute, { + type: 'POST', + data: { + '_token': csrfToken, + 'data': $(".ql-editor").html() + }, + success: function (data, status, xhr) { + //console.log('status: ' + status + ', data: ' + data); + }, + error: function (jqXhr, textStatus, errorMessage) { + clearInterval(saveLoop); + console.log('Error' + errorMessage); + } + }) + } + + let saveLoop = setInterval(() => { + save() + }, 9999999) + + let checker = false; + + $(".editor").keypress(function () { + if (!checker) { + clearInterval(saveLoop) + saveLoop = setInterval(() => { + save() + }, 8000) + checker = true + } + + }) +}) + diff --git a/server/app/Http/Controllers/API/DocumentController.php b/server/app/Http/Controllers/API/DocumentController.php new file mode 100644 index 0000000..bdd74fc --- /dev/null +++ b/server/app/Http/Controllers/API/DocumentController.php @@ -0,0 +1,21 @@ +first(); + + $document->update([ + 'content' => $request->data + ]); + + return response()->json(['message' => 'Success', 'state' => 'ok']); + } +} diff --git a/server/app/Http/Livewire/Document/Show.php b/server/app/Http/Livewire/Document/Show.php index 93d6805..ab70a01 100644 --- a/server/app/Http/Livewire/Document/Show.php +++ b/server/app/Http/Livewire/Document/Show.php @@ -12,15 +12,10 @@ class Show extends Component public function newDocumentCreated($documents) { - if (!$documents) - { - $this->documents = auth()->user()->document() + $this->documents = auth()->user()->document() ->orderBy('updated_at', 'DESC') ->where('folder_id', null) ->get(); - } else { - $this->documents = $documents; - } } public function mount($documents) diff --git a/server/app/Http/Livewire/Folder/Show.php b/server/app/Http/Livewire/Folder/Show.php index 985bfe1..7bb1471 100644 --- a/server/app/Http/Livewire/Folder/Show.php +++ b/server/app/Http/Livewire/Folder/Show.php @@ -12,12 +12,7 @@ class Show extends Component public function newFolderCreated($folders, $folderId) { - if(!$folders) - { - $this->folders = auth()->user()->folder()->where('parent_folder_id', null)->orderBy('updated_at', 'DESC')->get(); - } else { - $this->folders = auth()->user()->folder()->where('parent_folder_id', $folderId)->orderBy('updated_at', 'DESC')->get(); - } + $this->folders = auth()->user()->folder()->where('parent_folder_id', null)->orderBy('updated_at', 'DESC')->get(); } public function mount($folders, $folderId) diff --git a/server/public/editor/highlight.min.js b/server/public/editor/highlight.min.js new file mode 100644 index 0000000..532ae2a --- /dev/null +++ b/server/public/editor/highlight.min.js @@ -0,0 +1,1296 @@ +/* + Highlight.js 10.5.0 (af20048d) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{constructor(){this.rootNode={ +children:[]},this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},N=v("//","$"),w=v("/\\*","\\*/"),R=v("#","$");var y=Object.freeze({ +__proto__:null,IDENT_RE:g,UNDERSCORE_IDENT_RE:d,NUMBER_RE:h,C_NUMBER_RE:f, +BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:N, +C_BLOCK_COMMENT_MODE:w,HASH_COMMENT_MODE:R,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp", +begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords) +}function M(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function O(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t){return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function I(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>RegExp(e.toString()+"|").exec("").length-1)(e)+1}compile(){ +0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[O].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,M,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern),s.keywords&&(s.keywords=((e,t)=>{const n={} +;return"string"==typeof e?s("keyword",e):Object.keys(e).forEach((t=>{s(t,e[t]) +})),n;function s(e,s){t&&(s=s.toLowerCase()),s.split(" ").forEach((t=>{ +const s=t.split("|");n[s[0]]=[e,B(s[0],s[1])]}))} +})(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:T(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function T(e){ +return!!e&&(e.endsWithParent||T(e.starts))}function j(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const S={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=D(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,D(a),n)}};function P(e){ +return e.nodeName.toLowerCase()}function D(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),P(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const C=e=>{console.error(e) +},H=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},U=r,z=a,K=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;_("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,_("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=_.subLanguage?(()=>{if(""===O)return;let e=null +;if("string"==typeof _.subLanguage){ +if(!n[_.subLanguage])return void M.addText(O) +;e=f(_.subLanguage,O,!0,k[_.subLanguage]),k[_.subLanguage]=e.top +}else e=p(O,_.subLanguage.length?_.subLanguage:null) +;_.relevance>0&&(A+=e.relevance),M.addSublanguage(e.emitter,e.language) +})():(()=>{if(!_.keywords)return void M.addText(O);let e=0 +;_.keywordPatternRe.lastIndex=0;let t=_.keywordPatternRe.exec(O),n="";for(;t;){ +n+=O.substring(e,t.index);const s=u(_,t);if(s){const[e,r]=s +;M.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;M.addKeyword(t[0],a) +}else n+=t[0];e=_.keywordPatternRe.lastIndex,t=_.keywordPatternRe.exec(O)} +n+=O.substr(e),M.addText(n)})(),O=""}function h(e){ +return e.className&&M.openNode(w.classNameAliases[e.className]||e.className), +_=Object.create(e,{parent:{value:_}}),_}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===_.matcher.regexIndex?(O+=e[0],1):(T=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(_,e,n);if(!s)return K;const r=_ +;r.skip?O+=t:(r.returnEnd||r.excludeEnd||(O+=t),d(),r.excludeEnd&&(O=t));do{ +_.className&&M.closeNode(),_.skip||_.subLanguage||(A+=_.relevance),_=_.parent +}while(_!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(O+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(O+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?O+=t:(n.excludeBegin&&(O+=t), +d(),n.returnBegin||n.excludeBegin||(O=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(_.className||"")+'"') +;throw e.mode=_,e}if("end"===n.type){const e=x(n);if(e!==K)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return O+=a,a.length}const w=N(e) +;if(!w)throw C(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const R=I(w,{plugins:a});let y="",_=o||R;const k={},M=new g.__emitter(g);(()=>{ +const e=[];for(let t=_;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>M.openNode(e)))})();let O="",A=0,L=0,B=0,T=!1;try{ +for(_.matcher.considerAll();;){ +B++,T?T=!1:_.matcher.considerAll(),_.matcher.lastIndex=L +;const e=_.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),M.closeAllNodes(),M.finalize(),y=M.toHTML(),{ +relevance:A,value:y,language:e,illegal:!1,emitter:M,top:_}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:U(c),emitter:M};if(i)return{illegal:!1,relevance:0,value:U(c),emitter:M, +language:e,top:_,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:U(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(N).filter(R).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(N(e.language).supersetOf===t.language)return 1 +;if(N(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
    "))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=N(n[1]) +;return t||(H(l.replace("{}",n[1])),H("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||N(e)))})(e) +;if(d(n))return;_("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);_("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,a.language),e.result={ +language:a.language,re:a.relevance,relavance:a.relevance +},a.second_best&&(e.second_best={language:a.second_best.language, +re:a.second_best.relevance,relavance:a.second_best.relevance})}const v=()=>{ +v.called||(v.called=!0,document.querySelectorAll("pre code").forEach(E))} +;function N(e){return e=(e||"").toLowerCase(),n[e]||n[r[e]]} +function w(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t +}))}function R(e){const t=N(e);return t&&!t.disableAutodetect}function _(e,t){ +const n=e;a.forEach((e=>{e[n]&&e[n](t)}))}Object.assign(e,{highlight:h, +highlightAuto:p,fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"), +$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
    ":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=z(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +window.addEventListener("DOMContentLoaded",v,!1)},registerLanguage:(t,s)=>{ +let r=null;try{r=s(e)}catch(e){ +if(C("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;C(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&w(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:N, +registerAliases:w,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=N(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:R,inherit:z,addPlugin:e=>{a.push(e)},vuePlugin:j(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.5.0" +;for(const e in y)"object"==typeof y[e]&&t(y[e]) +;return Object.assign(e,y),e.addPlugin(m),e.addPlugin(S),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const n={ +className:"number",begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/} +;return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0, +contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/, +contains:[n,{className:"number",begin:/:\d{1,5}/ +},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute", +begin:/\w+/,relevance:0,keywords:{ +nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername" +},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"}, +contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable", +begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}] +},n,{className:"number",begin:/\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}} +})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/, +keyword:"if then else elif fi for while in do done case esac function", +literal:"true false", +built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("c",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=(t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",s={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},i={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},t.inherit(i,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary", +literal:"true false nullptr NULL"},m=[c,s,n,t.C_BLOCK_COMMENT_MODE,o,i],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,i,o,s,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,i,o,s]}] +},s,n,t.C_BLOCK_COMMENT_MODE,c]};return{ +aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:u, +disableAutodetect:!0,illegal:"",keywords:u,contains:["self",s]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:i,keywords:u}}})(t) +;return n.name="C",n.aliases=["c","h"],n}})()); +hljs.registerLanguage("coffeescript",(()=>{"use strict" +;const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]) +;return r=>{const t={ +keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((i=["var","const","let","function","static"], +e=>!i.includes(e))).join(" "), +literal:n.concat(["yes","no","on","off"]).join(" "), +built_in:a.concat(["npm","print"]).join(" ")};var i +;const s="[A-Za-z$_][0-9A-Za-z$_]*",o={className:"subst",begin:/#\{/,end:/\}/, +keywords:t},c=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{ +end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/, +end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/, +contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/, +contains:[r.BACKSLASH_ESCAPE,o]},{begin:/"/,end:/"/, +contains:[r.BACKSLASH_ESCAPE,o]}]},{className:"regexp",variants:[{begin:"///", +end:"///",contains:[o,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)", +relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+s +},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{ +begin:"```",end:"```"},{begin:"`",end:"`"}]}];o.contains=c +;const l=r.inherit(r.TITLE_MODE,{begin:s}),d="(\\(.*\\)\\s*)?\\B[-=]>",g={ +className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/, +end:/\)/,keywords:t,contains:["self"].concat(c)}]};return{name:"CoffeeScript", +aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/, +contains:c.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{ +className:"function",begin:"^\\s*"+s+"\\s*=\\s*"+d,end:"[-=]>",returnBegin:!0, +contains:[l,g]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function", +begin:d,end:"[-=]>",returnBegin:!0,contains:[g]}]},{className:"class", +beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{ +beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[l]},l] +},{begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=(t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",s={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},i={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},c={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},t.inherit(i,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary", +literal:"true false nullptr NULL"},p=[o,s,n,t.C_BLOCK_COMMENT_MODE,c,i],m={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:p.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:p.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,i,c,s,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,i,c,s]}] +},s,n,t.C_BLOCK_COMMENT_MODE,o]};return{ +aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:u, +disableAutodetect:!0,illegal:"",keywords:u,contains:["self",s]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:o,strings:i,keywords:u}}})(t) +;return n.disableAutodetect=!1,n.name="C++", +n.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],n}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]).join(" "), +built_in:"bool byte char decimal delegate double dynamic enum float int long nint nuint object sbyte short string ulong unit ushort", +literal:"default false null true"},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),i={className:"number",variants:[{ +begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={ +begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], +keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, +contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{ +begin:"\x3c!--|--\x3e"},{begin:""}]}] +}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#", +end:"$",keywords:{ +"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta", +begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{ +className:"meta-string",begin:/"/,end:/"/}]},{ +beginKeywords:"new return throw await else",relevance:0},{className:"function", +begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0, +end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{begin:e.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0, +contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, +contains:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict";return e=>{ +var n="[a-zA-Z-][a-zA-Z0-9_-]*",a={ +begin:/([*]\s?)?(?:[A-Z_.\-\\]+|--[a-zA-Z0-9_-]+)\s*(\/\*\*\/)?:/, +returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute", +begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0, +contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in", +begin:/[\w-]+/},{begin:/\(/,end:/\)/, +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}] +},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}] +}}]};return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/, +contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id", +begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:"\\."+n},{ +className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},{className:"selector-pseudo", +begin:/:(:)?[a-zA-Z0-9_+()"'.-]+/},{begin:"@(page|font-face)", +lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]", +illegal:/:/,returnBegin:!0,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:"and or not only",contains:[{begin:/[a-z-]+:/, +className:"attribute"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE] +}]},{className:"selector-tag",begin:n,relevance:0},{begin:/\{/,end:/\}/, +illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,{begin:/;/},a]}]}}})()); +hljs.registerLanguage("diff",(()=>{"use strict";return e=>({name:"Diff", +aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{ +begin:/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{ +begin:/^--- +\d+,\d+ +----$/}]},{className:"comment",variants:[{begin:/Index: /, +end:/$/},{begin:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const n={ +keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune", +literal:"true false iota nil", +built_in:"append cap close complex copy imag len make new panic print println real recover delete" +};return{name:"Go",aliases:["golang"],keywords:n,illegal:"{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const t={ +className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/ +}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={ +className:"string",contains:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"self"], +relevance:0 +},g="("+[/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/].map((n=>e(n))).join("|")+")" +;return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, +contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{ +begin:n(g,"(\\s*\\.\\s*",g,")*",n("(?=",/\s*=\s*[^#\s]/,")")),className:"attr", +starts:{end:/$/,contains:[i,c,r,t,l,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,keywords:"class interface enum",illegal:/[:"\[\]]/,contains:[{ +beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]) +;function r(e){return i("(?=",e,")")}function i(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return t=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",t.inherit(t.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,t.inherit(t.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[t.inherit(t.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("kotlin",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},i={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},t={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[t,s]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},c={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"meta-string"})]}] +},o=a,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d], +{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{ +relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}] +}),e.C_LINE_COMMENT_MODE,b,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},i,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0 +},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:"class", +beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/, +excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},o]}}})()); +hljs.registerLanguage("less",(()=>{"use strict";return e=>{ +var n="([\\w-]+|@\\{[\\w-]+\\})",a=[],s=[],t=e=>({className:"string", +begin:"~?"+e+".*?"+e}),r=(e,n,a)=>({className:e,begin:n,relevance:a}),i={ +begin:"\\(",end:"\\)",contains:s,relevance:0} +;s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{ +begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", +excludeEnd:!0} +},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@\\{[\\w-]+\\}"),r("built_in","~?`[^`]*?`"),{ +className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0 +},{className:"meta",begin:"!important"});var c=s.concat({begin:/\{/,end:/\}/, +contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{ +beginKeywords:"and not"}].concat(s)},g={begin:n+"\\s*:",returnBegin:!0, +end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":", +excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s} +}]},d={className:"keyword", +begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", +starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},o={ +className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{ +begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{ +begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:/\{/}],returnBegin:!0, +returnEnd:!0,illegal:"[<='$\"]",relevance:0, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@\\{[\\w-]+\\}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{ +className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo", +begin:/:(:)?[a-zA-Z0-9_\-+()"'.]+/},{begin:"\\(",end:"\\)",contains:c},{ +begin:"!important"}]} +;return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,o,g,b),{ +name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE, +literal:"true false nil", +keyword:"and break do else elseif end for goto if in local not or repeat return then until while", +built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" +},contains:o.concat([{className:"function",beginKeywords:"function",end:"\\)", +contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", +begin:"\\(",endsWithParent:!0,contains:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(e){return a("(?=",e,")")} +function a(...n){return n.map((n=>e(n))).join("")}function s(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]+:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};return{name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,contains:[{className:"meta",begin://, +relevance:10,contains:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("markdown",(()=>{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const n={ +className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/\}/},{ +begin:/[$@]/+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{ +$pattern:"[a-z/_]+", +literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll" +},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string", +contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/ +}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n] +},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^", +end:"\\s|\\{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|\\{|;",returnEnd:!0},{ +begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number", +begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{ +className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{ +name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{ +begin:e.UNDERSCORE_IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\{/,contains:[{ +className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|\\{",returnBegin:!0,contains:[{ +className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}], +illegal:"[^\\s\\}]"}}})()); +hljs.registerLanguage("objectivec",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], +keywords:{$pattern:n, +keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN", +literal:"false true FALSE TRUE nil YES NO NULL", +built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once" +},illegal:"/,end:/$/, +illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:/(\{|$)/, +excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{ +begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}})()); +hljs.registerLanguage("perl",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const t=/[dualxmsipn]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when" +},r={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},i={begin:/->\{/, +end:/\}/},a={variants:[{begin:/\$\d/},{ +begin:e(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},o=[n.BACKSLASH_ESCAPE,r,a],c=[a,n.HASH_COMMENT_MODE,n.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),i,{className:"string",contains:o,variants:[{ +begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", +end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ +begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", +relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", +contains:[n.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", +contains:[n.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,contains:[],relevance:0},{ +begin:"-?\\w+\\s*=>",contains:[],relevance:0}]},{className:"number", +begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", +relevance:0},{ +begin:"(\\/\\/|"+n.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", +keywords:"split return print reverse grep",relevance:0, +contains:[n.HASH_COMMENT_MODE,{className:"regexp", +begin:e(/(s|tr|y)/,/\//,/(\\.|[^\\\/])*/,/\//,/(\\.|[^\\\/])*/,/\//,t), +relevance:10},{className:"regexp",begin:/(m|qr)?\//,end:e(/\//,t), +contains:[n.BACKSLASH_ESCAPE],relevance:0}]},{className:"function", +beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5, +contains:[n.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$", +end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$", +className:"comment"}]}];return r.contains=c,i.contains=c,{name:"Perl", +aliases:["pl","pm"],keywords:s,contains:c}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 new object or private protected public real return string switch throw trait try unset use var void while xor yield", +literal:"false null true", +built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass" +};return{aliases:["php","php3","php4","php5","php6","php7","php8"], +case_insensitive:!0,keywords:s, +contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t] +}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}] +}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0, +keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("php-template",(()=>{"use strict";return n=>({ +name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/, +subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"', +end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{ +illegal:null,className:null,contains:null,skip:!0 +}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null, +skip:!0})]}]})})()); +hljs.registerLanguage("plaintext",(()=>{"use strict";return t=>({ +name:"Plain text",aliases:["text","txt"],disableAutodetect:!0})})()); +hljs.registerLanguage("properties",(()=>{"use strict";return e=>{ +var n="[ \\t\\f]*",a=n+"[:=]"+n,t="("+a+"|[ \\t\\f]+)",r="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",s="([^\\\\:= \\t\\f\\n]|\\\\.)+",i={ +end:t,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{ +begin:"\\\\\\\\"},{begin:"\\\\\\n"}]}};return{name:".properties", +case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{ +returnBegin:!0,variants:[{begin:r+a,relevance:1},{begin:r+"[ \\t\\f]+", +relevance:0}],contains:[{className:"attr",begin:r,endsParent:!0,relevance:0}], +starts:i},{begin:s+t,returnBegin:!0,relevance:0,contains:[{className:"meta", +begin:s,endsParent:!0,relevance:0}],starts:i},{className:"attr",relevance:0, +begin:s+n+"$"}]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:"and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal|10 not or pass raise return try while with yield", +built_in:"__import__ abs all any ascii bin bool breakpoint bytearray bytes callable chr classmethod compile complex delattr dict dir divmod enumerate eval exec filter float format frozenset getattr globals hasattr hash help hex id input int isinstance issubclass iter len list locals map max memoryview min next object oct open ord pow print property range repr reversed round set setattr slice sorted staticmethod str sum super tuple type vars zip", +literal:"__debug__ Ellipsis False None NotImplemented True"},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function", +beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/, +illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("python-repl",(()=>{"use strict";return s=>({ +aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$", +subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{ +begin:/^\.\.\.(?=[ ]|$)/}]}]})})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +var a,i="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s={ +keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__", +built_in:"proc lambda",literal:"true false nil"},r={className:"doctag", +begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},t=[n.COMMENT("#","$",{contains:[r] +}),n.COMMENT("^=begin","^=end",{contains:[r],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:s},d={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",l={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},o={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:s},_=[d,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE}]}].concat(t)},{className:"function", +begin:e(/def\s*/,(a=i+"\\s*(\\(|;|$)",e("(?=",a,")"))),keywords:"def",end:"$|;", +contains:[n.inherit(n.TITLE_MODE,{begin:i}),o].concat(t)},{begin:n.IDENT_RE+"::" +},{className:"symbol",begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{ +className:"symbol",begin:":(?!\\s)",contains:[d,{begin:i}],relevance:0},l,{ +className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:s},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{ +begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(", +end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}] +}].concat(b,t),relevance:0}].concat(b,t);c.contains=_,o.contains=_;var E=[{ +begin:/^\s*=>/,starts:{end:"$",contains:_}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:_}}];return t.unshift(b),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(t).concat(_)}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!" +;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?", +keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield", +literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}})()); +hljs.registerLanguage("scss",(()=>{"use strict";return e=>{var t="@[a-z-]+",i={ +className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},r={ +className:"number",begin:"#[0-9A-Fa-f]+"} +;return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE, +e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0, +illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{ +className:"selector-tag", +begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b", +relevance:0},{className:"selector-pseudo", +begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)" +},{className:"selector-pseudo", +begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)" +},i,{className:"attribute", +begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b", +illegal:"[^\\s]"},{ +begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" +},{begin:":",end:";", +contains:[i,r,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{ +className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:t, +keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0, +keywords:"and or not only",contains:[{begin:t,className:"keyword" +},i,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,r,e.CSS_NUMBER_MODE]}]}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c.join(" ")}};return{ +name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ +$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}).join(" "),literal:a.join(" "),type:i.join(" "), +built_in:"current_catalog current_date current_default_transform_group current_path current_role current_schema current_transform_group_for_type current_user session_user system_time system_user current_time localtime current_timestamp localtimestamp" +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/, +keyword:l.concat(o).join(" "),literal:a.join(" "),type:i.join(" ")}},{ +className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("swift",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(e){return i("(?=",e,")")} +function i(...n){return n.map((n=>e(n))).join("")}function a(...n){ +return"("+n.map((n=>e(n))).join("|")+")"} +const t=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),u=["Protocol","Type"].map(t),s=["init","self"].map(t),r=["Any","Self"],o=["associatedtype",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough","fileprivate(set)","fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout","internal(set)","internal","in","is","lazy","let","mutating","nonmutating","open(set)","open","operator","optional","override","postfix","precedencegroup","prefix","private(set)","private","protocol","public(set)","public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias","unowned(safe)","unowned(unsafe)","unowned","var","weak","where","while","willSet"],l=["false","nil","true"],c=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],b=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],p=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=a(p,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),d=i(p,F,"*"),g=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFFFD]/),f=a(g,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),m=i(g,f,"*"),w=i(/[A-Z]/,f,"*"),E=["autoclosure",i(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,m,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","testable","UIApplicationMain","unknown","usableFromInline"],y=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;return e=>{const p=e.COMMENT("/\\*","\\*/",{contains:["self"]}),g={ +className:"keyword",begin:i(/\./,n(a(...u,...s))),end:a(...u,...s), +excludeBegin:!0},A={begin:i(/\./,a(...o)),relevance:0 +},C=o.filter((e=>"string"==typeof e)).concat(["_|0"]),v={variants:[{ +className:"keyword", +begin:a(...o.filter((e=>"string"!=typeof e)).concat(r).map(t),...s)}]},_={ +$pattern:a(/\b\w+(\(\w+\))?/,/#\w+/),keyword:C.concat(c).join(" "), +literal:l.join(" ")},N=[g,A,v],D=[{begin:i(/\./,a(...b)),relevance:0},{ +className:"built_in",begin:i(/\b/,a(...b),/(?=\()/)}],B={begin:/->/,relevance:0 +},M=[B,{className:"operator",relevance:0,variants:[{begin:d},{ +begin:`\\.(\\.|${F})+`}]}],h="([0-9a-fA-F]_*)+",S={className:"number", +relevance:0,variants:[{ +begin:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +begin:`\\b0x(${h})(\\.(${h}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +begin:/\b0o([0-7]_*)+\b/},{begin:/\b0b([01]_*)+\b/}]},O=(e="")=>({ +className:"subst",variants:[{begin:i(/\\/,e,/[0\\tnr"']/)},{ +begin:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),x=(e="")=>({className:"subst", +begin:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),k=(e="")=>({className:"subst", +label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),L=(e="")=>({begin:i(e,/"""/), +end:i(/"""/,e),contains:[O(e),x(e),k(e)]}),I=(e="")=>({begin:i(e,/"/), +end:i(/"/,e),contains:[O(e),k(e)]}),$={className:"string", +variants:[L(),L("#"),L("##"),L("###"),I(),I("#"),I("##"),I("###")]},T=[{ +begin:i(/`/,m,/`/)},{className:"variable",begin:/\$\d+/},{className:"variable", +begin:`\\$${f}+`}],j=[{begin:/(@|#)available\(/,end:/\)/,keywords:{ +$pattern:/[@#]?\w+/,keyword:y.concat(["@available","#available"]).join(" ")}, +contains:[...M,S,$]},{className:"keyword",begin:i(/@/,a(...E))},{ +className:"meta",begin:i(/@/,m)}],K={begin:n(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +begin:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+") +},{className:"type",begin:w,relevance:0},{begin:/[?!]+/,relevance:0},{ +begin:/\.\.\./,relevance:0},{begin:i(/\s+&\s+/,n(w)),relevance:0}]},P={ +begin://,keywords:_,contains:[...N,...j,B,K]};K.contains.push(P) +;for(const e of $.variants){const n=e.contains.find((e=>"interpol"===e.label)) +;n.keywords=_;const i=[...N,...D,...M,S,$,...T];n.contains=[...i,{begin:/\(/, +end:/\)/,contains:["self",...i]}]}return{name:"Swift",keywords:_, +contains:[e.C_LINE_COMMENT_MODE,p,{className:"function",beginKeywords:"func", +end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{ +begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params", +begin:/\(/,end:/\)/,endsParent:!0,keywords:_, +contains:["self",...N,S,$,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}], +illegal:/\[|%/},{className:"class", +beginKeywords:"struct protocol class extension enum",end:"\\{",excludeEnd:!0, +keywords:_,contains:[e.inherit(e.TITLE_MODE,{ +begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...N]},{beginKeywords:"import", +end:/$/,contains:[e.C_LINE_COMMENT_MODE,p],relevance:0 +},...N,...D,...M,S,$,...T,...j,K]}}})()); +hljs.registerLanguage("typescript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]) +;function t(e){return i("(?=",e,")")}function i(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return r=>{ +const c={$pattern:e, +keyword:n.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "), +literal:a.join(" "), +built_in:s.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ") +},o={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},l=(e,n,a)=>{ +const s=e.contains.findIndex((e=>e.label===n)) +;if(-1===s)throw Error("can not find mode to replace");e.contains.splice(s,1,a) +},b=(r=>{const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const a=e[0].length+e.index,s=e.input[a];"<"!==s?">"===s&&(((e,{after:n})=>{ +const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:r.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:f}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",r.inherit(r.TITLE_MODE,{begin:c}),A],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:r.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[A,r.inherit(r.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},r.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[r.inherit(r.TITLE_MODE,{begin:c}),"self",A] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[r.inherit(r.TITLE_MODE,{begin:c}),{begin:/\(\)/},A]},{begin:/\$[(.]/}] +}})(r) +;return Object.assign(b.keywords,c),b.exports.PARAMS_CONTAINS.push(o),b.contains=b.contains.concat([o,{ +beginKeywords:"namespace",end:/\{/,excludeEnd:!0},{beginKeywords:"interface", +end:/\{/,excludeEnd:!0,keywords:"interface extends" +}]),l(b,"shebang",r.SHEBANG()),l(b,"use_strict",{className:"meta",relevance:10, +begin:/^\s*['"]use strict['"]/ +}),b.contains.find((e=>"function"===e.className)).relevance=0,Object.assign(b,{ +name:"TypeScript",aliases:["ts"]}),b}})()); +hljs.registerLanguage("vbnet",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const a=/\d{1,2}\/\d{1,2}\/\d{4}/,i=/\d{4}-\d{1,2}-\d{1,2}/,s=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,o={ +className:"literal",variants:[{begin:n(/# */,t(i,a),/ *#/)},{ +begin:n(/# */,r,/ *#/)},{begin:n(/# */,s,/ *#/)},{ +begin:n(/# */,t(i,a),/ +/,t(s,r),/ *#/)}]},l=e.COMMENT(/'''/,/$/,{contains:[{ +className:"doctag",begin:/<\/?/,end:/>/}]}),c=e.COMMENT(null,/$/,{variants:[{ +begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET", +aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{ +keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", +built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", +type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", +literal:"true false nothing"}, +illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{ +className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/, +end:/"/,illegal:/\n/,contains:[{begin:/""/}]},o,{className:"number",relevance:0, +variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ +},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{ +begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{ +className:"label",begin:/^\w+:/},l,c,{className:"meta", +begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, +end:/$/,keywords:{ +"meta-keyword":"const disable else elseif enable end externalsource if region then" +},contains:[c]}]}}})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return e=>{ +var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={ +begin:/\{/,end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[", +end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr", +variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{ +begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)" +}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type", +begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/server/public/editor/quill.bundle.js b/server/public/editor/quill.bundle.js new file mode 100644 index 0000000..3ae745f --- /dev/null +++ b/server/public/editor/quill.bundle.js @@ -0,0 +1,760 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/quill/dist/",n(n.s=38)}([function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return c})),n.d(t,"h",(function(){return u})),n.d(t,"j",(function(){return d})),n.d(t,"m",(function(){return f})),n.d(t,"l",(function(){return h})),n.d(t,"k",(function(){return m})),n.d(t,"n",(function(){return b})),n.d(t,"i",(function(){return v})),n.d(t,"c",(function(){return E})),n.d(t,"e",(function(){return w})),n.d(t,"b",(function(){return k})),n.d(t,"d",(function(){return P}));var r=n(5),o=n(3),i=n(2);Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,i.h;const s=Number.isInteger||(e=>"number"==typeof e&&isFinite(e)&&o.c(e)===e);Number.isNaN;class a{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const l=()=>new a,c=e=>{let t=e.cpos;for(let n=0;n{const t=new Uint8Array(c(e));let n=0;for(let r=0;r{const n=e.cbuf.length;e.cpos===n&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(2*n),e.cpos=0),e.cbuf[e.cpos++]=t},d=_,f=(e,t)=>{for(;t>i.k;)_(e,i.g|i.k&t),t>>>=7;_(e,i.k&t)},p=(e,t)=>{const n=o.d(t);for(n&&(t=-t),_(e,(t>i.j?i.g:0)|(n?i.f:0)|i.j&t),t>>>=6;t>0;)_(e,(t>i.k?i.g:0)|i.k&t),t>>>=7},h=(e,t)=>{const n=unescape(encodeURIComponent(t)),r=n.length;f(e,r);for(let t=0;t{const n=e.cbuf.length,r=e.cpos,i=o.g(n-r,t.length),s=t.length-i;e.cbuf.set(t.subarray(0,i),r),e.cpos+=i,s>0&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(o.f(2*n,s)),e.cbuf.set(t.subarray(i)),e.cpos=s)},b=(e,t)=>{f(e,t.byteLength),m(e,t)},y=(e,t)=>{((e,t)=>{const n=e.cbuf.length;n-e.cpos{switch(typeof t){case"string":_(e,119),h(e,t);break;case"number":s(t)&&t<=i.h?(_(e,125),p(e,t)):(n=t,g.setFloat32(0,n),g.getFloat32(0)===n?(_(e,124),((e,t)=>{y(e,4).setFloat32(0,t)})(e,t)):(_(e,123),((e,t)=>{y(e,8).setFloat64(0,t)})(e,t)));break;case"bigint":_(e,122),((e,t)=>{y(e,8).setBigInt64(0,t)})(e,t);break;case"object":if(null===t)_(e,126);else if(t instanceof Array){_(e,117),f(e,t.length);for(let n=0;n0&&f(this,this.count-1),this.count=1,this.w(this,e),this.s=e)}}const x=e=>{e.count>0&&(p(e.encoder,1===e.count?e.s:-e.s),e.count>1&&f(e.encoder,e.count-2))};class w{constructor(){this.encoder=new a,this.s=0,this.count=0}write(e){this.s===e?this.count++:(x(this),this.count=1,this.s=e)}toUint8Array(){return x(this),u(this.encoder)}}const O=e=>{if(e.count>0){const t=e.diff<<1|(1===e.count?0:1);p(e.encoder,t),e.count>1&&f(e.encoder,e.count-2)}};class k{constructor(){this.encoder=new a,this.s=0,this.count=0,this.diff=0}write(e){this.diff===e-this.s?(this.s=e,this.count++):(O(this),this.count=1,this.diff=e-this.s,this.s=e)}toUint8Array(){return O(this),u(this.encoder)}}class P{constructor(){this.sarr=[],this.s="",this.lensE=new w}write(e){this.s+=e,this.s.length>19&&(this.sarr.push(this.s),this.s=""),this.lensE.write(e.length)}toUint8Array(){const e=new a;return this.sarr.push(this.s),this.s="",h(e,this.sarr.join("")),m(e,this.lensE.toUint8Array()),u(e)}}},function(e,t,n){"use strict";n.d(t,"e",(function(){return a})),n.d(t,"j",(function(){return u})),n.d(t,"g",(function(){return _})),n.d(t,"i",(function(){return d})),n.d(t,"h",(function(){return p})),n.d(t,"f",(function(){return b})),n.d(t,"b",(function(){return y})),n.d(t,"d",(function(){return g})),n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return E}));var r=n(5),o=n(2),i=n(3);class s{constructor(e){this.arr=e,this.pos=0}}const a=e=>new s(e),l=e=>e.pos!==e.arr.length,c=(e,t)=>{const n=r.c(e.arr.buffer,e.pos+e.arr.byteOffset,t);return e.pos+=t,n},u=e=>c(e,d(e)),_=e=>e.arr[e.pos++],d=e=>{let t=0,n=0;for(;;){const r=e.arr[e.pos++];if(t|=(r&o.k)<>>0;if(n>35)throw new Error("Integer out of range!")}},f=e=>{let t=e.arr[e.pos++],n=t&o.j,r=6;const i=(t&o.f)>0?-1:1;if(0==(t&o.g))return i*n;for(;;){if(t=e.arr[e.pos++],n|=(t&o.k)<>>0);if(r>41)throw new Error("Integer out of range!")}},p=e=>{let t=d(e);if(0===t)return"";{let n=String.fromCodePoint(_(e));if(--t<100)for(;t--;)n+=String.fromCodePoint(_(e));else for(;t>0;){const r=t<1e4?t:1e4,o=e.arr.subarray(e.pos,e.pos+r);e.pos+=r,n+=String.fromCodePoint.apply(null,o),t-=r}return decodeURIComponent(escape(n))}},h=(e,t)=>{const n=new DataView(e.arr.buffer,e.arr.byteOffset+e.pos,t);return e.pos+=t,n},m=[e=>{},e=>null,f,e=>h(e,4).getFloat32(0),e=>h(e,8).getFloat64(0),e=>h(e,8).getBigInt64(0),e=>!1,e=>!0,p,e=>{const t=d(e),n={};for(let r=0;r{const t=d(e),n=[];for(let r=0;rm[127-_(e)](e);class y extends s{constructor(e,t){super(e),this.reader=t,this.s=null,this.count=0}read(){return 0===this.count&&(this.s=this.reader(this),l(this)?this.count=d(this)+1:this.count=-1),this.count--,this.s}}class g extends s{constructor(e){super(e),this.s=0,this.count=0}read(){if(0===this.count){this.s=f(this);const e=i.d(this.s);this.count=1,e&&(this.s=-this.s,this.count=d(this)+2)}return this.count--,this.s}}class v extends s{constructor(e){super(e),this.s=0,this.count=0,this.diff=0}read(){if(0===this.count){const e=f(this),t=1&e;this.diff=e>>1,this.count=1,t&&(this.count=d(this)+2)}return this.s+=this.diff,this.count--,this.s}}class E{constructor(e){this.decoder=new g(e),this.str=p(this.decoder),this.spos=0}read(){const e=this.spos+this.decoder.read(),t=this.str.slice(this.spos,e);return this.spos=e,t}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return s})),n.d(t,"e",(function(){return a})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return c})),n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return _})),n.d(t,"k",(function(){return d})),n.d(t,"l",(function(){return f})),n.d(t,"h",(function(){return p}));const r=1,o=2,i=4,s=8,a=32,l=64,c=128,u=31,_=63,d=127,f=255,p=2147483647},function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return o})),n.d(t,"h",(function(){return i})),n.d(t,"e",(function(){return s})),n.d(t,"g",(function(){return a})),n.d(t,"f",(function(){return l})),n.d(t,"b",(function(){return c})),n.d(t,"d",(function(){return u}));const r=Math.floor,o=(Math.ceil,Math.abs),i=(Math.imul,Math.round),s=Math.log10,a=(Math.log2,Math.log,Math.sqrt,(e,t)=>ee>t?e:t,c=(Number.isNaN,Math.pow,e=>Math.pow(10,e)),u=(Math.sign,e=>0!==e?e<0:1/e<0)},function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"e",(function(){return i})),n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return a}));const r=()=>new Map,o=e=>{const t=r();return e.forEach((e,n)=>{t.set(n,e)}),t},i=(e,t,n)=>{let r=e.get(t);return void 0===r&&e.set(t,r=n()),r},s=(e,t)=>{const n=[];for(const[r,o]of e)n.push(t(o,r));return n},a=(e,t)=>{for(const[n,r]of e)if(t(r,n))return!0;return!1}},function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return s})),n.d(t,"b",(function(){return a})),n.d(t,"e",(function(){return l})),n.d(t,"d",(function(){return c})),n.d(t,"a",(function(){return u}));var r=n(11),o=n(8);n(0),n(1);const i=e=>new Uint8Array(e),s=(e,t,n)=>new Uint8Array(e,t,n),a=e=>new Uint8Array(e),l=o.b?e=>{let t="";for(let n=0;ne.from(t.buffer,t.byteOffset,t.byteLength).toString("base64"),c=o.b?e=>{const t=atob(e),n=i(t.length);for(let e=0;e{const n=e.from(t,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)},u=e=>{const t=i(e.byteLength);return t.set(e),t}}).call(this,n(32).Buffer)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};a(this,e),this.onClick=function(){n.hide()},this.quill=t,this.options=(0,o.default)(i.default,r,{arrayMerge:l}),this.currentSpec=null,this.actions=[],this.overlay=document.createElement("div"),this.overlay.classList.add(this.options.overlay.className),this.options.overlay.style&&Object.assign(this.overlay.style,this.options.overlay.style),document.execCommand("enableObjectResizing",!1,"false"),this.quill.root.parentNode.style.position=this.quill.root.parentNode.style.position||"relative",this.quill.root.addEventListener("click",this.onClick),this.specs=this.options.specs.map((function(e){return new e(n)})),this.specs.forEach((function(e){return e.init()}))}return r(e,[{key:"show",value:function(e){this.currentSpec=e,this.currentSpec.setSelection(),this.setUserSelect("none"),this.quill.root.parentNode.appendChild(this.overlay),this.repositionOverlay(),this.createActions(e)}},{key:"hide",value:function(){this.currentSpec&&(this.currentSpec.onHide(),this.currentSpec=null,this.quill.root.parentNode.removeChild(this.overlay),this.overlay.style.setProperty("display","none"),this.setUserSelect(""),this.destroyActions())}},{key:"update",value:function(){this.repositionOverlay(),this.actions.forEach((function(e){return e.onUpdate()}))}},{key:"createActions",value:function(e){var t=this;this.actions=e.getActions().map((function(e){var n=new e(t);return n.onCreate(),n}))}},{key:"destroyActions",value:function(){this.actions.forEach((function(e){return e.onDestroy()})),this.actions=[]}},{key:"repositionOverlay",value:function(){if(this.currentSpec){var e=this.currentSpec.getOverlayElement();if(e){var t=this.quill.root.parentNode,n=e.getBoundingClientRect(),r=t.getBoundingClientRect();Object.assign(this.overlay.style,{display:"block",left:n.left-r.left-1+t.scrollLeft+"px",top:n.top-r.top+t.scrollTop+"px",width:n.width+"px",height:n.height+"px"})}}}},{key:"setUserSelect",value:function(e){var t=this;["userSelect","mozUserSelect","webkitUserSelect","msUserSelect"].forEach((function(n){t.quill.root.style.setProperty(n,e),document.documentElement&&document.documentElement.style.setProperty(n,e)}))}}]),e}();t.default=c},function(module,exports,__webpack_require__){ +/*! + * Quill Editor v2.0.0-dev.3 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ +var factory;window,factory=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}({"./assets/icons/align-center.svg": +/*!***************************************!*\ + !*** ./assets/icons/align-center.svg ***! + \***************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/align-center.svg?')},"./assets/icons/align-justify.svg": +/*!****************************************!*\ + !*** ./assets/icons/align-justify.svg ***! + \****************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/align-justify.svg?')},"./assets/icons/align-left.svg": +/*!*************************************!*\ + !*** ./assets/icons/align-left.svg ***! + \*************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/align-left.svg?')},"./assets/icons/align-right.svg": +/*!**************************************!*\ + !*** ./assets/icons/align-right.svg ***! + \**************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/align-right.svg?')},"./assets/icons/background.svg": +/*!*************************************!*\ + !*** ./assets/icons/background.svg ***! + \*************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/background.svg?')},"./assets/icons/blockquote.svg": +/*!*************************************!*\ + !*** ./assets/icons/blockquote.svg ***! + \*************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/blockquote.svg?')},"./assets/icons/bold.svg": +/*!*******************************!*\ + !*** ./assets/icons/bold.svg ***! + \*******************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/bold.svg?')},"./assets/icons/clean.svg": +/*!********************************!*\ + !*** ./assets/icons/clean.svg ***! + \********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/clean.svg?')},"./assets/icons/code.svg": +/*!*******************************!*\ + !*** ./assets/icons/code.svg ***! + \*******************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/code.svg?')},"./assets/icons/color.svg": +/*!********************************!*\ + !*** ./assets/icons/color.svg ***! + \********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/color.svg?')},"./assets/icons/direction-ltr.svg": +/*!****************************************!*\ + !*** ./assets/icons/direction-ltr.svg ***! + \****************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/direction-ltr.svg?')},"./assets/icons/direction-rtl.svg": +/*!****************************************!*\ + !*** ./assets/icons/direction-rtl.svg ***! + \****************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/direction-rtl.svg?')},"./assets/icons/dropdown.svg": +/*!***********************************!*\ + !*** ./assets/icons/dropdown.svg ***! + \***********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/dropdown.svg?')},"./assets/icons/formula.svg": +/*!**********************************!*\ + !*** ./assets/icons/formula.svg ***! + \**********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/formula.svg?')},"./assets/icons/header-2.svg": +/*!***********************************!*\ + !*** ./assets/icons/header-2.svg ***! + \***********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/header-2.svg?')},"./assets/icons/header.svg": +/*!*********************************!*\ + !*** ./assets/icons/header.svg ***! + \*********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/header.svg?')},"./assets/icons/image.svg": +/*!********************************!*\ + !*** ./assets/icons/image.svg ***! + \********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/image.svg?')},"./assets/icons/indent.svg": +/*!*********************************!*\ + !*** ./assets/icons/indent.svg ***! + \*********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/indent.svg?')},"./assets/icons/italic.svg": +/*!*********************************!*\ + !*** ./assets/icons/italic.svg ***! + \*********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/italic.svg?')},"./assets/icons/link.svg": +/*!*******************************!*\ + !*** ./assets/icons/link.svg ***! + \*******************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/link.svg?')},"./assets/icons/list-bullet.svg": +/*!**************************************!*\ + !*** ./assets/icons/list-bullet.svg ***! + \**************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/list-bullet.svg?')},"./assets/icons/list-check.svg": +/*!*************************************!*\ + !*** ./assets/icons/list-check.svg ***! + \*************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/list-check.svg?')},"./assets/icons/list-ordered.svg": +/*!***************************************!*\ + !*** ./assets/icons/list-ordered.svg ***! + \***************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/list-ordered.svg?')},"./assets/icons/outdent.svg": +/*!**********************************!*\ + !*** ./assets/icons/outdent.svg ***! + \**********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/outdent.svg?')},"./assets/icons/strike.svg": +/*!*********************************!*\ + !*** ./assets/icons/strike.svg ***! + \*********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/strike.svg?')},"./assets/icons/subscript.svg": +/*!************************************!*\ + !*** ./assets/icons/subscript.svg ***! + \************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/subscript.svg?')},"./assets/icons/superscript.svg": +/*!**************************************!*\ + !*** ./assets/icons/superscript.svg ***! + \**************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/superscript.svg?')},"./assets/icons/table.svg": +/*!********************************!*\ + !*** ./assets/icons/table.svg ***! + \********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/table.svg?')},"./assets/icons/underline.svg": +/*!************************************!*\ + !*** ./assets/icons/underline.svg ***! + \************************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/underline.svg?')},"./assets/icons/video.svg": +/*!********************************!*\ + !*** ./assets/icons/video.svg ***! + \********************************/ +/*! no static exports found */function(module,exports){eval('// Module\nvar code = " ";\n// Exports\nmodule.exports = code;\n\n//# sourceURL=webpack://Quill/./assets/icons/video.svg?')},"./blots/block.js": +/*!************************!*\ + !*** ./blots/block.js ***! + \************************/ +/*! exports provided: blockDelta, bubbleFormats, BlockEmbed, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blockDelta", function() { return blockDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bubbleFormats", function() { return bubbleFormats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BlockEmbed", function() { return BlockEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Block; });\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ "./node_modules/extend/index.js");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ "./node_modules/quill-delta/dist/Delta.js");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ "./blots/break.js");\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inline */ "./blots/inline.js");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ "./blots/text.js");\n\n\n\n\n\n\nconst NEWLINE_LENGTH = 1;\n\nclass Block extends parchment__WEBPACK_IMPORTED_MODULE_2__["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\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\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__["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\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) {\n super.insertAt(index, value, def);\n this.cache = {};\n return;\n }\n\n if (value.length === 0) return;\n const lines = value.split(\'\\n\');\n const text = lines.shift();\n\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\n this.cache = {};\n }\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 {\n head\n } = this.children;\n super.insertBefore(blot, ref);\n\n if (head instanceof _break__WEBPACK_IMPORTED_MODULE_3__["default"]) {\n head.remove();\n }\n\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\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\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n }\n\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n\n const next = super.split(index, force);\n this.cache = {};\n return next;\n }\n\n}\n\nBlock.blotName = \'block\';\nBlock.tagName = \'P\';\nBlock.defaultChild = _break__WEBPACK_IMPORTED_MODULE_3__["default"];\nBlock.allowedChildren = [_break__WEBPACK_IMPORTED_MODULE_3__["default"], _inline__WEBPACK_IMPORTED_MODULE_4__["default"], parchment__WEBPACK_IMPORTED_MODULE_2__["EmbedBlot"], _text__WEBPACK_IMPORTED_MODULE_5__["default"]];\n\nclass BlockEmbed extends parchment__WEBPACK_IMPORTED_MODULE_2__["EmbedBlot"] {\n attach() {\n super.attach();\n this.attributes = new parchment__WEBPACK_IMPORTED_MODULE_2__["AttributorStore"](this.domNode);\n }\n\n delta() {\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(this.value(), extend__WEBPACK_IMPORTED_MODULE_0___default()(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n const attribute = this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__["Scope"].BLOCK_ATTRIBUTE);\n\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\n}\n\nBlockEmbed.scope = parchment__WEBPACK_IMPORTED_MODULE_2__["Scope"].BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\nfunction blockDelta(blot, filter = true) {\n return blot.descendants(parchment__WEBPACK_IMPORTED_MODULE_2__["LeafBlot"]).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n }\n\n return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a()).insert(\'\\n\', bubbleFormats(blot));\n}\n\nfunction bubbleFormats(blot, formats = {}, filter = true) {\n if (blot == null) return formats;\n\n if (typeof blot.formats === \'function\') {\n formats = extend__WEBPACK_IMPORTED_MODULE_0___default()(formats, blot.formats());\n\n if (filter) {\n // exclude syntax highlighting from deltas and getFormat()\n delete formats[\'code-token\'];\n }\n }\n\n if (blot.parent == null || blot.parent.statics.blotName === \'scroll\' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n\n return bubbleFormats(blot.parent, formats, filter);\n}\n\n\n\n//# sourceURL=webpack://Quill/./blots/block.js?')},"./blots/break.js": +/*!************************!*\ + !*** ./blots/break.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\n\nclass Break extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"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\n}\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Break);\n\n//# sourceURL=webpack://Quill/./blots/break.js?")},"./blots/container.js": +/*!****************************!*\ + !*** ./blots/container.js ***! + \****************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n\n\nclass Container extends parchment__WEBPACK_IMPORTED_MODULE_0__["ContainerBlot"] {}\n\n/* harmony default export */ __webpack_exports__["default"] = (Container);\n\n//# sourceURL=webpack://Quill/./blots/container.js?')},"./blots/cursor.js": +/*!*************************!*\ + !*** ./blots/cursor.js ***! + \*************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \"./blots/text.js\");\n\n\n\nclass Cursor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"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\n let target = this;\n let index = 0;\n\n while (target != null && target.statics.scope !== parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\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(); // Link format will insert text outside of anchor tag\n\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n\n const prevTextBlot = this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? this.prev : null;\n const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\n const nextTextBlot = this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? this.next : null;\n const nextText = nextTextBlot ? nextTextBlot.text : '';\n const {\n textNode\n } = this; // take text from inside this blot and reset it\n\n const newText = textNode.data.split(Cursor.CONTENTS).join('');\n textNode.data = Cursor.CONTENTS; // proactively merge TextBlots around cursor so that optimization\n // doesn't lose the cursor. the reason we are here in cursor.restore\n // could be that the user clicked in prevTextBlot or nextTextBlot, or\n // the user typed something.\n\n let mergedTextBlot;\n\n if (prevTextBlot) {\n mergedTextBlot = prevTextBlot;\n\n if (newText || nextTextBlot) {\n prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\n\n if (nextTextBlot) {\n nextTextBlot.remove();\n }\n }\n } else if (nextTextBlot) {\n mergedTextBlot = nextTextBlot;\n nextTextBlot.insertAt(0, newText);\n } else {\n const newTextNode = document.createTextNode(newText);\n mergedTextBlot = this.scroll.create(newTextNode);\n this.parent.insertBefore(mergedTextBlot, this);\n }\n\n this.remove();\n\n if (range) {\n // calculate selection to restore\n const remapOffset = (node, offset) => {\n if (prevTextBlot && node === prevTextBlot.domNode) {\n return offset;\n }\n\n if (node === textNode) {\n return prevTextLength + offset - 1;\n }\n\n if (nextTextBlot && node === nextTextBlot.domNode) {\n return prevTextLength + newText.length + offset;\n }\n\n return null;\n };\n\n const start = remapOffset(range.start.node, range.start.offset);\n const end = remapOffset(range.end.node, range.end.offset);\n\n if (start !== null && end !== null) {\n return {\n startNode: mergedTextBlot.domNode,\n startOffset: start,\n endNode: mergedTextBlot.domNode,\n endOffset: end\n };\n }\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\n}\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cursor);\n\n//# sourceURL=webpack://Quill/./blots/cursor.js?")},"./blots/embed.js": +/*!************************!*\ + !*** ./blots/embed.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ "./blots/text.js");\n\n\nconst GUARD_TEXT = \'\\uFEFF\';\n\nclass Embed extends parchment__WEBPACK_IMPORTED_MODULE_0__["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\n if (node === this.leftGuard) {\n if (this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__["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 _text__WEBPACK_IMPORTED_MODULE_1__["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\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}\n\n/* harmony default export */ __webpack_exports__["default"] = (Embed);\n\n//# sourceURL=webpack://Quill/./blots/embed.js?')},"./blots/inline.js": +/*!*************************!*\ + !*** ./blots/inline.js ***! + \*************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break */ \"./blots/break.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text */ \"./blots/text.js\");\n\n\n\n\nclass Inline extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"InlineBlot\"] {\n static compare(self, other) {\n const selfIndex = Inline.order.indexOf(self);\n const otherIndex = Inline.order.indexOf(other);\n\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n }\n\n if (self === other) {\n return 0;\n }\n\n if (self < other) {\n return -1;\n }\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__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOT)) {\n const blot = this.isolate(index, length);\n\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\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\n}\n\nInline.allowedChildren = [Inline, _break__WEBPACK_IMPORTED_MODULE_1__[\"default\"], parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"], _text__WEBPACK_IMPORTED_MODULE_2__[\"default\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\nInline.order = ['cursor', 'inline', // Must be lower\n'link', // Chrome wants to be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\n];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Inline);\n\n//# sourceURL=webpack://Quill/./blots/inline.js?")},"./blots/scroll.js": +/*!*************************!*\ + !*** ./blots/scroll.js ***! + \*************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ "./core/emitter.js");\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block */ "./blots/block.js");\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ "./blots/break.js");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./container */ "./blots/container.js");\n\n\n\n\n\n\nfunction isLine(blot) {\n return blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__["default"] || blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__["BlockEmbed"];\n}\n\nclass Scroll extends parchment__WEBPACK_IMPORTED_MODULE_0__["ScrollBlot"] {\n constructor(registry, domNode, {\n emitter\n }) {\n super(registry, domNode);\n this.emitter = emitter;\n this.batch = false;\n this.optimize();\n this.enable();\n this.domNode.addEventListener(\'dragstart\', e => this.handleDragStart(e));\n }\n\n batchStart() {\n if (!Array.isArray(this.batch)) {\n this.batch = [];\n }\n }\n\n batchEnd() {\n const mutations = this.batch;\n this.batch = false;\n this.update(mutations);\n }\n\n emitMount(blot) {\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.SCROLL_BLOT_MOUNT, blot);\n }\n\n emitUnmount(blot) {\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.SCROLL_BLOT_UNMOUNT, blot);\n }\n\n deleteAt(index, length) {\n const [first, offset] = this.line(index);\n const [last] = this.line(index + length);\n super.deleteAt(index, length);\n\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block__WEBPACK_IMPORTED_MODULE_2__["BlockEmbed"] || last instanceof _block__WEBPACK_IMPORTED_MODULE_2__["BlockEmbed"]) {\n this.optimize();\n return;\n }\n\n const ref = last.children.head instanceof _break__WEBPACK_IMPORTED_MODULE_3__["default"] ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\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 handleDragStart(event) {\n event.preventDefault();\n }\n\n insertAt(index, value, def) {\n if (index >= this.length()) {\n if (def == null || this.scroll.query(value, parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].BLOCK) == null) {\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\n this.appendChild(blot);\n\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\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === parchment__WEBPACK_IMPORTED_MODULE_0__["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 isEnabled() {\n return this.domNode.getAttribute(\'contenteditable\') === \'true\';\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\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__WEBPACK_IMPORTED_MODULE_0__["ContainerBlot"]) {\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\n }\n\n lengthLeft -= childLength;\n });\n return lines;\n };\n\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch) return;\n super.optimize(mutations, context);\n\n if (mutations.length > 0) {\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["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() {// Never remove self\n }\n\n update(mutations) {\n if (this.batch) {\n if (Array.isArray(mutations)) {\n this.batch = this.batch.concat(mutations);\n }\n\n return;\n }\n\n let source = _core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER;\n\n if (typeof mutations === \'string\') {\n source = mutations;\n }\n\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n\n if (mutations.length > 0) {\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n\n super.update(mutations.concat([])); // pass copy\n\n if (mutations.length > 0) {\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.SCROLL_UPDATE, source, mutations);\n }\n }\n\n}\n\nScroll.blotName = \'scroll\';\nScroll.className = \'ql-editor\';\nScroll.tagName = \'DIV\';\nScroll.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__["default"];\nScroll.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__["default"], _block__WEBPACK_IMPORTED_MODULE_2__["BlockEmbed"], _container__WEBPACK_IMPORTED_MODULE_4__["default"]];\n/* harmony default export */ __webpack_exports__["default"] = (Scroll);\n\n//# sourceURL=webpack://Quill/./blots/scroll.js?')},"./blots/text.js": +/*!***********************!*\ + !*** ./blots/text.js ***! + \***********************/ +/*! exports provided: default, escapeText */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeText\", function() { return escapeText; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\n\nclass Text extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"TextBlot\"] {}\n\nfunction escapeText(text) {\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 });\n}\n\n\n\n//# sourceURL=webpack://Quill/./blots/text.js?")},"./core.js": +/*!*****************!*\ + !*** ./core.js ***! + \*****************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/quill */ "./core/quill.js");\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blots/block */ "./blots/block.js");\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blots/break */ "./blots/break.js");\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blots/container */ "./blots/container.js");\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blots/cursor */ "./blots/cursor.js");\n/* harmony import */ var _blots_embed__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blots/embed */ "./blots/embed.js");\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blots/inline */ "./blots/inline.js");\n/* harmony import */ var _blots_scroll__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blots/scroll */ "./blots/scroll.js");\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blots/text */ "./blots/text.js");\n/* harmony import */ var _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/clipboard */ "./modules/clipboard.js");\n/* harmony import */ var _modules_history__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/history */ "./modules/history.js");\n/* harmony import */ var _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/keyboard */ "./modules/keyboard.js");\n/* harmony import */ var _modules_uploader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/uploader */ "./modules/uploader.js");\n\n\n\n\n\n\n\n\n\n\n\n\n\n_core_quill__WEBPACK_IMPORTED_MODULE_0__["default"].register({\n \'blots/block\': _blots_block__WEBPACK_IMPORTED_MODULE_1__["default"],\n \'blots/block/embed\': _blots_block__WEBPACK_IMPORTED_MODULE_1__["BlockEmbed"],\n \'blots/break\': _blots_break__WEBPACK_IMPORTED_MODULE_2__["default"],\n \'blots/container\': _blots_container__WEBPACK_IMPORTED_MODULE_3__["default"],\n \'blots/cursor\': _blots_cursor__WEBPACK_IMPORTED_MODULE_4__["default"],\n \'blots/embed\': _blots_embed__WEBPACK_IMPORTED_MODULE_5__["default"],\n \'blots/inline\': _blots_inline__WEBPACK_IMPORTED_MODULE_6__["default"],\n \'blots/scroll\': _blots_scroll__WEBPACK_IMPORTED_MODULE_7__["default"],\n \'blots/text\': _blots_text__WEBPACK_IMPORTED_MODULE_8__["default"],\n \'modules/clipboard\': _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__["default"],\n \'modules/history\': _modules_history__WEBPACK_IMPORTED_MODULE_10__["default"],\n \'modules/keyboard\': _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__["default"],\n \'modules/uploader\': _modules_uploader__WEBPACK_IMPORTED_MODULE_12__["default"]\n});\n/* harmony default export */ __webpack_exports__["default"] = (_core_quill__WEBPACK_IMPORTED_MODULE_0__["default"]);\n\n//# sourceURL=webpack://Quill/./core.js?')},"./core/editor.js": +/*!************************!*\ + !*** ./core/editor.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ "./node_modules/clone/clone.js");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ "./node_modules/deep-equal/index.js");\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ "./node_modules/extend/index.js");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ "./node_modules/quill-delta/dist/Delta.js");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selection */ "./core/selection.js");\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/cursor */ "./blots/cursor.js");\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/block */ "./blots/block.js");\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/break */ "./blots/break.js");\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../blots/text */ "./blots/text.js");\n\n\n\n\n\n\n\n\n\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\n if (op.insert != null) {\n if (typeof op.insert === \'string\') {\n let text = op.insert;\n\n if (text.endsWith(\'\\n\') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n\n if ((index >= scrollLength || this.scroll.descendant(_blots_block__WEBPACK_IMPORTED_MODULE_7__["BlockEmbed"], index)[0]) && !text.endsWith(\'\\n\')) {\n consumeNextNewline = true;\n }\n\n this.scroll.insertAt(index, text);\n const [line, offset] = this.scroll.line(index);\n let formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__["bubbleFormats"])(line));\n\n if (line instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__["default"]) {\n const [leaf] = line.descendant(parchment__WEBPACK_IMPORTED_MODULE_4__["LeafBlot"], offset);\n formats = extend__WEBPACK_IMPORTED_MODULE_2___default()(formats, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__["bubbleFormats"])(leaf));\n }\n\n attributes = quill_delta__WEBPACK_IMPORTED_MODULE_3__["AttributeMap"].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\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n\n scrollLength += length;\n }\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\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n }\n\n getFormat(index, length = 0) {\n let lines = [];\n let leaves = [];\n\n if (length === 0) {\n this.scroll.path(index).forEach(path => {\n const [blot] = path;\n\n if (blot instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__["default"]) {\n lines.push(blot);\n } else if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_4__["LeafBlot"]) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(parchment__WEBPACK_IMPORTED_MODULE_4__["LeafBlot"], index, length);\n }\n\n const formatsArr = [lines, leaves].map(blots => {\n if (blots.length === 0) return {};\n let formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__["bubbleFormats"])(blots.shift());\n\n while (Object.keys(formats).length > 0) {\n const blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__["bubbleFormats"])(blot), formats);\n }\n\n return formats;\n });\n return extend__WEBPACK_IMPORTED_MODULE_2___default.a.apply(extend__WEBPACK_IMPORTED_MODULE_2___default.a, formatsArr);\n }\n\n getHTML(index, length) {\n const [line, lineOffset] = this.scroll.line(index);\n\n if (line.length() >= lineOffset + length) {\n return convertHTML(line, lineOffset, length, true);\n }\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert({\n [embed]: value\n }));\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(text, clone__WEBPACK_IMPORTED_MODULE_0___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 !== _blots_block__WEBPACK_IMPORTED_MODULE_7__["default"].blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__["default"];\n }\n\n removeFormat(index, length) {\n const text = this.getText(index, length);\n const [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0;\n let suffix = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a();\n\n if (line != null) {\n suffixLength = line.length() - offset;\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert(\'\\n\');\n }\n\n const contents = this.getContents(index, length + suffixLength);\n const diff = contents.diff(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(text).concat(suffix));\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], selectionInfo = undefined) {\n const oldDelta = this.delta;\n\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 = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__["bubbleFormats"])(textBlot);\n const index = textBlot.offset(this.scroll);\n const oldValue = mutations[0].oldValue.replace(_blots_cursor__WEBPACK_IMPORTED_MODULE_6__["default"].CONTENTS, \'\');\n const oldText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(oldValue);\n const newText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(textBlot.value());\n const relativeSelectionInfo = selectionInfo && {\n oldRange: shiftRange(selectionInfo.oldRange, -index),\n newRange: shiftRange(selectionInfo.newRange, -index)\n };\n const diffDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\n change = diffDelta.reduce((delta, op) => {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n }\n\n return delta.push(op);\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n\n if (!change || !deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, selectionInfo);\n }\n }\n\n return change;\n }\n\n}\n\nfunction convertListHTML(items, lastIndent, types) {\n if (items.length === 0) {\n const [endTag] = getListType(types.pop());\n\n if (lastIndent <= 0) {\n return "");\n }\n\n return "").concat(convertListHTML([], lastIndent - 1, types));\n }\n\n const [{\n child,\n offset,\n length,\n indent,\n type\n }, ...rest] = items;\n const [tag, attribute] = getListType(type);\n\n if (indent > lastIndent) {\n types.push(type);\n\n if (indent === lastIndent + 1) {\n return "<".concat(tag, ">").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\n }\n\n return "<".concat(tag, ">
  • ").concat(convertListHTML(items, lastIndent + 1, types));\n }\n\n const previousType = types[types.length - 1];\n\n if (indent === lastIndent && type === previousType) {\n return "
  • ").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\n }\n\n const [endTag] = getListType(types.pop());\n return "").concat(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 }\n\n if (blot instanceof _blots_text__WEBPACK_IMPORTED_MODULE_9__["default"]) {\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_9__["escapeText"])(blot.value().slice(index, index + length));\n }\n\n 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\n const parts = [];\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\n parts.push(convertHTML(child, offset, childLength));\n });\n\n if (isRoot || blot.statics.blotName === \'list\') {\n return parts.join(\'\');\n }\n\n const {\n outerHTML,\n innerHTML\n } = blot.domNode;\n const [start, end] = outerHTML.split(">".concat(innerHTML, "<")); // TODO cleanup\n\n if (start === \'".concat(parts.join(\'\'), "<").concat(end);\n }\n\n return "".concat(start, ">").concat(parts.join(\'\'), "<").concat(end);\n }\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\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\n return merged;\n }, {});\n}\n\nfunction getListType(type) {\n const tag = type === \'ordered\' ? \'ol\' : \'ul\';\n\n switch (type) {\n case \'checked\':\n return [tag, \' data-list="checked"\'];\n\n case \'unchecked\':\n return [tag, \' data-list="unchecked"\'];\n\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\n return normalizedDelta.push(op);\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\n}\n\nfunction shiftRange({\n index,\n length\n}, amount) {\n return new _selection__WEBPACK_IMPORTED_MODULE_5__["Range"](index + amount, length);\n}\n\n/* harmony default export */ __webpack_exports__["default"] = (Editor);\n\n//# sourceURL=webpack://Quill/./core/editor.js?')},"./core/emitter.js": +/*!*************************!*\ + !*** ./core/emitter.js ***! + \*************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instances */ \"./core/instances.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \"./core/logger.js\");\n\n\n\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('quill:events');\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\nEVENTS.forEach(eventName => {\n document.addEventListener(eventName, (...args) => {\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\n const quill = _instances__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(node);\n\n if (quill && quill.emitter) {\n quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\nclass Emitter extends eventemitter3__WEBPACK_IMPORTED_MODULE_0___default.a {\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(({\n node,\n handler\n }) => {\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\n this.listeners[eventName].push({\n node,\n handler\n });\n }\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/* harmony default export */ __webpack_exports__[\"default\"] = (Emitter);\n\n//# sourceURL=webpack://Quill/./core/emitter.js?")},"./core/instances.js": +/*!***************************!*\ + !*** ./core/instances.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__["default"] = (new WeakMap());\n\n//# sourceURL=webpack://Quill/./core/instances.js?')},"./core/logger.js": +/*!************************!*\ + !*** ./core/logger.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\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};\n\ndebug.level = namespace.level;\n/* harmony default export */ __webpack_exports__[\"default\"] = (namespace);\n\n//# sourceURL=webpack://Quill/./core/logger.js?")},"./core/module.js": +/*!************************!*\ + !*** ./core/module.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\nclass Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n\n}\n\nModule.DEFAULTS = {};\n/* harmony default export */ __webpack_exports__["default"] = (Module);\n\n//# sourceURL=webpack://Quill/./core/module.js?')},"./core/quill.js": +/*!***********************!*\ + !*** ./core/quill.js ***! + \***********************/ +/*! exports provided: globalRegistry, expandConfig, overload, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "globalRegistry", function() { return globalRegistry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expandConfig", function() { return expandConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overload", function() { return overload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Quill; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ "./node_modules/quill-delta/dist/Delta.js");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ "./node_modules/extend/index.js");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editor */ "./core/editor.js");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ "./core/emitter.js");\n/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./module */ "./core/module.js");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selection */ "./core/selection.js");\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instances */ "./core/instances.js");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ "./core/logger.js");\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./theme */ "./core/theme.js");\n\n\n\n\n\n\n\n\n\n\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_8__["default"])(\'quill\');\nconst globalRegistry = new parchment__WEBPACK_IMPORTED_MODULE_1__["Registry"]();\nparchment__WEBPACK_IMPORTED_MODULE_1__["ParentBlot"].uiClass = \'ql-ui\';\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = \'log\';\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_8__["default"].level(limit);\n }\n\n static find(node) {\n return _instances__WEBPACK_IMPORTED_MODULE_7__["default"].get(node) || globalRegistry.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error("Cannot import ".concat(name, ". Are you sure it was registered?"));\n }\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\n if (typeof name === \'string\') {\n // register(Blot | Attributor, overwrite)\n this.register("formats/".concat(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 ".concat(path, " with"), target);\n }\n\n this.imports[path] = target;\n\n if ((path.startsWith(\'blots/\') || path.startsWith(\'formats/\')) && target.blotName !== \'abstract\') {\n globalRegistry.register(target);\n }\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\n if (this.container == null) {\n return debug.error(\'Invalid Quill container\', container);\n }\n\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n\n const html = this.container.innerHTML.trim();\n this.container.classList.add(\'ql-container\');\n this.container.innerHTML = \'\';\n _instances__WEBPACK_IMPORTED_MODULE_7__["default"].set(this.container, this);\n this.root = this.addContainer(\'ql-editor\');\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 _emitter__WEBPACK_IMPORTED_MODULE_4__["default"]();\n const ScrollBlot = this.options.registry.query(parchment__WEBPACK_IMPORTED_MODULE_1__["ScrollBlot"].blotName);\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\n emitter: this.emitter\n });\n this.editor = new _editor__WEBPACK_IMPORTED_MODULE_3__["default"](this.scroll);\n this.selection = new _selection__WEBPACK_IMPORTED_MODULE_6__["default"](this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\n\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(_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events.EDITOR_CHANGE, type => {\n if (type === _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events.TEXT_CHANGE) {\n this.root.classList.toggle(\'ql-blank\', this.editor.isBlank());\n }\n });\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events.SCROLL_UPDATE, (source, mutations) => {\n const oldRange = this.selection.lastRange;\n const [newRange] = this.selection.getRange();\n const selectionInfo = oldRange && newRange ? {\n oldRange,\n newRange\n } : undefined;\n modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\n });\n const contents = this.clipboard.convert({\n html: "".concat(html, "


    "),\n text: \'\\n\'\n });\n this.setContents(contents);\n this.history.clear();\n\n if (this.options.placeholder) {\n this.root.setAttribute(\'data-placeholder\', this.options.placeholder);\n }\n\n if (this.options.readOnly) {\n this.disable();\n }\n\n this.allowReadOnlyEdits = false;\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\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 [index, length,, source] = overload(index, length, source);\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 editReadOnly(modifier) {\n this.allowReadOnlyEdits = true;\n const value = modifier();\n this.allowReadOnlyEdits = false;\n return value;\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 {\n scrollTop\n } = this.scrollingContainer;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.API) {\n return modify.call(this, () => {\n const range = this.getSelection(true);\n let change = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n if (range == null) return change;\n\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__["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\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats; // eslint-disable-next-line prefer-const\n\n [index, length, formats, source] = overload(index, length, name, value, source);\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; // eslint-disable-next-line prefer-const\n\n [index, length, formats, source] = overload(index, length, name, value, source);\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\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\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 [index, length] = overload(index, length);\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\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\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\n return this.selection.getRange()[0];\n }\n\n getSemanticHTML(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getHTML(index, length);\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\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; // eslint-disable-next-line prefer-const\n\n [index,, formats, source] = overload(index, 0, name, value, source);\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.scroll.isEnabled();\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 [index, length,, source] = overload(index, length, source);\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.API) {\n return modify.call(this, () => {\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(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\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\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 [index, length,, source] = overload(index, length, source);\n this.selection.setRange(new _selection__WEBPACK_IMPORTED_MODULE_6__["Range"](Math.max(0, index), length), source);\n\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.API) {\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.USER) {\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\n this.selection.update(source); // TODO this is usually undefined\n\n return change;\n }\n\n updateContents(delta, source = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.API) {\n return modify.call(this, () => {\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events;\nQuill.sources = _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources; // eslint-disable-next-line no-undef\n\nQuill.version = false ? undefined : "2.0.0-dev.3";\nQuill.imports = {\n delta: quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a,\n parchment: parchment__WEBPACK_IMPORTED_MODULE_1__,\n \'core/module\': _module__WEBPACK_IMPORTED_MODULE_5__["default"],\n \'core/theme\': _theme__WEBPACK_IMPORTED_MODULE_9__["default"]\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {\n container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true,\n uploader: true\n }\n }, userConfig);\n\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme__WEBPACK_IMPORTED_MODULE_9__["default"];\n } else {\n userConfig.theme = Quill.import("themes/".concat(userConfig.theme));\n\n if (userConfig.theme == null) {\n throw new Error("Invalid theme ".concat(userConfig.theme, ". Did you register it?"));\n }\n }\n\n const themeConfig = extend__WEBPACK_IMPORTED_MODULE_2___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/".concat(name));\n\n if (moduleClass == null) {\n debug.error("Cannot load ".concat(name, " module. Are you sure you registered it?"));\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n\n return config;\n }, {}); // Special case toolbar shorthand\n\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\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {}, Quill.DEFAULTS, {\n modules: moduleConfig\n }, 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\n return config;\n }, {});\n return userConfig;\n} // Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\n\n\nfunction modify(modifier, source, index, shift) {\n if (!this.isEnabled() && source === _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.USER && !this.allowReadOnlyEdits) {\n return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\n }\n\n let range = index == null ? null : this.getSelection();\n const oldDelta = this.editor.delta;\n const change = modifier();\n\n if (range != null) {\n if (index === true) {\n index = range.index; // eslint-disable-line prefer-destructuring\n }\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\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.SILENT);\n }\n\n if (change.length() > 0) {\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].events.EDITOR_CHANGE, ...args);\n\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n\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\n index = index.index; // eslint-disable-line prefer-destructuring\n } else {\n length = index.length; // eslint-disable-line prefer-destructuring\n\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 } // Handle format being object, two format name/value strings or excluded\n\n\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 } // Handle optional source\n\n\n source = source || _emitter__WEBPACK_IMPORTED_MODULE_4__["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\n if (index instanceof quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a) {\n [start, end] = [range.index, range.index + range.length].map(pos => index.transformPosition(pos, source !== _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.USER));\n } else {\n [start, end] = [range.index, range.index + range.length].map(pos => {\n if (pos < index || pos === index && source === _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].sources.USER) return pos;\n\n if (length >= 0) {\n return pos + length;\n }\n\n return Math.max(index, pos + length);\n });\n }\n\n return new _selection__WEBPACK_IMPORTED_MODULE_6__["Range"](start, end - start);\n}\n\n\n\n//# sourceURL=webpack://Quill/./core/quill.js?')},"./core/selection.js": +/*!***************************!*\ + !*** ./core/selection.js ***! + \***************************/ +/*! exports provided: Range, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Range", function() { return Range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Selection; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clone */ "./node_modules/clone/clone.js");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! deep-equal */ "./node_modules/deep-equal/index.js");\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ "./core/emitter.js");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ "./core/logger.js");\n\n\n\n\n\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_4__["default"])(\'quill:selection\');\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\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); // savedRange is last non-null range\n\n this.savedRange = new Range(0, 0);\n this.lastRange = this.savedRange;\n this.lastNative = null;\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM(\'selectionchange\', document, () => {\n if (!this.mouseDown && !this.composing) {\n setTimeout(this.update.bind(this, _emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.USER), 1);\n }\n });\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__["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\n this.emitter.once(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].events.SCROLL_UPDATE, () => {\n try {\n if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n }\n\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.SILENT);\n } catch (ignored) {// ignore\n }\n });\n });\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const {\n startNode,\n startOffset,\n endNode,\n endOffset\n } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.SILENT);\n }\n });\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener(\'compositionstart\', () => {\n this.composing = true;\n this.scroll.batchStart();\n });\n this.root.addEventListener(\'compositionend\', () => {\n this.scroll.batchEnd();\n this.composing = false;\n\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(_emitter__WEBPACK_IMPORTED_MODULE_3__["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__WEBPACK_IMPORTED_MODULE_0__["Scope"].BLOCK)) return;\n\n if (nativeRange.start.node !== this.cursor.textNode) {\n const blot = this.scroll.find(nativeRange.start.node, false);\n if (blot == null) return; // TODO Give blot ability to not split\n\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__["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\n this.cursor.attach();\n }\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 let [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n const range = document.createRange();\n\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n }\n\n let side = \'left\';\n let rect;\n\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\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = \'right\';\n }\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\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n\n const indexes = positions.map(position => {\n const [node, offset] = position;\n const blot = this.scroll.find(node, true);\n const index = blot.offset(this.scroll);\n\n if (offset === 0) {\n return index;\n }\n\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__["LeafBlot"]) {\n return index + blot.index(node, offset);\n }\n\n return index + blot.length();\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\n const range = {\n start: {\n node: nativeRange.startContainer,\n offset: nativeRange.startOffset\n },\n end: {\n node: nativeRange.endContainer,\n offset: nativeRange.endOffset\n },\n native: nativeRange\n };\n [range.start, range.end].forEach(position => {\n let {\n node,\n offset\n } = position;\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\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\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 const [leaf, leafOffset] = this.scroll.leaf(index);\n const [node, offset] = leaf.position(leafOffset, i !== 0);\n args.push(node, offset);\n });\n\n if (args.length < 2) {\n return args.concat(args);\n }\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 const [first] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n\n if (range.length > 0) {\n [last] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n\n if (first == null || last == null) return;\n const scrollBounds = scrollingContainer.getBoundingClientRect();\n\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\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n\n const selection = document.getSelection();\n if (selection == null) return;\n\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n const {\n native\n } = this.getNativeRange() || {};\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\n if (endNode.tagName === \'BR\') {\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\n endNode = endNode.parentNode;\n }\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 = _emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.API) {\n if (typeof force === \'string\') {\n source = force;\n force = false;\n }\n\n debug.info(\'setRange\', range);\n\n if (range != null) {\n const args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n\n this.update(source);\n }\n\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.USER) {\n const oldRange = this.lastRange;\n const [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n this.lastNative = nativeRange;\n\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n\n if (!deep_equal__WEBPACK_IMPORTED_MODULE_2___default()(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n const range = this.cursor.restore();\n\n if (range) {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }\n }\n\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].events.SELECTION_CHANGE, clone__WEBPACK_IMPORTED_MODULE_1___default()(this.lastRange), clone__WEBPACK_IMPORTED_MODULE_1___default()(oldRange), source];\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_3__["default"].events.EDITOR_CHANGE, ...args);\n\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_3__["default"].sources.SILENT) {\n this.emitter.emit(...args);\n }\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\n return parent.contains(descendant);\n}\n\n\n\n//# sourceURL=webpack://Quill/./core/selection.js?')},"./core/theme.js": +/*!***********************!*\ + !*** ./core/theme.js ***! + \***********************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\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/".concat(name));\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n\n}\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n default: Theme\n};\n/* harmony default export */ __webpack_exports__["default"] = (Theme);\n\n//# sourceURL=webpack://Quill/./core/theme.js?')},"./formats/align.js": +/*!**************************!*\ + !*** ./formats/align.js ***! + \**************************/ +/*! exports provided: AlignAttribute, AlignClass, AlignStyle */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignAttribute\", function() { return AlignAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignClass\", function() { return AlignClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignStyle\", function() { return AlignStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\nconst config = {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\nconst AlignAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"Attributor\"]('align', 'align', config);\nconst AlignClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('align', 'ql-align', config);\nconst AlignStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]('align', 'text-align', config);\n\n\n//# sourceURL=webpack://Quill/./formats/align.js?")},"./formats/background.js": +/*!*******************************!*\ + !*** ./formats/background.js ***! + \*******************************/ +/*! exports provided: BackgroundClass, BackgroundStyle */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BackgroundClass", function() { return BackgroundClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BackgroundStyle", function() { return BackgroundStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ "./formats/color.js");\n\n\nconst BackgroundClass = new parchment__WEBPACK_IMPORTED_MODULE_0__["ClassAttributor"](\'background\', \'ql-bg\', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].INLINE\n});\nconst BackgroundStyle = new _color__WEBPACK_IMPORTED_MODULE_1__["ColorAttributor"](\'background\', \'background-color\', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].INLINE\n});\n\n\n//# sourceURL=webpack://Quill/./formats/background.js?')},"./formats/blockquote.js": +/*!*******************************!*\ + !*** ./formats/blockquote.js ***! + \*******************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ "./blots/block.js");\n\n\nclass Blockquote extends _blots_block__WEBPACK_IMPORTED_MODULE_0__["default"] {}\n\nBlockquote.blotName = \'blockquote\';\nBlockquote.tagName = \'blockquote\';\n/* harmony default export */ __webpack_exports__["default"] = (Blockquote);\n\n//# sourceURL=webpack://Quill/./formats/blockquote.js?')},"./formats/bold.js": +/*!*************************!*\ + !*** ./formats/bold.js ***! + \*************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \"./blots/inline.js\");\n\n\nclass Bold extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\"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\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n\n}\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Bold);\n\n//# sourceURL=webpack://Quill/./formats/bold.js?")},"./formats/code.js": +/*!*************************!*\ + !*** ./formats/code.js ***! + \*************************/ +/*! exports provided: Code, CodeBlockContainer, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Code", function() { return Code; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeBlockContainer", function() { return CodeBlockContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CodeBlock; });\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ "./blots/block.js");\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/break */ "./blots/break.js");\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/cursor */ "./blots/cursor.js");\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/inline */ "./blots/inline.js");\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../blots/text */ "./blots/text.js");\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/container */ "./blots/container.js");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/quill */ "./core/quill.js");\n\n\n\n\n\n\n\n\nclass CodeBlockContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_5__["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 text = this.children.map(child => child.domNode.innerText).join(\'\\n\').slice(index, index + length);\n return "
    ".concat(Object(_blots_text__WEBPACK_IMPORTED_MODULE_4__["escapeText"])(text), "
    ");\n }\n\n}\n\nclass CodeBlock extends _blots_block__WEBPACK_IMPORTED_MODULE_0__["default"] {\n static register() {\n _core_quill__WEBPACK_IMPORTED_MODULE_6__["default"].register(CodeBlockContainer);\n }\n\n}\n\nclass Code extends _blots_inline__WEBPACK_IMPORTED_MODULE_3__["default"] {}\n\nCode.blotName = \'code\';\nCode.tagName = \'CODE\';\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\';\nCodeBlockContainer.allowedChildren = [CodeBlock];\nCodeBlock.allowedChildren = [_blots_text__WEBPACK_IMPORTED_MODULE_4__["default"], _blots_break__WEBPACK_IMPORTED_MODULE_1__["default"], _blots_cursor__WEBPACK_IMPORTED_MODULE_2__["default"]];\nCodeBlock.requiredContainer = CodeBlockContainer;\nCodeBlock.TAB = \' \';\n\n\n//# sourceURL=webpack://Quill/./formats/code.js?')},"./formats/color.js": +/*!**************************!*\ + !*** ./formats/color.js ***! + \**************************/ +/*! exports provided: ColorAttributor, ColorClass, ColorStyle */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorAttributor", function() { return ColorAttributor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorClass", function() { return ColorClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorStyle", function() { return ColorStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n\n\nclass ColorAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__["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".concat(parseInt(component, 10).toString(16)).slice(-2)).join(\'\');\n return "#".concat(hex);\n }\n\n}\n\nconst ColorClass = new parchment__WEBPACK_IMPORTED_MODULE_0__["ClassAttributor"](\'color\', \'ql-color\', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].INLINE\n});\nconst ColorStyle = new ColorAttributor(\'color\', \'color\', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].INLINE\n});\n\n\n//# sourceURL=webpack://Quill/./formats/color.js?')},"./formats/direction.js": +/*!******************************!*\ + !*** ./formats/direction.js ***! + \******************************/ +/*! exports provided: DirectionAttribute, DirectionClass, DirectionStyle */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectionAttribute", function() { return DirectionAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectionClass", function() { return DirectionClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectionStyle", function() { return DirectionStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n\nconst config = {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].BLOCK,\n whitelist: [\'rtl\']\n};\nconst DirectionAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__["Attributor"](\'direction\', \'dir\', config);\nconst DirectionClass = new parchment__WEBPACK_IMPORTED_MODULE_0__["ClassAttributor"](\'direction\', \'ql-direction\', config);\nconst DirectionStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__["StyleAttributor"](\'direction\', \'direction\', config);\n\n\n//# sourceURL=webpack://Quill/./formats/direction.js?')},"./formats/font.js": +/*!*************************!*\ + !*** ./formats/font.js ***! + \*************************/ +/*! exports provided: FontStyle, FontClass */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontStyle\", function() { return FontStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontClass\", function() { return FontClass; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\nconst config = {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n whitelist: ['serif', 'monospace']\n};\nconst FontClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('font', 'ql-font', config);\n\nclass FontStyleAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"] {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n\n}\n\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\n\n//# sourceURL=webpack://Quill/./formats/font.js?")},"./formats/formula.js": +/*!****************************!*\ + !*** ./formats/formula.js ***! + \****************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_embed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/embed */ \"./blots/embed.js\");\n\n\nclass Formula extends _blots_embed__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static create(value) {\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n\n const node = super.create(value);\n\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\n return node;\n }\n\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n\n html() {\n const {\n formula\n } = this.value();\n return \"\".concat(formula, \"\");\n }\n\n}\n\nFormula.blotName = 'formula';\nFormula.className = 'ql-formula';\nFormula.tagName = 'SPAN';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Formula);\n\n//# sourceURL=webpack://Quill/./formats/formula.js?")},"./formats/header.js": +/*!***************************!*\ + !*** ./formats/header.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n\n\nclass Header extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n\n}\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Header);\n\n//# sourceURL=webpack://Quill/./formats/header.js?")},"./formats/image.js": +/*!**************************!*\ + !*** ./formats/image.js ***! + \**************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \"./formats/link.js\");\n\n\nconst ATTRIBUTES = ['alt', 'height', 'width'];\n\nclass Image extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"EmbedBlot\"] {\n static create(value) {\n const node = super.create(value);\n\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\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\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 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 Object(_link__WEBPACK_IMPORTED_MODULE_1__[\"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\n}\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n\n//# sourceURL=webpack://Quill/./formats/image.js?")},"./formats/indent.js": +/*!***************************!*\ + !*** ./formats/indent.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\n\nclass IndentAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\"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\n if (value === 0) {\n this.remove(node);\n return true;\n }\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}\n\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (IndentClass);\n\n//# sourceURL=webpack://Quill/./formats/indent.js?")},"./formats/italic.js": +/*!***************************!*\ + !*** ./formats/italic.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \"./formats/bold.js\");\n\n\nclass Italic extends _bold__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {}\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Italic);\n\n//# sourceURL=webpack://Quill/./formats/italic.js?")},"./formats/link.js": +/*!*************************!*\ + !*** ./formats/link.js ***! + \*************************/ +/*! exports provided: default, sanitize */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Link; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sanitize\", function() { return sanitize; });\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \"./blots/inline.js\");\n\n\nclass Link extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static create(value) {\n const node = super.create(value);\n node.setAttribute('href', this.sanitize(value));\n node.setAttribute('rel', 'noopener noreferrer');\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\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\n\n\n//# sourceURL=webpack://Quill/./formats/link.js?")},"./formats/list.js": +/*!*************************!*\ + !*** ./formats/list.js ***! + \*************************/ +/*! exports provided: ListContainer, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListContainer\", function() { return ListContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ListItem; });\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \"./blots/container.js\");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \"./core/quill.js\");\n\n\n\n\nclass ListContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {}\n\nListContainer.blotName = 'list-container';\nListContainer.tagName = 'OL';\n\nclass ListItem extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\"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 _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].register(ListContainer);\n }\n\n constructor(scroll, domNode) {\n super(scroll, domNode);\n const ui = domNode.ownerDocument.createElement('span');\n\n const listEventHandler = e => {\n if (!scroll.isEnabled()) return;\n const format = this.statics.formats(domNode, scroll);\n\n if (format === 'checked') {\n this.format('list', 'unchecked');\n e.preventDefault();\n } else if (format === 'unchecked') {\n this.format('list', 'checked');\n e.preventDefault();\n }\n };\n\n ui.addEventListener('mousedown', listEventHandler);\n ui.addEventListener('touchstart', listEventHandler);\n this.attachUI(ui);\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\n}\n\nListItem.blotName = 'list';\nListItem.tagName = 'LI';\nListContainer.allowedChildren = [ListItem];\nListItem.requiredContainer = ListContainer;\n\n\n//# sourceURL=webpack://Quill/./formats/list.js?")},"./formats/script.js": +/*!***************************!*\ + !*** ./formats/script.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \"./blots/inline.js\");\n\n\nclass Script extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n }\n\n if (value === 'sub') {\n return document.createElement('sub');\n }\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\n}\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Script);\n\n//# sourceURL=webpack://Quill/./formats/script.js?")},"./formats/size.js": +/*!*************************!*\ + !*** ./formats/size.js ***! + \*************************/ +/*! exports provided: SizeClass, SizeStyle */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SizeClass\", function() { return SizeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SizeStyle\", function() { return SizeStyle; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n\nconst SizeClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"ClassAttributor\"]('size', 'ql-size', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nconst SizeStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\"StyleAttributor\"]('size', 'font-size', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\"Scope\"].INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\n\n//# sourceURL=webpack://Quill/./formats/size.js?")},"./formats/strike.js": +/*!***************************!*\ + !*** ./formats/strike.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \"./formats/bold.js\");\n\n\nclass Strike extends _bold__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {}\n\nStrike.blotName = 'strike';\nStrike.tagName = ['S', 'STRIKE'];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Strike);\n\n//# sourceURL=webpack://Quill/./formats/strike.js?")},"./formats/table.js": +/*!**************************!*\ + !*** ./formats/table.js ***! + \**************************/ +/*! exports provided: TableCell, TableRow, TableBody, TableContainer, tableId */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableCell\", function() { return TableCell; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableRow\", function() { return TableRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableBody\", function() { return TableBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableContainer\", function() { return TableContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tableId\", function() { return tableId; });\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \"./blots/container.js\");\n\n\n\nclass TableCell extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static create(value) {\n const node = super.create();\n\n if (value) {\n node.setAttribute('data-row', value);\n } else {\n node.setAttribute('data-row', tableId());\n }\n\n return node;\n }\n\n static formats(domNode) {\n if (domNode.hasAttribute('data-row')) {\n return domNode.getAttribute('data-row');\n }\n\n return undefined;\n }\n\n cellOffset() {\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n\n return -1;\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 row() {\n return this.parent;\n }\n\n rowOffset() {\n if (this.row()) {\n return this.row().rowOffset();\n }\n\n return -1;\n }\n\n table() {\n return this.row() && this.row().table();\n }\n\n}\n\nTableCell.blotName = 'table';\nTableCell.tagName = 'TD';\n\nclass TableRow extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\"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\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\n if (childFormats.table !== nextFormats.table) {\n const next = this.splitAfter(child);\n\n if (next) {\n next.optimize();\n } // We might be able to merge with prev now\n\n\n if (this.prev) {\n this.prev.optimize();\n }\n }\n });\n }\n\n rowOffset() {\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n\n return -1;\n }\n\n table() {\n return this.parent && this.parent.parent;\n }\n\n}\n\nTableRow.blotName = 'table-row';\nTableRow.tagName = 'TR';\n\nclass TableBody extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {}\n\nTableBody.blotName = 'table-body';\nTableBody.tagName = 'TBODY';\n\nclass TableContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\"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\n if (row.children.head != null) {\n value = TableCell.formats(row.children.head.domNode);\n }\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 cells(column) {\n return this.rows().map(row => row.children.at(column));\n }\n\n deleteColumn(index) {\n const [body] = this.descendant(TableBody);\n if (body == null || body.children.head == null) return;\n body.children.forEach(row => {\n const cell = row.children.at(index);\n\n if (cell != null) {\n cell.remove();\n }\n });\n }\n\n insertColumn(index) {\n const [body] = this.descendant(TableBody);\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 const [body] = this.descendant(TableBody);\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\n rows() {\n const body = this.children.head;\n if (body == null) return [];\n return body.children.map(row => row);\n }\n\n}\n\nTableContainer.blotName = 'table-container';\nTableContainer.tagName = 'TABLE';\nTableContainer.allowedChildren = [TableBody];\nTableBody.requiredContainer = TableContainer;\nTableBody.allowedChildren = [TableRow];\nTableRow.requiredContainer = TableBody;\nTableRow.allowedChildren = [TableCell];\nTableCell.requiredContainer = TableRow;\n\nfunction tableId() {\n const id = Math.random().toString(36).slice(2, 6);\n return \"row-\".concat(id);\n}\n\n\n\n//# sourceURL=webpack://Quill/./formats/table.js?")},"./formats/underline.js": +/*!******************************!*\ + !*** ./formats/underline.js ***! + \******************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ "./blots/inline.js");\n\n\nclass Underline extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__["default"] {}\n\nUnderline.blotName = \'underline\';\nUnderline.tagName = \'U\';\n/* harmony default export */ __webpack_exports__["default"] = (Underline);\n\n//# sourceURL=webpack://Quill/./formats/underline.js?')},"./formats/video.js": +/*!**************************!*\ + !*** ./formats/video.js ***! + \**************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \"./formats/link.js\");\n\n\nconst ATTRIBUTES = ['height', 'width'];\n\nclass Video extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\"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\n return formats;\n }, {});\n }\n\n static sanitize(url) {\n return _link__WEBPACK_IMPORTED_MODULE_1__[\"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 const {\n video\n } = this.value();\n return \"
    \").concat(video, \"\");\n }\n\n}\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n/* harmony default export */ __webpack_exports__[\"default\"] = (Video);\n\n//# sourceURL=webpack://Quill/./formats/video.js?")},"./modules/clipboard.js": +/*!******************************!*\ + !*** ./modules/clipboard.js ***! + \******************************/ +/*! exports provided: default, matchAttributor, matchBlot, matchNewline, matchText, traverse */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Clipboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matchAttributor\", function() { return matchAttributor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matchBlot\", function() { return matchBlot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matchNewline\", function() { return matchNewline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matchText\", function() { return matchText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverse\", function() { return traverse; });\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \"./node_modules/extend/index.js\");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \"./node_modules/quill-delta/dist/Delta.js\");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/quill */ \"./core/quill.js\");\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/logger */ \"./core/logger.js\");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/module */ \"./core/module.js\");\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../formats/align */ \"./formats/align.js\");\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../formats/background */ \"./formats/background.js\");\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \"./formats/code.js\");\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../formats/color */ \"./formats/color.js\");\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../formats/direction */ \"./formats/direction.js\");\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../formats/font */ \"./formats/font.js\");\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../formats/size */ \"./formats/size.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('quill:clipboard');\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')], ['strike', matchAlias.bind(matchAlias, 'strike')], ['style', matchIgnore]];\nconst ATTRIBUTE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\"AlignAttribute\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\"DirectionAttribute\"]].reduce((memo, attr) => {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\nconst STYLE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\"AlignStyle\"], _formats_background__WEBPACK_IMPORTED_MODULE_8__[\"BackgroundStyle\"], _formats_color__WEBPACK_IMPORTED_MODULE_10__[\"ColorStyle\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\"DirectionStyle\"], _formats_font__WEBPACK_IMPORTED_MODULE_12__[\"FontStyle\"], _formats_size__WEBPACK_IMPORTED_MODULE_13__[\"SizeStyle\"]].reduce((memo, attr) => {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nclass Clipboard extends _core_module__WEBPACK_IMPORTED_MODULE_6__[\"default\"] {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('copy', e => this.onCaptureCopy(e, false));\n this.quill.root.addEventListener('cut', e => this.onCaptureCopy(e, true));\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({\n html,\n text\n }, formats = {}) {\n if (formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].blotName]) {\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text, {\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].blotName]: formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].blotName]\n });\n }\n\n if (!html) {\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text || '');\n }\n\n const doc = new DOMParser().parseFromString(html, 'text/html');\n const container = doc.body;\n const nodeMatches = new WeakMap();\n const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\n const delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches); // Remove trailing newline\n\n if (deltaEndsWith(delta, '\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(delta.length() - 1).delete(1));\n }\n\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sources.API) {\n if (typeof index === 'string') {\n const delta = this.convert({\n html: index,\n text: ''\n });\n this.quill.setContents(delta, html);\n this.quill.setSelection(0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sources.SILENT);\n } else {\n const paste = this.convert({\n html,\n text: ''\n });\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sources.SILENT);\n }\n }\n\n onCaptureCopy(e, isCut = false) {\n if (e.defaultPrevented) return;\n e.preventDefault();\n const [range] = this.quill.selection.getRange();\n if (range == null) return;\n const {\n html,\n text\n } = this.onCopy(range, isCut);\n e.clipboardData.setData('text/plain', text);\n e.clipboardData.setData('text/html', html);\n\n if (isCut) {\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sources.USER);\n }\n }\n\n onCapturePaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n e.preventDefault();\n const range = this.quill.getSelection(true);\n if (range == null) return;\n const html = e.clipboardData.getData('text/html');\n const text = e.clipboardData.getData('text/plain');\n const files = Array.from(e.clipboardData.files || []);\n\n if (!html && files.length > 0) {\n this.quill.uploader.upload(range, files);\n } else {\n this.onPaste(range, {\n html,\n text\n });\n }\n }\n\n onCopy(range) {\n const text = this.quill.getText(range);\n const html = this.quill.getSemanticHTML(range);\n return {\n html,\n text\n };\n }\n\n onPaste(range, {\n text,\n html\n }) {\n const formats = this.quill.getFormat(range.index);\n const pastedDelta = this.convert({\n text,\n html\n }, formats);\n debug.log('onPaste', pastedDelta, {\n text,\n html\n });\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(range.index).delete(range.length).concat(pastedDelta);\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"default\"].sources.USER); // range.length contributes to delta.length()\n\n this.quill.setSelection(delta.length() - range.length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\"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 const [selector, matcher] = pair;\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n\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\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\n return delta.reduce((newDelta, op) => {\n if (op.attributes && op.attributes[format]) {\n return newDelta.push(op);\n }\n\n return newDelta.insert(op.insert, extend__WEBPACK_IMPORTED_MODULE_0___default()({}, {\n [format]: value\n }, op.attributes));\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = '';\n\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\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\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();\n\nfunction isPre(node) {\n if (node == null) return false;\n\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\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\n }\n\n 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\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\n return delta.concat(childrenDelta);\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\n }\n\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta, scroll) {\n const attributes = parchment__WEBPACK_IMPORTED_MODULE_2__[\"Attributor\"].keys(node);\n const classes = parchment__WEBPACK_IMPORTED_MODULE_2__[\"ClassAttributor\"].keys(node);\n const styles = parchment__WEBPACK_IMPORTED_MODULE_2__[\"StyleAttributor\"].keys(node);\n const formats = {};\n attributes.concat(classes).concat(styles).forEach(name => {\n let attr = scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\"Scope\"].ATTRIBUTE);\n\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n\n attr = STYLE_ATTRIBUTORS[name];\n\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\n if (Object.keys(formats).length > 0) {\n return applyFormat(delta, formats);\n }\n\n return delta;\n}\n\nfunction matchBlot(node, delta, scroll) {\n const match = scroll.query(node);\n if (match == null) return delta;\n\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\"EmbedBlot\"]) {\n const embed = {};\n const value = match.value(node);\n\n if (value != null) {\n embed[match.blotName] = value;\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(embed, match.formats(node, scroll));\n }\n } else {\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\"BlockBlot\"] && !deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n\n if (typeof match.formats === 'function') {\n return applyFormat(delta, match.blotName, match.formats(node, scroll));\n }\n }\n\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\n}\n\nfunction matchIndent(node, delta, scroll) {\n const match = scroll.query(node);\n\n if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n\n let indent = -1;\n let parent = node.parentNode;\n\n while (parent != null) {\n if (['OL', 'UL'].includes(parent.tagName)) {\n indent += 1;\n }\n\n parent = parent.parentNode;\n }\n\n if (indent <= 0) return delta;\n return delta.reduce((composed, op) => {\n if (op.attributes && op.attributes.list) {\n return composed.push(op);\n }\n\n return composed.insert(op.insert, {\n indent,\n ...(op.attributes || {})\n });\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\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, scroll) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node)) {\n return delta.insert('\\n');\n }\n\n if (delta.length() > 0 && node.nextSibling) {\n let {\n nextSibling\n } = node;\n\n while (nextSibling != null) {\n if (isLine(nextSibling)) {\n return delta.insert('\\n');\n }\n\n const match = scroll.query(nextSibling);\n\n if (match && match.prototype instanceof _blots_block__WEBPACK_IMPORTED_MODULE_3__[\"BlockEmbed\"]) {\n return delta.insert('\\n');\n }\n\n nextSibling = nextSibling.firstChild;\n }\n }\n }\n\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n const formats = {};\n const style = node.style || {};\n\n if (style.fontStyle === 'italic') {\n formats.italic = true;\n }\n\n if (style.textDecoration === 'underline') {\n formats.underline = true;\n }\n\n if (style.textDecoration === 'line-through') {\n formats.strike = true;\n }\n\n if (style.fontWeight.startsWith('bold') || parseInt(style.fontWeight, 10) >= 700) {\n formats.bold = true;\n }\n\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert('\\t').concat(delta);\n }\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; // Word represents empty line with  \n\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n\n if (text.trim().length === 0 && text.includes('\\n')) {\n return delta;\n }\n\n if (!isPre(node)) {\n const replacer = (collapse, match) => {\n const replaced = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\n return replaced.length < 1 && collapse ? ' ' : replaced;\n };\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\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\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\n return delta.insert(text);\n}\n\n\n\n//# sourceURL=webpack://Quill/./modules/clipboard.js?")},"./modules/history.js": +/*!****************************!*\ + !*** ./modules/history.js ***! + \****************************/ +/*! exports provided: default, getLastChangeIndex */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return History; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLastChangeIndex", function() { return getLastChangeIndex; });\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ "./node_modules/parchment/src/parchment.ts");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ "./core/quill.js");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ "./core/module.js");\n\n\n\n\nclass History extends _core_module__WEBPACK_IMPORTED_MODULE_2__["default"] {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].events.TEXT_CHANGE || this.ignoreChange) return;\n\n if (!this.options.userOnly || source === _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({\n key: \'z\',\n shortKey: true\n }, this.undo.bind(this));\n this.quill.keyboard.addBinding({\n key: \'z\',\n shortKey: true,\n shiftKey: true\n }, this.redo.bind(this));\n\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({\n key: \'y\',\n shortKey: true\n }, 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 const base = this.quill.getContents();\n const inverseDelta = delta.invert(base);\n this.stack[dest].push(inverseDelta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n this.ignoreChange = false;\n const index = getLastChangeIndex(this.quill.scroll, delta);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = {\n undo: [],\n redo: []\n };\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 = changeDelta.invert(oldDelta);\n const timestamp = Date.now();\n\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);\n } else {\n this.lastRecorded = timestamp;\n }\n\n if (undoDelta.length() === 0) return;\n this.stack.undo.push(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 transformStack(this.stack.undo, delta);\n transformStack(this.stack.redo, delta);\n }\n\n undo() {\n this.change(\'undo\', \'redo\');\n }\n\n}\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction transformStack(stack, delta) {\n let remoteDelta = delta;\n\n for (let i = stack.length - 1; i >= 0; i -= 1) {\n const oldDelta = stack[i];\n stack[i] = remoteDelta.transform(oldDelta, true);\n remoteDelta = oldDelta.transform(remoteDelta);\n\n if (stack[i].length() === 0) {\n stack.splice(i, 1);\n }\n }\n}\n\nfunction endsWithNewlineChange(scroll, delta) {\n const lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n\n if (lastOp.insert != null) {\n return typeof lastOp.insert === \'string\' && lastOp.insert.endsWith(\'\\n\');\n }\n\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(attr => {\n return scroll.query(attr, parchment__WEBPACK_IMPORTED_MODULE_0__["Scope"].BLOCK) != null;\n });\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\n if (endsWithNewlineChange(scroll, delta)) {\n changeIndex -= 1;\n }\n\n return changeIndex;\n}\n\n\n\n//# sourceURL=webpack://Quill/./modules/history.js?')},"./modules/keyboard.js": +/*!*****************************!*\ + !*** ./modules/keyboard.js ***! + \*****************************/ +/*! exports provided: default, SHORTKEY, normalize */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Keyboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHORTKEY\", function() { return SHORTKEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \"./node_modules/clone/clone.js\");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \"./node_modules/deep-equal/index.js\");\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \"./node_modules/extend/index.js\");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \"./node_modules/quill-delta/dist/Delta.js\");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/quill */ \"./core/quill.js\");\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/logger */ \"./core/logger.js\");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/module */ \"./core/module.js\");\n\n\n\n\n\n\n\n\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"])('quill:keyboard');\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nclass Keyboard extends _core_module__WEBPACK_IMPORTED_MODULE_7__[\"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\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({\n key: 'Enter',\n shiftKey: null\n }, this.handleEnter);\n this.addBinding({\n key: 'Enter',\n metaKey: null,\n ctrlKey: null,\n altKey: null\n }, () => {});\n\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: true\n }, this.handleBackspace);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: true\n }, this.handleDelete);\n } else {\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: true,\n prefix: /^.?$/\n }, this.handleBackspace);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: true,\n suffix: /^.?$/\n }, this.handleDelete);\n }\n\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: false\n }, this.handleDeleteRange);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: false\n }, this.handleDeleteRange);\n this.addBinding({\n key: 'Backspace',\n altKey: null,\n ctrlKey: null,\n metaKey: null,\n shiftKey: null\n }, {\n collapsed: true,\n offset: 0\n }, this.handleBackspace);\n this.listen();\n }\n\n addBinding(keyBinding, context = {}, handler = {}) {\n const binding = normalize(keyBinding);\n\n if (binding == null) {\n debug.warn('Attempted to add invalid keyboard binding', binding);\n return;\n }\n\n if (typeof context === 'function') {\n context = {\n handler: context\n };\n }\n\n if (typeof handler === 'function') {\n handler = {\n handler\n };\n }\n\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\n keys.forEach(key => {\n const singleBinding = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, binding, {\n key\n }, 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 || evt.isComposing) 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 const [line, offset] = this.quill.getLine(range.index);\n const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n const prefixText = leafStart instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\"TextBlot\"] ? leafStart.value().slice(0, offsetStart) : '';\n const suffixText = leafEnd instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\"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\n if (binding.empty != null && binding.empty !== curContext.empty) {\n return false;\n }\n\n if (binding.offset != null && binding.offset !== curContext.offset) {\n return false;\n }\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 deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\n return false;\n }\n\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\n return false;\n }\n\n return binding.handler.call(this, range, curContext, binding) !== true;\n });\n\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n\n handleBackspace(range, context) {\n // Check for astral symbols\n const length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let formats = {};\n const [line] = this.quill.getLine(range.index);\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - length).delete(length);\n\n if (context.offset === 0) {\n // Always deleting newline here, length always 1\n const [prev] = this.quill.getLine(range.index - 1);\n\n if (prev) {\n const curFormats = line.formats();\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\"AttributeMap\"].diff(curFormats, prevFormats) || {};\n\n if (Object.keys(formats).length > 0) {\n // line.length() - 1 targets \\n in line, another -1 for newline being deleted\n const formatDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - 2).retain(1, formats);\n delta = delta.compose(formatDelta);\n }\n }\n }\n\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.focus();\n }\n\n 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 const [line] = this.quill.getLine(range.index);\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(length);\n\n if (context.offset >= line.length() - 1) {\n const [next] = this.quill.getLine(range.index + 1);\n\n if (next) {\n const curFormats = line.formats();\n const nextFormats = this.quill.getFormat(range.index, 1);\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\"AttributeMap\"].diff(curFormats, nextFormats) || {};\n\n if (Object.keys(formats).length > 0) {\n delta = delta.retain(next.length() - 1).retain(1, formats);\n }\n }\n }\n\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.focus();\n }\n\n handleDeleteRange(range) {\n const lines = this.quill.getLines(range);\n let formats = {};\n\n if (lines.length > 1) {\n const firstFormats = lines[0].formats();\n const lastFormats = lines[lines.length - 1].formats();\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\"AttributeMap\"].diff(lastFormats, firstFormats) || {};\n }\n\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n this.quill.focus();\n }\n\n handleEnter(range, context) {\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\n if (this.quill.scroll.query(format, parchment__WEBPACK_IMPORTED_MODULE_4__[\"Scope\"].BLOCK) && !Array.isArray(context.format[format])) {\n formats[format] = context.format[format];\n }\n\n return formats;\n }, {});\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\n', lineFormats);\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"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 === 'code' || name === 'link') return;\n this.quill.format(name, context.format[name], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\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\n handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n return false;\n }\n\n },\n outdent: {\n key: 'Tab',\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n\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', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n return false;\n }\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\n handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\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\n handler(range) {\n this.quill.deleteText(range.index - 1, 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n },\n tab: {\n key: 'Tab',\n\n handler(range, context) {\n if (context.format.table) return true;\n this.quill.history.cutoff();\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n return false;\n }\n\n },\n 'blockquote empty enter': {\n key: 'Enter',\n collapsed: true,\n format: ['blockquote'],\n empty: true,\n\n handler() {\n this.quill.format('blockquote', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n },\n 'list empty enter': {\n key: 'Enter',\n collapsed: true,\n format: ['list'],\n empty: true,\n\n handler(range, context) {\n const formats = {\n list: false\n };\n\n if (context.format.indent) {\n formats.indent = false;\n }\n\n this.quill.formatLine(range.index, range.length, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n },\n 'checklist enter': {\n key: 'Enter',\n collapsed: true,\n format: {\n list: 'checked'\n },\n\n handler(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, line.formats(), {\n list: 'checked'\n });\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, {\n list: 'unchecked'\n });\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n this.quill.scrollIntoView();\n }\n\n },\n 'header enter': {\n key: 'Enter',\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n\n handler(range, context) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, {\n header: null\n });\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n this.quill.scrollIntoView();\n }\n\n },\n 'table backspace': {\n key: 'Backspace',\n format: ['table'],\n collapsed: true,\n offset: 0,\n\n handler() {}\n\n },\n 'table delete': {\n key: 'Delete',\n format: ['table'],\n collapsed: true,\n suffix: /^$/,\n\n handler() {}\n\n },\n 'table enter': {\n key: 'Enter',\n shiftKey: null,\n format: ['table'],\n\n handler(range) {\n const module = this.quill.getModule('table');\n\n if (module) {\n const [table, row, cell, offset] = module.getTable(range);\n const shift = tableSide(table, row, cell, offset);\n if (shift == null) return;\n let index = table.offset();\n\n if (shift < 0) {\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\n');\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n } else if (shift > 0) {\n index += table.length();\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\n');\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n }\n }\n\n },\n 'table tab': {\n key: 'Tab',\n shiftKey: null,\n format: ['table'],\n\n handler(range, context) {\n const {\n event,\n line: cell\n } = context;\n const offset = cell.offset(this.quill.scroll);\n\n if (event.shiftKey) {\n this.quill.setSelection(offset - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(offset + cell.length(), _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n }\n\n },\n 'list autofill': {\n key: ' ',\n shiftKey: null,\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\n handler(range, context) {\n if (this.quill.scroll.query('list') == null) return true;\n const {\n length\n } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n\n case '[x]':\n value = 'checked';\n break;\n\n case '-':\n case '*':\n value = 'bullet';\n break;\n\n default:\n value = 'ordered';\n }\n\n this.quill.insertText(range.index, ' ', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.history.cutoff();\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\n list: value\n });\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n return false;\n }\n\n },\n 'code exit': {\n key: 'Enter',\n collapsed: true,\n format: ['code-block'],\n prefix: /^$/,\n suffix: /^\\s*$/,\n\n handler(range) {\n const [line, offset] = this.quill.getLine(range.index);\n let numLines = 2;\n let cur = line;\n\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\n cur = cur.prev;\n numLines -= 1; // Requisite prev lines are empty\n\n if (numLines <= 0) {\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - offset - 2).retain(1, {\n 'code-block': null\n }).delete(1);\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n return false;\n }\n }\n\n return true;\n }\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 makeCodeBlockHandler(indent) {\n return {\n key: 'Tab',\n shiftKey: !indent,\n format: {\n 'code-block': true\n },\n\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 {\n index,\n length\n } = range;\n lines.forEach((line, i) => {\n if (indent) {\n line.insertAt(0, CodeBlock.TAB);\n\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\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n });\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n this.quill.setSelection(index, length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.SILENT);\n }\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\n handler(range) {\n let {\n index\n } = range;\n\n if (key === 'ArrowRight') {\n index += range.length + 1;\n }\n\n const [leaf] = this.quill.getLeaf(index);\n if (!(leaf instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\"EmbedBlot\"])) return true;\n\n if (key === 'ArrowLeft') {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n } else if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n return false;\n }\n\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0],\n shortKey: true,\n\n handler(range, context) {\n this.quill.format(format, !context.format[format], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n\n };\n}\n\nfunction makeTableArrowHandler(up) {\n return {\n key: up ? 'ArrowUp' : 'ArrowDown',\n collapsed: true,\n format: ['table'],\n\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\n if (targetRow != null) {\n if (targetRow.statics.blotName === 'table-row') {\n let targetCell = targetRow.children.head;\n let cur = cell;\n\n while (cur.prev != null) {\n cur = cur.prev;\n targetCell = targetCell.next;\n }\n\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\n this.quill.setSelection(index, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n } else {\n const targetLine = cell.table()[key];\n\n if (targetLine != null) {\n if (up) {\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\"default\"].sources.USER);\n }\n }\n }\n\n return false;\n }\n\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n binding = {\n key: binding\n };\n } else if (typeof binding === 'object') {\n binding = clone__WEBPACK_IMPORTED_MODULE_0___default()(binding, false);\n } else {\n return null;\n }\n\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\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\n return cell.prev == null ? -1 : 1;\n }\n\n if (row.prev == null) {\n return -1;\n }\n\n if (row.next == null) {\n return 1;\n }\n\n return null;\n}\n\n\n\n//# sourceURL=webpack://Quill/./modules/keyboard.js?")},"./modules/syntax.js": +/*!***************************!*\ + !*** ./modules/syntax.js ***! + \***************************/ +/*! exports provided: CodeBlock, CodeToken, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CodeBlock\", function() { return SyntaxCodeBlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CodeToken\", function() { return CodeToken; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Syntax; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \"./node_modules/quill-delta/dist/Delta.js\");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/inline */ \"./blots/inline.js\");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/quill */ \"./core/quill.js\");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \"./core/module.js\");\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/block */ \"./blots/block.js\");\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/break */ \"./blots/break.js\");\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/cursor */ \"./blots/cursor.js\");\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/text */ \"./blots/text.js\");\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \"./formats/code.js\");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clipboard */ \"./modules/clipboard.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst TokenAttributor = new parchment__WEBPACK_IMPORTED_MODULE_1__[\"ClassAttributor\"]('code-token', 'hljs', {\n scope: parchment__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].INLINE\n});\n\nclass CodeToken extends _blots_inline__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n static formats(node, scroll) {\n while (node != null && node !== scroll.domNode) {\n if (node.classList && node.classList.contains(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].className)) {\n return super.formats(node, scroll);\n }\n\n node = node.parentNode;\n }\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\n if (!TokenAttributor.value(this.domNode)) {\n this.unwrap();\n }\n }\n\n}\n\nCodeToken.blotName = 'code-token';\nCodeToken.className = 'ql-token';\n\nclass SyntaxCodeBlock extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"] {\n static create(value) {\n const domNode = super.create(value);\n\n if (typeof value === 'string') {\n domNode.setAttribute('data-language', value);\n }\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\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}\n\nclass SyntaxCodeBlockContainer extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\"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\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 = \"\".concat(nodes.map(node => node.textContent).join('\\n'), \"\\n\");\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n\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(Object(_blots_block__WEBPACK_IMPORTED_MODULE_5__[\"blockDelta\"])(child, false));\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n const delta = highlight(text, language);\n oldDelta.diff(delta).reduce((index, {\n retain,\n attributes\n }) => {\n // Should be all retains\n if (!retain) return index;\n\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\n return index + retain;\n }, 0);\n }\n\n this.cachedText = text;\n this.forceNext = false;\n }\n }\n\n optimize(context) {\n super.optimize(context);\n\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n\n if (language !== this.uiNode.value) {\n this.uiNode.value = language;\n }\n }\n }\n\n}\n\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\nSyntaxCodeBlock.allowedChildren = [CodeToken, _blots_cursor__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _blots_text__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _blots_break__WEBPACK_IMPORTED_MODULE_6__[\"default\"]];\n\nclass Syntax extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\"default\"] {\n static register() {\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\"default\"].register(CodeToken, true);\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\"default\"].register(SyntaxCodeBlock, true);\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\"default\"].register(SyntaxCodeBlockContainer, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n\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\n this.languages = this.options.languages.reduce((memo, {\n key\n }) => {\n memo[key] = true;\n return memo;\n }, {});\n this.highlightBlot = this.highlightBlot.bind(this);\n this.initListener();\n this.initTimer();\n }\n\n initListener() {\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\"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(({\n key,\n label\n }) => {\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\n this.highlight(blot, true);\n });\n\n if (blot.uiNode == null) {\n blot.attachUI(select);\n\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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sources.SILENT);\n\n if (range != null) {\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sources.SILENT);\n }\n }\n\n highlightBlot(text, language = 'plain') {\n language = this.languages[language] ? language : 'plain';\n\n if (language === 'plain') {\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_8__[\"escapeText\"])(text).split('\\n').reduce((delta, line, i) => {\n if (i !== 0) {\n delta.insert('\\n', {\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].blotName]: language\n });\n }\n\n return delta.insert(line);\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\n }\n\n const container = this.quill.root.ownerDocument.createElement('div');\n container.classList.add(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].className);\n container.innerHTML = this.options.hljs.highlight(language, text).value;\n return Object(_clipboard__WEBPACK_IMPORTED_MODULE_10__[\"traverse\"])(this.quill.scroll, container, [(node, delta) => {\n const value = TokenAttributor.value(node);\n\n if (value) {\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length(), {\n [CodeToken.blotName]: value\n }));\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', {\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\"default\"].blotName]: language\n });\n return memo.insert(nodeText);\n }, delta);\n }], new WeakMap());\n }\n\n}\n\nSyntax.DEFAULTS = {\n hljs: (() => {\n return window.hljs;\n })(),\n interval: 1000,\n languages: [{\n key: 'plain',\n label: 'Plain'\n }, {\n key: 'bash',\n label: 'Bash'\n }, {\n key: 'cpp',\n label: 'C++'\n }, {\n key: 'cs',\n label: 'C#'\n }, {\n key: 'css',\n label: 'CSS'\n }, {\n key: 'diff',\n label: 'Diff'\n }, {\n key: 'xml',\n label: 'HTML/XML'\n }, {\n key: 'java',\n label: 'Java'\n }, {\n key: 'javascript',\n label: 'Javascript'\n }, {\n key: 'markdown',\n label: 'Markdown'\n }, {\n key: 'php',\n label: 'PHP'\n }, {\n key: 'python',\n label: 'Python'\n }, {\n key: 'ruby',\n label: 'Ruby'\n }, {\n key: 'sql',\n label: 'SQL'\n }]\n};\n\n\n//# sourceURL=webpack://Quill/./modules/syntax.js?")},"./modules/table.js": +/*!**************************!*\ + !*** ./modules/table.js ***! + \**************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ "./node_modules/quill-delta/dist/Delta.js");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ "./core/quill.js");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ "./core/module.js");\n/* harmony import */ var _formats_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/table */ "./formats/table.js");\n\n\n\n\n\nclass Table extends _core_module__WEBPACK_IMPORTED_MODULE_2__["default"] {\n static register() {\n _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__["TableCell"]);\n _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__["TableRow"]);\n _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__["TableBody"]);\n _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__["TableContainer"]);\n }\n\n constructor(...args) {\n super(...args);\n this.listenBalanceCells();\n }\n\n balanceTables() {\n this.quill.scroll.descendants(_formats_table__WEBPACK_IMPORTED_MODULE_3__["TableContainer"]).forEach(table => {\n table.balanceCells();\n });\n }\n\n deleteColumn() {\n const [table,, cell] = this.getTable();\n if (cell == null) return;\n table.deleteColumn(cell.cellOffset());\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n }\n\n deleteRow() {\n const [, row] = this.getTable();\n if (row == null) return;\n row.remove();\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n }\n\n deleteTable() {\n const [table] = this.getTable();\n if (table == null) return;\n const offset = table.offset();\n table.remove();\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n this.quill.setSelection(offset, _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.SILENT);\n }\n\n getTable(range = this.quill.getSelection()) {\n if (range == null) return [null, null, null, -1];\n const [cell, offset] = this.quill.getLine(range.index);\n\n if (cell == null || cell.statics.blotName !== _formats_table__WEBPACK_IMPORTED_MODULE_3__["TableCell"].blotName) {\n return [null, null, null, -1];\n }\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 const [table, row, cell] = this.getTable(range);\n if (cell == null) return;\n const column = cell.cellOffset();\n table.insertColumn(column + offset);\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n let shift = row.rowOffset();\n\n if (offset === 0) {\n shift += 1;\n }\n\n this.quill.setSelection(range.index + shift, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__["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 const [table, row, cell] = this.getTable(range);\n if (cell == null) return;\n const index = row.rowOffset();\n table.insertRow(index + offset);\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n\n if (offset > 0) {\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.SILENT);\n } else {\n this.quill.setSelection(range.index + row.children.length, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__["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, {\n table: Object(_formats_table__WEBPACK_IMPORTED_MODULE_3__["tableId"])()\n });\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index));\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.SILENT);\n this.balanceTables();\n }\n\n listenBalanceCells() {\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].events.SCROLL_OPTIMIZE, mutations => {\n mutations.some(mutation => {\n if ([\'TD\', \'TR\', \'TBODY\', \'TABLE\'].includes(mutation.target.tagName)) {\n this.quill.once(_core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].events.TEXT_CHANGE, (delta, old, source) => {\n if (source !== _core_quill__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER) return;\n this.balanceTables();\n });\n return true;\n }\n\n return false;\n });\n });\n }\n\n}\n\n/* harmony default export */ __webpack_exports__["default"] = (Table);\n\n//# sourceURL=webpack://Quill/./modules/table.js?')},"./modules/toolbar.js": +/*!****************************!*\ + !*** ./modules/toolbar.js ***! + \****************************/ +/*! exports provided: default, addControls */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toolbar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addControls\", function() { return addControls; });\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \"./node_modules/quill-delta/dist/Delta.js\");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \"./node_modules/parchment/src/parchment.ts\");\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \"./core/quill.js\");\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/logger */ \"./core/logger.js\");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \"./core/module.js\");\n\n\n\n\n\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('quill:toolbar');\n\nclass Toolbar extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\"default\"] {\n constructor(quill, options) {\n super(quill, options);\n\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\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\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(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].events.EDITOR_CHANGE, (type, range) => {\n if (type === _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].events.SCROLL_OPTIMIZE, () => {\n const [range] = this.quill.selection.getRange(); // 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\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\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\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, e => {\n let value;\n\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n const selected = input.options[input.selectedIndex];\n\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\n e.preventDefault();\n }\n\n this.quill.focus();\n const [range] = this.quill.selection.getRange();\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__WEBPACK_IMPORTED_MODULE_1__[\"EmbedBlot\"]) {\n value = prompt(\"Enter \".concat(format)); // eslint-disable-line no-alert\n\n if (!value) return;\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length).insert({\n [format]: value\n }), _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n } else {\n this.quill.format(format, value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\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 const [format, input] = pair;\n\n if (input.tagName === 'SELECT') {\n let option;\n\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\n if (typeof value === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n }\n\n option = input.querySelector(\"option[value=\\\"\".concat(value, \"\\\"]\"));\n }\n\n if (option == null) {\n input.value = ''; // TODO make configurable?\n\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\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-\".concat(format));\n\n if (value != null) {\n input.value = value;\n }\n\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\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\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-\".concat(format));\n values.forEach(value => {\n const option = document.createElement('option');\n\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\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\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__WEBPACK_IMPORTED_MODULE_1__[\"Scope\"].INLINE) != null) {\n this.quill.format(name, false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n });\n } else {\n this.quill.removeFormat(range, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n },\n\n direction(value) {\n const {\n align\n } = this.quill.getFormat();\n\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n\n this.quill.format('direction', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n },\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\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, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n },\n\n link(value) {\n if (value === true) {\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\n }\n\n this.quill.format('link', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n },\n\n list(value) {\n const range = this.quill.getSelection();\n const formats = this.quill.getFormat(range);\n\n if (value === 'check') {\n if (formats.list === 'checked' || formats.list === 'unchecked') {\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n } else {\n this.quill.format('list', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sources.USER);\n }\n }\n\n }\n};\n\n\n//# sourceURL=webpack://Quill/./modules/toolbar.js?")},"./modules/uploader.js": +/*!*****************************!*\ + !*** ./modules/uploader.js ***! + \*****************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ "./node_modules/quill-delta/dist/Delta.js");\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ "./core/emitter.js");\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ "./core/module.js");\n\n\n\n\nclass Uploader extends _core_module__WEBPACK_IMPORTED_MODULE_2__["default"] {\n constructor(quill, options) {\n super(quill, options);\n quill.root.addEventListener(\'drop\', e => {\n e.preventDefault();\n let native;\n\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\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\n if (uploads.length > 0) {\n this.options.handler.call(this, range, uploads);\n }\n }\n\n}\n\nUploader.DEFAULTS = {\n mimetypes: [\'image/png\', \'image/jpeg\'],\n\n handler(range, files) {\n const promises = files.map(file => {\n return new Promise(resolve => {\n const reader = new FileReader();\n\n reader.onload = e => {\n resolve(e.target.result);\n };\n\n reader.readAsDataURL(file);\n });\n });\n Promise.all(promises).then(images => {\n const update = images.reduce((delta, image) => {\n return delta.insert({\n image\n });\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length));\n this.quill.updateContents(update, _core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER);\n this.quill.setSelection(range.index + images.length, _core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].sources.SILENT);\n });\n }\n\n};\n/* harmony default export */ __webpack_exports__["default"] = (Uploader);\n\n//# sourceURL=webpack://Quill/./modules/uploader.js?')},"./node_modules/array-filter/index.js": +/*!********************************************!*\ + !*** ./node_modules/array-filter/index.js ***! + \********************************************/ +/*! no static exports found */function(module,exports){eval("\n/**\n * Array#filter.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Object=} self\n * @return {Array}\n * @throw TypeError\n */\n\nmodule.exports = function (arr, fn, self) {\n if (arr.filter) return arr.filter(fn, self);\n if (void 0 === arr || null === arr) throw new TypeError;\n if ('function' != typeof fn) throw new TypeError;\n var ret = [];\n for (var i = 0; i < arr.length; i++) {\n if (!hasOwn.call(arr, i)) continue;\n var val = arr[i];\n if (fn.call(self, val, i, arr)) ret.push(val);\n }\n return ret;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n\n//# sourceURL=webpack://Quill/./node_modules/array-filter/index.js?")},"./node_modules/available-typed-arrays/index.js": +/*!******************************************************!*\ + !*** ./node_modules/available-typed-arrays/index.js ***! + \******************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar filter = __webpack_require__(/*! array-filter */ \"./node_modules/array-filter/index.js\");\n\nmodule.exports = function availableTypedArrays() {\n\treturn filter([\n\t\t'BigInt64Array',\n\t\t'BigUint64Array',\n\t\t'Float32Array',\n\t\t'Float64Array',\n\t\t'Int16Array',\n\t\t'Int32Array',\n\t\t'Int8Array',\n\t\t'Uint16Array',\n\t\t'Uint32Array',\n\t\t'Uint8Array',\n\t\t'Uint8ClampedArray'\n\t], function (typedArray) {\n\t\treturn typeof global[typedArray] === 'function';\n\t});\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://Quill/./node_modules/available-typed-arrays/index.js?")},"./node_modules/clone/clone.js": +/*!*************************************!*\ + !*** ./node_modules/clone/clone.js ***! + \*************************************/ +/*! no static exports found */function(module,exports){eval("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?")},"./node_modules/deep-equal/index.js": +/*!******************************************!*\ + !*** ./node_modules/deep-equal/index.js ***! + \******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar objectKeys = __webpack_require__(/*! object-keys */ \"./node_modules/deep-equal/node_modules/object-keys/index.js\");\nvar isArguments = __webpack_require__(/*! is-arguments */ \"./node_modules/is-arguments/index.js\");\nvar is = __webpack_require__(/*! object-is */ \"./node_modules/object-is/index.js\");\nvar isRegex = __webpack_require__(/*! is-regex */ \"./node_modules/deep-equal/node_modules/is-regex/index.js\");\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \"./node_modules/regexp.prototype.flags/index.js\");\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/deep-equal/node_modules/isarray/index.js\");\nvar isDate = __webpack_require__(/*! is-date-object */ \"./node_modules/deep-equal/node_modules/is-date-object/index.js\");\nvar whichBoxedPrimitive = __webpack_require__(/*! which-boxed-primitive */ \"./node_modules/which-boxed-primitive/index.js\");\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\");\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\");\nvar whichCollection = __webpack_require__(/*! which-collection */ \"./node_modules/which-collection/index.js\");\nvar getIterator = __webpack_require__(/*! es-get-iterator */ \"./node_modules/es-get-iterator/index.js\");\nvar getSideChannel = __webpack_require__(/*! side-channel */ \"./node_modules/side-channel/index.js\");\nvar whichTypedArray = __webpack_require__(/*! which-typed-array */ \"./node_modules/which-typed-array/index.js\");\nvar assign = __webpack_require__(/*! object.assign */ \"./node_modules/object.assign/index.js\");\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\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 */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n if (whichTypedArray(a) !== whichTypedArray(b)) {\n return false;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\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\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\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]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/index.js?")},"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js": +/*!**************************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js ***! + \**************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js": +/*!******************************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js ***! + \******************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js ***! + \*******************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar callBind = __webpack_require__(/*! ./callBind */ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js?")},"./node_modules/deep-equal/node_modules/is-date-object/index.js": +/*!**********************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/is-date-object/index.js ***! + \**********************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-date-object/index.js?")},"./node_modules/deep-equal/node_modules/is-regex/index.js": +/*!****************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/is-regex/index.js ***! + \****************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar has = __webpack_require__(/*! has */ \"./node_modules/has/src/index.js\");\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0; // eslint-disable-line no-param-reassign\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex; // eslint-disable-line no-param-reassign\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-regex/index.js?")},"./node_modules/deep-equal/node_modules/isarray/index.js": +/*!***************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/isarray/index.js ***! + \***************************************************************/ +/*! no static exports found */function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/isarray/index.js?")},"./node_modules/deep-equal/node_modules/object-keys/implementation.js": +/*!****************************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/object-keys/implementation.js ***! + \****************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __webpack_require__(/*! ./isArguments */ \"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\"); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/implementation.js?")},"./node_modules/deep-equal/node_modules/object-keys/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/object-keys/index.js ***! + \*******************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(/*! ./isArguments */ "./node_modules/deep-equal/node_modules/object-keys/isArguments.js");\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ "./node_modules/deep-equal/node_modules/object-keys/implementation.js");\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/index.js?')},"./node_modules/deep-equal/node_modules/object-keys/isArguments.js": +/*!*************************************************************************!*\ + !*** ./node_modules/deep-equal/node_modules/object-keys/isArguments.js ***! + \*************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/isArguments.js?")},"./node_modules/define-properties/index.js": +/*!*************************************************!*\ + !*** ./node_modules/define-properties/index.js ***! + \*************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar keys = __webpack_require__(/*! object-keys */ \"./node_modules/object-keys/index.js\");\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n//# sourceURL=webpack://Quill/./node_modules/define-properties/index.js?")},"./node_modules/es-get-iterator/index.js": +/*!***********************************************!*\ + !*** ./node_modules/es-get-iterator/index.js ***! + \***********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = __webpack_require__(/*! is-arguments */ \"./node_modules/is-arguments/index.js\");\n\nif (__webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")() || __webpack_require__(/*! has-symbols/shams */ \"./node_modules/has-symbols/shams.js\")()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/es-get-iterator/node_modules/isarray/index.js\");\n\tvar isString = __webpack_require__(/*! is-string */ \"./node_modules/is-string/index.js\");\n\tvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\");\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\");\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = getNonCollectionIterator;\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = __webpack_require__(/*! is-map */ \"./node_modules/is-map/index.js\");\n\t\tvar isSet = __webpack_require__(/*! is-set */ \"./node_modules/is-set/index.js\");\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t\tvar getStopIterationIterator = function (iterator) {\n\t\t\t\tvar done = false;\n\t\t\t\treturn {\n\t\t\t\t\tnext: function next() {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: done,\n\t\t\t\t\t\t\t\tvalue: done ? undefined : iterator.next()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: true,\n\t\t\t\t\t\t\t\tvalue: undefined\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};\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/index.js?")},"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js ***! + \*******************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js ***! + \***********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js": +/*!************************************************************************************!*\ + !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js ***! + \************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar callBind = __webpack_require__(/*! ./callBind */ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js?")},"./node_modules/es-get-iterator/node_modules/isarray/index.js": +/*!********************************************************************!*\ + !*** ./node_modules/es-get-iterator/node_modules/isarray/index.js ***! + \********************************************************************/ +/*! no static exports found */function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/isarray/index.js?")},"./node_modules/eventemitter3/index.js": +/*!*********************************************!*\ + !*** ./node_modules/eventemitter3/index.js ***! + \*********************************************/ +/*! no static exports found */function(module,exports){eval("'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?")},"./node_modules/extend/index.js": +/*!**************************************!*\ + !*** ./node_modules/extend/index.js ***! + \**************************************/ +/*! no static exports found */function(module,exports){eval("'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\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\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\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 = getProperty(target, name);\n\t\t\t\tcopy = getProperty(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\tsetProperty(target, { name: name, newValue: 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\tsetProperty(target, { name: name, newValue: 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?")},"./node_modules/fast-diff/diff.js": +/*!****************************************!*\ + !*** ./node_modules/fast-diff/diff.js ***! + \****************************************/ +/*! no static exports found */function(module,exports){eval("/**\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|Object} [cursor_pos] Edit position in text1 or object with more info\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\n // Check for equality\n if (text1 === text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n if (cursor_pos != null) {\n var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n if (editdiff) {\n return editdiff;\n }\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, _fix_unicode);\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 = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ];\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 (\n x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) === text2.charAt(y1)\n ) {\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 (\n x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\n ) {\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 (\n text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)\n ) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n pointermid--;\n }\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 || text1.slice(-1) !== text2.slice(-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 (\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)\n ) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n pointermid--;\n }\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(\n longtext.substring(i), shorttext.substring(j));\n var suffixLength = diff_commonSuffix(\n longtext.substring(0, i), shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(\n j - suffixLength, j) + 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 [\n best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common\n ];\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, Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext, 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 * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\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 if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n diffs.splice(pointer, 1);\n continue;\n }\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n\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 var previous_equality = pointer - count_insert - count_delete - 1;\n if (fix_unicode) {\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\n // we assume that the old and new text in the diff are complete and correct\n // unicode-encoded JS strings, but the tuple boundaries may fall between\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\n // of the previous equality and the beginning of this equality. this may create\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\n // particular case, both equalities go away, we absorb any previous inequalities,\n // and we keep scanning for the next equality before rewriting the tuples.\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n var stray = diffs[previous_equality][1].slice(-1);\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\n text_delete = stray + text_delete;\n text_insert = stray + text_insert;\n if (!diffs[previous_equality][1]) {\n // emptied out previous equality, so delete it and include previous delete/insert\n diffs.splice(previous_equality, 1);\n pointer--;\n var k = previous_equality - 1;\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n count_insert++;\n text_insert = diffs[k][1] + text_insert;\n k--;\n }\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n count_delete++;\n text_delete = diffs[k][1] + text_delete;\n k--;\n }\n previous_equality = k;\n }\n }\n if (starts_with_pair_end(diffs[pointer][1])) {\n var stray = diffs[pointer][1].charAt(0);\n diffs[pointer][1] = diffs[pointer][1].slice(1);\n text_delete += stray;\n text_insert += stray;\n }\n }\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n // for empty equality not at end, wait for next equality\n diffs.splice(pointer, 1);\n break;\n }\n if (text_delete.length > 0 || text_insert.length > 0) {\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n if (text_delete.length > 0 && text_insert.length > 0) {\n // Factor out any common prefixes.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if (previous_equality >= 0) {\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, 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 suffixes.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] =\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n var n = count_insert + count_delete;\n if (text_delete.length === 0 && text_insert.length === 0) {\n diffs.splice(pointer - n, n);\n pointer = pointer - n;\n } else if (text_delete.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 1;\n } else if (text_insert.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n pointer = pointer - n + 1;\n } else {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 2;\n }\n }\n 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, fix_unicode);\n }\n};\n\nfunction is_surrogate_pair_start(charCode) {\n return charCode >= 0xD800 && charCode <= 0xDBFF;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\n}\n\nfunction starts_with_pair_end(str) {\n return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n var ret = [];\n for (var i = 0; i < tuples.length; i++) {\n if (tuples[i][1].length > 0) {\n ret.push(tuples[i]);\n }\n }\n return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n return null;\n }\n return remove_empty_tuples([\n [DIFF_EQUAL, before],\n [DIFF_DELETE, oldMiddle],\n [DIFF_INSERT, newMiddle],\n [DIFF_EQUAL, after]\n ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n // note: this runs after equality check has ruled out exact equality\n var oldRange = typeof cursor_pos === 'number' ?\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n var newRange = typeof cursor_pos === 'number' ?\n null : cursor_pos.newRange;\n // take into account the old and new selection to generate the best diff\n // possible for a text edit. for example, a text change from \"xxx\" to \"xx\"\n // could be a delete or forwards-delete of any one of the x's, or the\n // result of selecting two of the x's and typing \"x\".\n var oldLength = oldText.length;\n var newLength = newText.length;\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n // see if we have an insert or delete before or after cursor\n var oldCursor = oldRange.index;\n var oldBefore = oldText.slice(0, oldCursor);\n var oldAfter = oldText.slice(oldCursor);\n var maybeNewCursor = newRange ? newRange.index : null;\n editBefore: {\n // is this an insert or delete right before oldCursor?\n var newCursor = oldCursor + newLength - oldLength;\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n break editBefore;\n }\n if (newCursor < 0 || newCursor > newLength) {\n break editBefore;\n }\n var newBefore = newText.slice(0, newCursor);\n var newAfter = newText.slice(newCursor);\n if (newAfter !== oldAfter) {\n break editBefore;\n }\n var prefixLength = Math.min(oldCursor, newCursor);\n var oldPrefix = oldBefore.slice(0, prefixLength);\n var newPrefix = newBefore.slice(0, prefixLength);\n if (oldPrefix !== newPrefix) {\n break editBefore;\n }\n var oldMiddle = oldBefore.slice(prefixLength);\n var newMiddle = newBefore.slice(prefixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n }\n editAfter: {\n // is this an insert or delete right after oldCursor?\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n break editAfter;\n }\n var cursor = oldCursor;\n var newBefore = newText.slice(0, cursor);\n var newAfter = newText.slice(cursor);\n if (newBefore !== oldBefore) {\n break editAfter;\n }\n var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n var newSuffix = newAfter.slice(newAfter.length - suffixLength);\n if (oldSuffix !== newSuffix) {\n break editAfter;\n }\n var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n }\n }\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\n replaceRange: {\n // see if diff could be a splice of the old selection range\n var oldPrefix = oldText.slice(0, oldRange.index);\n var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n var prefixLength = oldPrefix.length;\n var suffixLength = oldSuffix.length;\n if (newLength < prefixLength + suffixLength) {\n break replaceRange;\n }\n var newPrefix = newText.slice(0, prefixLength);\n var newSuffix = newText.slice(newLength - suffixLength);\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n break replaceRange;\n }\n var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n }\n }\n\n return null;\n}\n\nfunction diff(text1, text2, cursor_pos) {\n // only pass fix_unicode=true at the top level, not when diff_main is\n // recursively invoked\n return diff_main(text1, text2, cursor_pos, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n\n//# sourceURL=webpack://Quill/./node_modules/fast-diff/diff.js?")},"./node_modules/foreach/index.js": +/*!***************************************!*\ + !*** ./node_modules/foreach/index.js ***! + \***************************************/ +/*! no static exports found */function(module,exports){eval("\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n\n\n//# sourceURL=webpack://Quill/./node_modules/foreach/index.js?")},"./node_modules/function-bind/implementation.js": +/*!******************************************************!*\ + !*** ./node_modules/function-bind/implementation.js ***! + \******************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/function-bind/implementation.js?")},"./node_modules/function-bind/index.js": +/*!*********************************************!*\ + !*** ./node_modules/function-bind/index.js ***! + \*********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/function-bind/implementation.js");\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n//# sourceURL=webpack://Quill/./node_modules/function-bind/index.js?')},"./node_modules/has-symbols/index.js": +/*!*******************************************!*\ + !*** ./node_modules/has-symbols/index.js ***! + \*******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \"./node_modules/has-symbols/shams.js\");\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/index.js?")},"./node_modules/has-symbols/shams.js": +/*!*******************************************!*\ + !*** ./node_modules/has-symbols/shams.js ***! + \*******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/shams.js?")},"./node_modules/has/src/index.js": +/*!***************************************!*\ + !*** ./node_modules/has/src/index.js ***! + \***************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n//# sourceURL=webpack://Quill/./node_modules/has/src/index.js?')},"./node_modules/is-arguments/index.js": +/*!********************************************!*\ + !*** ./node_modules/is-arguments/index.js ***! + \********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-arguments/index.js?")},"./node_modules/is-bigint/index.js": +/*!*****************************************!*\ + !*** ./node_modules/is-bigint/index.js ***! + \*****************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nif (typeof BigInt === 'function') {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') { // eslint-disable-line valid-typeof\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && false;\n\t};\n}\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-bigint/index.js?")},"./node_modules/is-boolean-object/index.js": +/*!*************************************************!*\ + !*** ./node_modules/is-boolean-object/index.js ***! + \*************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar boolToStr = Boolean.prototype.toString;\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\tboolToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : toStr.call(value) === boolClass;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-boolean-object/index.js?")},"./node_modules/is-date-object/index.js": +/*!**********************************************!*\ + !*** ./node_modules/is-date-object/index.js ***! + \**********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-date-object/index.js?")},"./node_modules/is-map/index.js": +/*!**************************************!*\ + !*** ./node_modules/is-map/index.js ***! + \**************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-map/index.js?")},"./node_modules/is-number-object/index.js": +/*!************************************************!*\ + !*** ./node_modules/is-number-object/index.js ***! + \************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-number-object/index.js?")},"./node_modules/is-regex/index.js": +/*!****************************************!*\ + !*** ./node_modules/is-regex/index.js ***! + \****************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar has = __webpack_require__(/*! has */ \"./node_modules/has/src/index.js\");\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-regex/index.js?")},"./node_modules/is-set/index.js": +/*!**************************************!*\ + !*** ./node_modules/is-set/index.js ***! + \**************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-set/index.js?")},"./node_modules/is-string/index.js": +/*!*****************************************!*\ + !*** ./node_modules/is-string/index.js ***! + \*****************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-string/index.js?")},"./node_modules/is-typed-array/index.js": +/*!**********************************************!*\ + !*** ./node_modules/is-typed-array/index.js ***! + \**********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar forEach = __webpack_require__(/*! foreach */ \"./node_modules/foreach/index.js\");\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \"./node_modules/available-typed-arrays/index.js\");\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\");\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\");\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new global[typedArray]();\n\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t}\n\t\tvar proto = getPrototypeOf(arr);\n\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\tif (!descriptor) {\n\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t}\n\t\ttoStrTags[typedArray] = descriptor.get;\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/index.js?")},"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js": +/*!******************************************************************************!*\ + !*** ./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js ***! + \******************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js ***! + \**********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js ***! + \***********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar callBind = __webpack_require__(/*! ./callBind */ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js?")},"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***! + \**************************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?")},"./node_modules/is-weakmap/index.js": +/*!******************************************!*\ + !*** ./node_modules/is-weakmap/index.js ***! + \******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-weakmap/index.js?")},"./node_modules/is-weakset/index.js": +/*!******************************************!*\ + !*** ./node_modules/is-weakset/index.js ***! + \******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakSet(x) {\n\t\t// `WeakSet` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x, $setHas);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x, $mapHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/is-weakset/index.js?")},"./node_modules/object-inspect/index.js": +/*!**********************************************!*\ + !*** ./node_modules/object-inspect/index.js ***! + \**********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){eval("var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\n\nvar inspectCustom = __webpack_require__(/*! ./util.inspect */ 1).custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') { // eslint-disable-line valid-typeof\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return '[Object]';\n }\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n return '[Function' + (name ? ': ' + name : '') + ']';\n }\n if (isSymbol(obj)) {\n var symString = Symbol.prototype.toString.call(obj);\n return typeof obj === 'object' ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n return '[ ' + arrObjKeys(obj, inspect).join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object') {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var xs = arrObjKeys(obj, inspect);\n if (xs.length === 0) { return '{}'; }\n return '{ ' + xs.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]'; }\nfunction isDate(obj) { return toStr(obj) === '[object Date]'; }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]'; }\nfunction isError(obj) { return toStr(obj) === '[object Error]'; }\nfunction isSymbol(obj) { return toStr(obj) === '[object Symbol]'; }\nfunction isString(obj) { return toStr(obj) === '[object String]'; }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]'; }\nfunction isBigInt(obj) { return toStr(obj) === '[object BigInt]'; }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]'; }\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(f, /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16);\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries) {\n return type + ' (' + size + ') {' + entries.join(', ') + '}';\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n return xs;\n}\n\n\n//# sourceURL=webpack://Quill/./node_modules/object-inspect/index.js?")},"./node_modules/object-is/index.js": +/*!*****************************************!*\ + !*** ./node_modules/object-is/index.js ***! + \*****************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-object.is\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n\n\n//# sourceURL=webpack://Quill/./node_modules/object-is/index.js?")},"./node_modules/object-keys/index.js": +/*!*******************************************!*\ + !*** ./node_modules/object-keys/index.js ***! + \*******************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(/*! ./isArguments */ \"./node_modules/object-keys/isArguments.js\");\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$applicationCache: true,\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://Quill/./node_modules/object-keys/index.js?")},"./node_modules/object-keys/isArguments.js": +/*!*************************************************!*\ + !*** ./node_modules/object-keys/isArguments.js ***! + \*************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/object-keys/isArguments.js?")},"./node_modules/object.assign/implementation.js": +/*!******************************************************!*\ + !*** ./node_modules/object.assign/implementation.js ***! + \******************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = __webpack_require__(/*! object-keys */ "./node_modules/object-keys/index.js");\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\nvar canBeObject = function (obj) {\n\treturn typeof obj !== \'undefined\' && obj !== null;\n};\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ "./node_modules/has-symbols/shams.js")();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError(\'target must be an object\'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tsyms = getSymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/object.assign/implementation.js?')},"./node_modules/object.assign/index.js": +/*!*********************************************!*\ + !*** ./node_modules/object.assign/index.js ***! + \*********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar defineProperties = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/object.assign/implementation.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/object.assign/polyfill.js");\nvar shim = __webpack_require__(/*! ./shim */ "./node_modules/object.assign/shim.js");\n\nvar polyfill = getPolyfill();\n\ndefineProperties(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n//# sourceURL=webpack://Quill/./node_modules/object.assign/index.js?')},"./node_modules/object.assign/polyfill.js": +/*!************************************************!*\ + !*** ./node_modules/object.assign/polyfill.js ***! + \************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/object.assign/implementation.js\");\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/object.assign/polyfill.js?")},"./node_modules/object.assign/shim.js": +/*!********************************************!*\ + !*** ./node_modules/object.assign/shim.js ***! + \********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/object.assign/polyfill.js");\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/object.assign/shim.js?')},"./node_modules/parchment/src/attributor/attributor.ts": +/*!*************************************************************!*\ + !*** ./node_modules/parchment/src/attributor/attributor.ts ***! + \*************************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 constructor(attrName, keyName, options = {}) {\n this.attrName = attrName;\n this.keyName = keyName;\n const attributeBit = _scope__WEBPACK_IMPORTED_MODULE_0__["default"].TYPE & _scope__WEBPACK_IMPORTED_MODULE_0__["default"].ATTRIBUTE;\n this.scope =\n options.scope != null\n ? // Ignore type bits, force attribute bit\n (options.scope & _scope__WEBPACK_IMPORTED_MODULE_0__["default"].LEVEL) | attributeBit\n : _scope__WEBPACK_IMPORTED_MODULE_0__["default"].ATTRIBUTE;\n if (options.whitelist != null) {\n this.whitelist = options.whitelist;\n }\n }\n static keys(node) {\n return Array.from(node.attributes).map((item) => item.name);\n }\n add(node, value) {\n if (!this.canAdd(node, value)) {\n return false;\n }\n node.setAttribute(this.keyName, value);\n return true;\n }\n canAdd(_node, value) {\n if (this.whitelist == null) {\n return true;\n }\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 const 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?')},"./node_modules/parchment/src/attributor/class.ts": +/*!********************************************************!*\ + !*** ./node_modules/parchment/src/attributor/class.ts ***! + \********************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__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 const className = node.getAttribute('class') || '';\n return className\n .split(/\\s+/)\n .filter((name) => name.indexOf(`${prefix}-`) === 0);\n}\nclass ClassAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n static keys(node) {\n return (node.getAttribute('class') || '')\n .split(/\\s+/)\n .map((name) => name.split('-').slice(0, -1).join('-'));\n }\n add(node, value) {\n if (!this.canAdd(node, value)) {\n return false;\n }\n this.remove(node);\n node.classList.add(`${this.keyName}-${value}`);\n return true;\n }\n remove(node) {\n const matches = match(node, this.keyName);\n matches.forEach((name) => {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n }\n value(node) {\n const result = match(node, this.keyName)[0] || '';\n const 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?")},"./node_modules/parchment/src/attributor/store.ts": +/*!********************************************************!*\ + !*** ./node_modules/parchment/src/attributor/store.ts ***! + \********************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ "./node_modules/parchment/src/registry.ts");\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attributor */ "./node_modules/parchment/src/attributor/attributor.ts");\n/* harmony import */ var _class__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./class */ "./node_modules/parchment/src/attributor/class.ts");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ "./node_modules/parchment/src/attributor/style.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_0__["default"].find(this.domNode);\n if (blot == null) {\n return;\n }\n const attributes = _attributor__WEBPACK_IMPORTED_MODULE_2__["default"].keys(this.domNode);\n const classes = _class__WEBPACK_IMPORTED_MODULE_3__["default"].keys(this.domNode);\n const styles = _style__WEBPACK_IMPORTED_MODULE_4__["default"].keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach((name) => {\n const attr = blot.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__["default"].ATTRIBUTE);\n if (attr instanceof _attributor__WEBPACK_IMPORTED_MODULE_2__["default"]) {\n this.attributes[attr.attrName] = attr;\n }\n });\n }\n copy(target) {\n Object.keys(this.attributes).forEach((key) => {\n const 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?')},"./node_modules/parchment/src/attributor/style.ts": +/*!********************************************************!*\ + !*** ./node_modules/parchment/src/attributor/style.ts ***! + \********************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__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 const parts = name.split('-');\n const rest = parts\n .slice(1)\n .map((part) => part[0].toUpperCase() + part.slice(1))\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((value) => {\n const arr = value.split(':');\n return arr[0].trim();\n });\n }\n add(node, value) {\n if (!this.canAdd(node, value)) {\n return false;\n }\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 const 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?")},"./node_modules/parchment/src/blot/abstract/container.ts": +/*!***************************************************************!*\ + !*** ./node_modules/parchment/src/blot/abstract/container.ts ***! + \***************************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parent */ "./node_modules/parchment/src/blot/abstract/parent.ts");\n\n\nclass ContainerBlot extends _parent__WEBPACK_IMPORTED_MODULE_1__["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_0__["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?')},"./node_modules/parchment/src/blot/abstract/leaf.ts": +/*!**********************************************************!*\ + !*** ./node_modules/parchment/src/blot/abstract/leaf.ts ***! + \**********************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ "./node_modules/parchment/src/blot/abstract/shadow.ts");\n\n\nclass LeafBlot extends _shadow__WEBPACK_IMPORTED_MODULE_1__["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 }\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_0__["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?')},"./node_modules/parchment/src/blot/abstract/parent.ts": +/*!************************************************************!*\ + !*** ./node_modules/parchment/src/blot/abstract/parent.ts ***! + \************************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error */ "./node_modules/parchment/src/error.ts");\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shadow */ "./node_modules/parchment/src/blot/abstract/shadow.ts");\n\n\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_2__["default"].INLINE);\n Array.from(node.childNodes).forEach((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}\nclass ParentBlot extends _shadow__WEBPACK_IMPORTED_MODULE_3__["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 if (ParentBlot.uiClass) {\n this.uiNode.classList.add(ParentBlot.uiClass);\n }\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 const 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_1__["default"]) {\n return;\n }\n else {\n throw err;\n }\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, (child, offset, childLength) => {\n child.deleteAt(offset, childLength);\n });\n }\n descendant(criteria, index = 0) {\n const [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, (child, childIndex, childLength) => {\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, childIndex, lengthLeft));\n }\n lengthLeft -= childLength;\n });\n return descendants;\n }\n detach() {\n this.children.forEach((child) => {\n child.detach();\n });\n super.detach();\n }\n enforceAllowedChildren() {\n let done = false;\n this.children.forEach((child) => {\n if (done) {\n return;\n }\n const allowed = this.statics.allowedChildren.some((def) => child instanceof def);\n if (allowed) {\n return;\n }\n if (child.statics.scope === _scope__WEBPACK_IMPORTED_MODULE_2__["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, (child, offset, childLength) => {\n child.formatAt(offset, childLength, name, value);\n });\n }\n insertAt(index, value, def) {\n const [child, offset] = this.children.find(index);\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n const 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 childBlot.parent = this;\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.attach();\n }\n length() {\n return this.children.reduce((memo, child) => {\n return memo + child.length();\n }, 0);\n }\n moveChildren(targetParent, refNode) {\n this.children.forEach((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 const 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 const [child, offset] = this.children.find(index, inclusive);\n const 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 }\n if (index === this.length()) {\n return this.next;\n }\n }\n const after = this.clone();\n if (this.parent) {\n this.parent.insertBefore(after, this.next || undefined);\n }\n this.children.forEachAt(index, this.length(), (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 const 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 const addedNodes = [];\n const removedNodes = [];\n mutations.forEach((mutation) => {\n if (mutation.target === this.domNode && mutation.type === \'childList\') {\n addedNodes.push(...mutation.addedNodes);\n removedNodes.push(...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 const blot = this.scroll.find(node);\n if (blot == null) {\n return;\n }\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((a, b) => {\n if (a === b) {\n return 0;\n }\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 const 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}\nParentBlot.uiClass = \'\';\n/* harmony default export */ __webpack_exports__["default"] = (ParentBlot);\n\n\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/abstract/parent.ts?')},"./node_modules/parchment/src/blot/abstract/shadow.ts": +/*!************************************************************!*\ + !*** ./node_modules/parchment/src/blot/abstract/shadow.ts ***! + \************************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../registry */ "./node_modules/parchment/src/registry.ts");\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ "./node_modules/parchment/src/scope.ts");\n\n\n\nclass ShadowBlot {\n constructor(scroll, domNode) {\n this.scroll = scroll;\n this.domNode = domNode;\n _registry__WEBPACK_IMPORTED_MODULE_1__["default"].blots.set(domNode, this);\n this.prev = null;\n this.next = null;\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, 10).toString() === value) {\n value = parseInt(value, 10);\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 // Hack for accessing inherited static methods\n get statics() {\n return this.constructor;\n }\n attach() {\n // Nothing to do\n }\n clone() {\n const 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 }\n _registry__WEBPACK_IMPORTED_MODULE_1__["default"].blots.delete(this.domNode);\n }\n deleteAt(index, length) {\n const blot = this.isolate(index, length);\n blot.remove();\n }\n formatAt(index, length, name, value) {\n const blot = this.isolate(index, length);\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__["default"].BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__["default"].ATTRIBUTE) != null) {\n const parent = this.scroll.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n }\n insertAt(index, value, def) {\n const blot = def == null\n ? this.scroll.create(\'text\', value)\n : this.scroll.create(value, def);\n const ref = this.split(index);\n this.parent.insertBefore(blot, ref || undefined);\n }\n isolate(index, length) {\n const 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 }\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 const wrapper = typeof name === \'string\'\n ? this.scroll.create(name, value)\n : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next || undefined);\n }\n if (typeof wrapper.appendChild !== \'function\') {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__["default"](`Cannot wrap ${name}`);\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?')},"./node_modules/parchment/src/blot/block.ts": +/*!**************************************************!*\ + !*** ./node_modules/parchment/src/blot/block.ts ***! + \**************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ "./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ "./node_modules/parchment/src/blot/abstract/parent.ts");\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inline */ "./node_modules/parchment/src/blot/inline.ts");\n\n\n\n\n\n\nclass BlockBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__["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 &&\n 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_2__["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_2__["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_2__["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.blotName = \'block\';\nBlockBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_2__["default"].BLOCK_BLOT;\nBlockBlot.tagName = \'P\';\nBlockBlot.allowedChildren = [\n _inline__WEBPACK_IMPORTED_MODULE_5__["default"],\n BlockBlot,\n _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__["default"],\n];\n/* harmony default export */ __webpack_exports__["default"] = (BlockBlot);\n\n\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/block.ts?')},"./node_modules/parchment/src/blot/embed.ts": +/*!**************************************************!*\ + !*** ./node_modules/parchment/src/blot/embed.ts ***! + \**************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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?')},"./node_modules/parchment/src/blot/inline.ts": +/*!***************************************************!*\ + !*** ./node_modules/parchment/src/blot/inline.ts ***! + \***************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ "./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ "./node_modules/parchment/src/blot/abstract/parent.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 }\n // @ts-ignore\n for (const prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop]) {\n return false;\n }\n }\n return true;\n}\nclass InlineBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__["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 &&\n 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_2__["default"].INLINE);\n if (format == null) {\n return;\n }\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 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.formats()[name] != null ||\n this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__["default"].ATTRIBUTE)) {\n const 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 const formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n const 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_2__["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?')},"./node_modules/parchment/src/blot/scroll.ts": +/*!***************************************************!*\ + !*** ./node_modules/parchment/src/blot/scroll.ts ***! + \***************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ "./node_modules/parchment/src/registry.ts");\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _abstract_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/container */ "./node_modules/parchment/src/blot/abstract/container.ts");\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/parent */ "./node_modules/parchment/src/blot/abstract/parent.ts");\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./block */ "./node_modules/parchment/src/blot/block.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_3__["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_1__["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 }\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((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 }\n const mark = (blot, markParent = true) => {\n if (blot == null || blot === this) {\n return;\n }\n if (blot.domNode.parentNode == null) {\n return;\n }\n if (!mutationsMap.has(blot.domNode)) {\n mutationsMap.set(blot.domNode, []);\n }\n if (markParent) {\n mark(blot.parent);\n }\n };\n const optimize = (blot) => {\n // Post-order traversal\n if (!mutationsMap.has(blot.domNode)) {\n return;\n }\n if (blot instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_3__["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 const blot = this.find(mutation.target, true);\n if (blot == null) {\n return;\n }\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_3__["default"]) {\n child.children.forEach((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 }\n update(mutations, context = {}) {\n mutations = mutations || this.observer.takeRecords();\n const mutationsMap = new WeakMap();\n mutations\n .map((mutation) => {\n const blot = _registry__WEBPACK_IMPORTED_MODULE_0__["default"].find(mutation.target, true);\n if (blot == null) {\n return null;\n }\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_4__["default"];\nScrollBlot.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_4__["default"], _abstract_container__WEBPACK_IMPORTED_MODULE_2__["default"]];\nScrollBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__["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?')},"./node_modules/parchment/src/blot/text.ts": +/*!*************************************************!*\ + !*** ./node_modules/parchment/src/blot/text.ts ***! + \*************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scope */ "./node_modules/parchment/src/scope.ts");\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstract/leaf */ "./node_modules/parchment/src/blot/abstract/leaf.ts");\n\n\nclass TextBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__["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 return domNode.data;\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 }\n if (index === this.length()) {\n return this.next;\n }\n }\n const 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_0__["default"].INLINE_BLOT;\n/* harmony default export */ __webpack_exports__["default"] = (TextBlot);\n\n\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/text.ts?')},"./node_modules/parchment/src/collection/linked-list.ts": +/*!**************************************************************!*\ + !*** ./node_modules/parchment/src/collection/linked-list.ts ***! + \**************************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\nclass LinkedList {\n constructor() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n append(...nodes) {\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n const rest = nodes.slice(1);\n this.append(...rest);\n }\n }\n at(index) {\n const next = this.iterator();\n let cur = next();\n while (cur && index > 0) {\n index -= 1;\n cur = next();\n }\n return cur;\n }\n contains(node) {\n const next = this.iterator();\n let cur = next();\n while (cur) {\n if (cur === node) {\n return true;\n }\n cur = next();\n }\n return false;\n }\n indexOf(node) {\n const next = this.iterator();\n let cur = next();\n let index = 0;\n while (cur) {\n if (cur === node) {\n return index;\n }\n index += 1;\n cur = next();\n }\n return -1;\n }\n insertBefore(node, refNode) {\n if (node == null) {\n return;\n }\n this.remove(node);\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;\n let cur = this.head;\n while (cur != null) {\n if (cur === target) {\n return index;\n }\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n }\n remove(node) {\n if (!this.contains(node)) {\n return;\n }\n if (node.prev != null) {\n node.prev.next = node.next;\n }\n if (node.next != null) {\n node.next.prev = node.prev;\n }\n if (node === this.head) {\n this.head = node.next;\n }\n if (node === this.tail) {\n this.tail = node.prev;\n }\n this.length -= 1;\n }\n iterator(curNode = this.head) {\n // TODO use yield when we can\n return () => {\n const ret = curNode;\n if (curNode != null) {\n curNode = curNode.next;\n }\n return ret;\n };\n }\n find(index, inclusive = false) {\n const next = this.iterator();\n let cur = next();\n while (cur) {\n const 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 cur = next();\n }\n return [null, 0];\n }\n forEach(callback) {\n const next = this.iterator();\n let cur = next();\n while (cur) {\n callback(cur);\n cur = next();\n }\n }\n forEachAt(index, length, callback) {\n if (length <= 0) {\n return;\n }\n const [startNode, offset] = this.find(index);\n let curIndex = index - offset;\n const next = this.iterator(startNode);\n let cur = next();\n while (cur && curIndex < index + length) {\n const 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 cur = next();\n }\n }\n map(callback) {\n return this.reduce((memo, cur) => {\n memo.push(callback(cur));\n return memo;\n }, []);\n }\n reduce(callback, memo) {\n const next = this.iterator();\n let cur = next();\n while (cur) {\n memo = callback(memo, cur);\n cur = next();\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?')},"./node_modules/parchment/src/error.ts": +/*!*********************************************!*\ + !*** ./node_modules/parchment/src/error.ts ***! + \*********************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__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?")},"./node_modules/parchment/src/parchment.ts": +/*!*************************************************!*\ + !*** ./node_modules/parchment/src/parchment.ts ***! + \*************************************************/ +/*! exports provided: ParentBlot, ContainerBlot, LeafBlot, EmbedBlot, ScrollBlot, BlockBlot, InlineBlot, TextBlot, Attributor, ClassAttributor, StyleAttributor, AttributorStore, Registry, Scope */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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_leaf__WEBPACK_IMPORTED_MODULE_1__ = __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_1__["default"]; });\n\n/* harmony import */ var _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __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_2__["default"]; });\n\n/* harmony import */ var _blot_block__WEBPACK_IMPORTED_MODULE_3__ = __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_3__["default"]; });\n\n/* harmony import */ var _blot_embed__WEBPACK_IMPORTED_MODULE_4__ = __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_4__["default"]; });\n\n/* harmony import */ var _blot_inline__WEBPACK_IMPORTED_MODULE_5__ = __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_5__["default"]; });\n\n/* harmony import */ var _blot_scroll__WEBPACK_IMPORTED_MODULE_6__ = __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_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_store__WEBPACK_IMPORTED_MODULE_10__ = __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_10__["default"]; });\n\n/* harmony import */ var _attributor_style__WEBPACK_IMPORTED_MODULE_11__ = __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_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?')},"./node_modules/parchment/src/registry.ts": +/*!************************************************!*\ + !*** ./node_modules/parchment/src/registry.ts ***! + \************************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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 }\n if (this.blots.has(node)) {\n return this.blots.get(node) || null;\n }\n if (bubble) {\n return this.find(node.parentNode, bubble);\n }\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 const names = (query.getAttribute(\'class\') || \'\').split(/\\s+/);\n names.some((name) => {\n match = this.classes[name];\n if (match) {\n return true;\n }\n return false;\n });\n match = match || this.tags[query.tagName];\n }\n if (match == null) {\n return null;\n }\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 }\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 const 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((tagName) => {\n return tagName.toUpperCase();\n });\n }\n else {\n definition.tagName = definition.tagName.toUpperCase();\n }\n const 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?')},"./node_modules/parchment/src/scope.ts": +/*!*********************************************!*\ + !*** ./node_modules/parchment/src/scope.ts ***! + \*********************************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__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?')},"./node_modules/process/browser.js": +/*!*****************************************!*\ + !*** ./node_modules/process/browser.js ***! + \*****************************************/ +/*! no static exports found */function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://Quill/./node_modules/process/browser.js?")},"./node_modules/quill-delta/dist/AttributeMap.js": +/*!*******************************************************!*\ + !*** ./node_modules/quill-delta/dist/AttributeMap.js ***! + \*******************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \"./node_modules/quill-delta/node_modules/deep-equal/index.js\"));\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \"./node_modules/extend/index.js\"));\nvar AttributeMap;\n(function (AttributeMap) {\n function compose(a, b, keepNull) {\n if (a === void 0) { a = {}; }\n if (b === void 0) { b = {}; }\n if (typeof a !== 'object') {\n a = {};\n }\n if (typeof b !== 'object') {\n b = {};\n }\n var attributes = extend_1.default(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 AttributeMap.compose = compose;\n function diff(a, b) {\n if (a === void 0) { a = {}; }\n if (b === void 0) { b = {}; }\n if (typeof a !== 'object') {\n a = {};\n }\n if (typeof b !== 'object') {\n b = {};\n }\n var attributes = Object.keys(a)\n .concat(Object.keys(b))\n .reduce(function (attrs, key) {\n if (!deep_equal_1.default(a[key], b[key])) {\n attrs[key] = b[key] === undefined ? null : b[key];\n }\n return attrs;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n AttributeMap.diff = diff;\n function invert(attr, base) {\n if (attr === void 0) { attr = {}; }\n if (base === void 0) { base = {}; }\n attr = attr || {};\n var baseInverted = Object.keys(base).reduce(function (memo, key) {\n if (base[key] !== attr[key] && attr[key] !== undefined) {\n memo[key] = base[key];\n }\n return memo;\n }, {});\n return Object.keys(attr).reduce(function (memo, key) {\n if (attr[key] !== base[key] && base[key] === undefined) {\n memo[key] = null;\n }\n return memo;\n }, baseInverted);\n }\n AttributeMap.invert = invert;\n function transform(a, b, priority) {\n if (priority === void 0) { priority = false; }\n if (typeof a !== 'object') {\n return b;\n }\n if (typeof b !== 'object') {\n return undefined;\n }\n if (!priority) {\n return b; // b simply overwrites us without priority\n }\n var attributes = Object.keys(b).reduce(function (attrs, key) {\n if (a[key] === undefined) {\n attrs[key] = b[key]; // null is a valid value\n }\n return attrs;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n AttributeMap.transform = transform;\n})(AttributeMap || (AttributeMap = {}));\nexports.default = AttributeMap;\n//# sourceMappingURL=AttributeMap.js.map\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/AttributeMap.js?")},"./node_modules/quill-delta/dist/Delta.js": +/*!************************************************!*\ + !*** ./node_modules/quill-delta/dist/Delta.js ***! + \************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \"./node_modules/quill-delta/node_modules/deep-equal/index.js\"));\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \"./node_modules/extend/index.js\"));\nvar fast_diff_1 = __importDefault(__webpack_require__(/*! fast-diff */ \"./node_modules/fast-diff/diff.js\"));\nvar AttributeMap_1 = __importDefault(__webpack_require__(/*! ./AttributeMap */ \"./node_modules/quill-delta/dist/AttributeMap.js\"));\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \"./node_modules/quill-delta/dist/Op.js\"));\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\nvar Delta = /** @class */ (function () {\n function Delta(ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n }\n else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n }\n else {\n this.ops = [];\n }\n }\n Delta.prototype.insert = function (arg, attributes) {\n var newOp = {};\n if (typeof arg === 'string' && arg.length === 0) {\n return this;\n }\n newOp.insert = arg;\n if (attributes != null &&\n typeof attributes === 'object' &&\n Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n };\n Delta.prototype.delete = function (length) {\n if (length <= 0) {\n return this;\n }\n return this.push({ delete: length });\n };\n Delta.prototype.retain = function (length, attributes) {\n if (length <= 0) {\n return this;\n }\n var newOp = { retain: length };\n if (attributes != null &&\n typeof attributes === 'object' &&\n Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n };\n Delta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend_1.default(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp.delete === 'number' &&\n 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 (deep_equal_1.default(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' &&\n typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') {\n this.ops[index - 1].attributes = newOp.attributes;\n }\n return this;\n }\n else if (typeof newOp.retain === 'number' &&\n typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') {\n this.ops[index - 1].attributes = newOp.attributes;\n }\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n }\n else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n };\n Delta.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 Delta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n };\n Delta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n };\n Delta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n };\n Delta.prototype.partition = function (predicate) {\n var passed = [];\n var failed = [];\n this.forEach(function (op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n };\n Delta.prototype.reduce = function (predicate, initialValue) {\n return this.ops.reduce(predicate, initialValue);\n };\n Delta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + Op_1.default.length(elem);\n }\n else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n };\n Delta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + Op_1.default.length(elem);\n }, 0);\n };\n Delta.prototype.slice = function (start, end) {\n if (start === void 0) { start = 0; }\n if (end === void 0) { end = Infinity; }\n var ops = [];\n var iter = Op_1.default.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp = void 0;\n if (index < start) {\n nextOp = iter.next(start - index);\n }\n else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += Op_1.default.length(nextOp);\n }\n return new Delta(ops);\n };\n Delta.prototype.compose = function (other) {\n var thisIter = Op_1.default.iterator(this.ops);\n var otherIter = Op_1.default.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null &&\n typeof firstOther.retain === 'number' &&\n firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' &&\n thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n }\n else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n }\n else {\n var length_1 = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length_1);\n var otherOp = otherIter.next(length_1);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length_1;\n }\n else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) {\n newOp.attributes = attributes;\n }\n delta.push(newOp);\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() &&\n deep_equal_1.default(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n }\n else if (typeof otherOp.delete === 'number' &&\n typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n };\n Delta.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 Delta.prototype.diff = function (other, cursor) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta\n .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 })\n .join('');\n });\n var retDelta = new Delta();\n var diffResult = fast_diff_1.default(strings[0], strings[1], cursor);\n var thisIter = Op_1.default.iterator(this.ops);\n var otherIter = Op_1.default.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 fast_diff_1.default.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n retDelta.push(otherIter.next(opLength));\n break;\n case fast_diff_1.default.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n retDelta.delete(opLength);\n break;\n case fast_diff_1.default.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (deep_equal_1.default(thisOp.insert, otherOp.insert)) {\n retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\n }\n else {\n retDelta.push(otherOp).delete(opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return retDelta.chop();\n };\n Delta.prototype.eachLine = function (predicate, newline) {\n if (newline === void 0) { newline = '\\n'; }\n var iter = Op_1.default.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') {\n return;\n }\n var thisOp = iter.peek();\n var start = Op_1.default.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string'\n ? thisOp.insert.indexOf(newline, start) - start\n : -1;\n if (index < 0) {\n line.push(iter.next());\n }\n else if (index > 0) {\n line.push(iter.next(index));\n }\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 Delta.prototype.invert = function (base) {\n var inverted = new Delta();\n this.reduce(function (baseIndex, op) {\n if (op.insert) {\n inverted.delete(Op_1.default.length(op));\n }\n else if (op.retain && op.attributes == null) {\n inverted.retain(op.retain);\n return baseIndex + op.retain;\n }\n else if (op.delete || (op.retain && op.attributes)) {\n var length_2 = (op.delete || op.retain);\n var slice = base.slice(baseIndex, baseIndex + length_2);\n slice.forEach(function (baseOp) {\n if (op.delete) {\n inverted.push(baseOp);\n }\n else if (op.retain && op.attributes) {\n inverted.retain(Op_1.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\n }\n });\n return baseIndex + length_2;\n }\n return baseIndex;\n }, 0);\n return inverted.chop();\n };\n Delta.prototype.transform = function (arg, priority) {\n if (priority === void 0) { priority = false; }\n priority = !!priority;\n if (typeof arg === 'number') {\n return this.transformPosition(arg, priority);\n }\n var other = arg;\n var thisIter = Op_1.default.iterator(this.ops);\n var otherIter = Op_1.default.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' &&\n (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(Op_1.default.length(thisIter.next()));\n }\n else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n }\n else {\n var length_3 = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length_3);\n var otherOp = otherIter.next(length_3);\n if (thisOp.delete) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n }\n else if (otherOp.delete) {\n delta.push(otherOp);\n }\n else {\n // We retain either their retain or insert\n delta.retain(length_3, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n };\n Delta.prototype.transformPosition = function (index, priority) {\n if (priority === void 0) { priority = false; }\n priority = !!priority;\n var thisIter = Op_1.default.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length_4 = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length_4, index - offset);\n continue;\n }\n else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length_4;\n }\n offset += length_4;\n }\n return index;\n };\n Delta.Op = Op_1.default;\n Delta.AttributeMap = AttributeMap_1.default;\n return Delta;\n}());\nmodule.exports = Delta;\n//# sourceMappingURL=Delta.js.map\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Delta.js?")},"./node_modules/quill-delta/dist/Iterator.js": +/*!***************************************************!*\ + !*** ./node_modules/quill-delta/dist/Iterator.js ***! + \***************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \"./node_modules/quill-delta/dist/Op.js\"));\nvar Iterator = /** @class */ (function () {\n function Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n }\n Iterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n };\n Iterator.prototype.next = function (length) {\n if (!length) {\n length = Infinity;\n }\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = Op_1.default.length(nextOp);\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n }\n else {\n this.offset += length;\n }\n if (typeof nextOp.delete === 'number') {\n return { delete: length };\n }\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 }\n else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n }\n else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n }\n else {\n return { retain: Infinity };\n }\n };\n Iterator.prototype.peek = function () {\n return this.ops[this.index];\n };\n Iterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return Op_1.default.length(this.ops[this.index]) - this.offset;\n }\n else {\n return Infinity;\n }\n };\n Iterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index].delete === 'number') {\n return 'delete';\n }\n else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n }\n else {\n return 'insert';\n }\n }\n return 'retain';\n };\n Iterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n }\n else if (this.offset === 0) {\n return this.ops.slice(this.index);\n }\n else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n };\n return Iterator;\n}());\nexports.default = Iterator;\n//# sourceMappingURL=Iterator.js.map\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Iterator.js?")},"./node_modules/quill-delta/dist/Op.js": +/*!*********************************************!*\ + !*** ./node_modules/quill-delta/dist/Op.js ***! + \*********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Iterator_1 = __importDefault(__webpack_require__(/*! ./Iterator */ \"./node_modules/quill-delta/dist/Iterator.js\"));\nvar Op;\n(function (Op) {\n function iterator(ops) {\n return new Iterator_1.default(ops);\n }\n Op.iterator = iterator;\n function length(op) {\n if (typeof op.delete === 'number') {\n return op.delete;\n }\n else if (typeof op.retain === 'number') {\n return op.retain;\n }\n else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n Op.length = length;\n})(Op || (Op = {}));\nexports.default = Op;\n//# sourceMappingURL=Op.js.map\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Op.js?")},"./node_modules/quill-delta/node_modules/deep-equal/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/quill-delta/node_modules/deep-equal/index.js ***! + \*******************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){eval("var objectKeys = __webpack_require__(/*! object-keys */ \"./node_modules/quill-delta/node_modules/object-keys/index.js\");\nvar isArguments = __webpack_require__(/*! is-arguments */ \"./node_modules/is-arguments/index.js\");\nvar is = __webpack_require__(/*! object-is */ \"./node_modules/object-is/index.js\");\nvar isRegex = __webpack_require__(/*! is-regex */ \"./node_modules/is-regex/index.js\");\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \"./node_modules/regexp.prototype.flags/index.js\");\nvar isDate = __webpack_require__(/*! is-date-object */ \"./node_modules/is-date-object/index.js\");\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\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 */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\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') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\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\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var 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 hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\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]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~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\n return true;\n}\n\nmodule.exports = deepEqual;\n\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/deep-equal/index.js?")},"./node_modules/quill-delta/node_modules/object-keys/implementation.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/quill-delta/node_modules/object-keys/implementation.js ***! + \*****************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __webpack_require__(/*! ./isArguments */ \"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\"); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/implementation.js?")},"./node_modules/quill-delta/node_modules/object-keys/index.js": +/*!********************************************************************!*\ + !*** ./node_modules/quill-delta/node_modules/object-keys/index.js ***! + \********************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(/*! ./isArguments */ "./node_modules/quill-delta/node_modules/object-keys/isArguments.js");\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ "./node_modules/quill-delta/node_modules/object-keys/implementation.js");\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/index.js?')},"./node_modules/quill-delta/node_modules/object-keys/isArguments.js": +/*!**************************************************************************!*\ + !*** ./node_modules/quill-delta/node_modules/object-keys/isArguments.js ***! + \**************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/isArguments.js?")},"./node_modules/regexp.prototype.flags/implementation.js": +/*!***************************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/implementation.js ***! + \***************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/implementation.js?")},"./node_modules/regexp.prototype.flags/index.js": +/*!******************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/index.js ***! + \******************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar callBind = __webpack_require__(/*! es-abstract/helpers/callBind */ "./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/regexp.prototype.flags/implementation.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/regexp.prototype.flags/polyfill.js");\nvar shim = __webpack_require__(/*! ./shim */ "./node_modules/regexp.prototype.flags/shim.js");\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/index.js?')},"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js ***! + \**************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js ***! + \******************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/regexp.prototype.flags/polyfill.js": +/*!*********************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/polyfill.js ***! + \*********************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/regexp.prototype.flags/implementation.js\");\n\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \"./node_modules/define-properties/index.js\").supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/polyfill.js?")},"./node_modules/regexp.prototype.flags/shim.js": +/*!*****************************************************!*\ + !*** ./node_modules/regexp.prototype.flags/shim.js ***! + \*****************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \"./node_modules/define-properties/index.js\").supportsDescriptors;\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \"./node_modules/regexp.prototype.flags/polyfill.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/shim.js?")},"./node_modules/side-channel/index.js": +/*!********************************************!*\ + !*** ./node_modules/side-channel/index.js ***! + \********************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\");\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\");\nvar inspect = __webpack_require__(/*! object-inspect */ \"./node_modules/object-inspect/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\nvar $push = callBound('Array.prototype.push');\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar objectGet = function (objects, key) { // eslint-disable-line consistent-return\n\tfor (var i = 0; i < objects.length; i += 1) {\n\t\tif (objects[i].key === key) {\n\t\t\treturn objects[i].value;\n\t\t}\n\t}\n};\nvar objectSet = function (objects, key, value) {\n\tfor (var i = 0; i < objects.length; i += 1) {\n\t\tif (objects[i].key === key) {\n\t\t\tobjects[i].value = value; // eslint-disable-line no-param-reassign\n\t\t\treturn;\n\t\t}\n\t}\n\t$push(objects, {\n\t\tkey: key,\n\t\tvalue: value\n\t});\n};\nvar objectHas = function (objects, key) {\n\tfor (var i = 0; i < objects.length; i += 1) {\n\t\tif (objects[i].key === key) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn objectGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn objectHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t$o = [];\n\t\t\t\t}\n\t\t\t\tobjectSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/side-channel/index.js?")},"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js": +/*!****************************************************************************!*\ + !*** ./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js ***! + \****************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js": +/*!********************************************************************************!*\ + !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js ***! + \********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js ***! + \*********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar callBind = __webpack_require__(/*! ./callBind */ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js?")},"./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */function(module,exports){eval('var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function("return this")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === "object") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it\'s\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack://Quill/(webpack)/buildin/global.js?')},"./node_modules/which-boxed-primitive/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/which-boxed-primitive/index.js ***! + \*****************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isString = __webpack_require__(/*! is-string */ \"./node_modules/is-string/index.js\");\nvar isNumber = __webpack_require__(/*! is-number-object */ \"./node_modules/is-number-object/index.js\");\nvar isBoolean = __webpack_require__(/*! is-boolean-object */ \"./node_modules/is-boolean-object/index.js\");\nvar isSymbol = __webpack_require__(/*! is-symbol */ \"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\");\nvar isBigInt = __webpack_require__(/*! is-bigint */ \"./node_modules/is-bigint/index.js\");\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/index.js?")},"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js": +/*!****************************************************************************!*\ + !*** ./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js ***! + \****************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && false;\n\t};\n}\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js?")},"./node_modules/which-collection/index.js": +/*!************************************************!*\ + !*** ./node_modules/which-collection/index.js ***! + \************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isMap = __webpack_require__(/*! is-map */ \"./node_modules/is-map/index.js\");\nvar isSet = __webpack_require__(/*! is-set */ \"./node_modules/is-set/index.js\");\nvar isWeakMap = __webpack_require__(/*! is-weakmap */ \"./node_modules/is-weakmap/index.js\");\nvar isWeakSet = __webpack_require__(/*! is-weakset */ \"./node_modules/is-weakset/index.js\");\n\nmodule.exports = function whichCollection(value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-collection/index.js?")},"./node_modules/which-typed-array/index.js": +/*!*************************************************!*\ + !*** ./node_modules/which-typed-array/index.js ***! + \*************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar forEach = __webpack_require__(/*! foreach */ \"./node_modules/foreach/index.js\");\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \"./node_modules/available-typed-arrays/index.js\");\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\");\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\");\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof global[typedArray] === 'function') {\n\t\t\tvar arr = new global[typedArray]();\n\t\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t\t}\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = __webpack_require__(/*! is-typed-array */ \"./node_modules/is-typed-array/index.js\");\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/index.js?")},"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js ***! + \*********************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js?")},"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js ***! + \*************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ "./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js");\n\nvar $Function = GetIntrinsic(\'%Function%\');\nvar $apply = $Function.apply;\nvar $call = $Function.call;\n\nmodule.exports = function callBind() {\n\treturn bind.apply($call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn bind.apply($apply, arguments);\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js?')},"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js ***! + \**************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar callBind = __webpack_require__(/*! ./callBind */ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js?")},"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***! + \*****************************************************************************************************/ +/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\");\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n\n\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?")},"./quill.js": +/*!******************!*\ + !*** ./quill.js ***! + \******************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ "./core.js");\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/align */ "./formats/align.js");\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formats/direction */ "./formats/direction.js");\n/* harmony import */ var _formats_indent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formats/indent */ "./formats/indent.js");\n/* harmony import */ var _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formats/blockquote */ "./formats/blockquote.js");\n/* harmony import */ var _formats_header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formats/header */ "./formats/header.js");\n/* harmony import */ var _formats_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formats/list */ "./formats/list.js");\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formats/background */ "./formats/background.js");\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./formats/color */ "./formats/color.js");\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./formats/font */ "./formats/font.js");\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formats/size */ "./formats/size.js");\n/* harmony import */ var _formats_bold__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./formats/bold */ "./formats/bold.js");\n/* harmony import */ var _formats_italic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./formats/italic */ "./formats/italic.js");\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./formats/link */ "./formats/link.js");\n/* harmony import */ var _formats_script__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./formats/script */ "./formats/script.js");\n/* harmony import */ var _formats_strike__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./formats/strike */ "./formats/strike.js");\n/* harmony import */ var _formats_underline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./formats/underline */ "./formats/underline.js");\n/* harmony import */ var _formats_formula__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./formats/formula */ "./formats/formula.js");\n/* harmony import */ var _formats_image__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formats/image */ "./formats/image.js");\n/* harmony import */ var _formats_video__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formats/video */ "./formats/video.js");\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formats/code */ "./formats/code.js");\n/* harmony import */ var _modules_syntax__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/syntax */ "./modules/syntax.js");\n/* harmony import */ var _modules_table__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/table */ "./modules/table.js");\n/* harmony import */ var _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/toolbar */ "./modules/toolbar.js");\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./ui/icons */ "./ui/icons.js");\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ui/picker */ "./ui/picker.js");\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ui/color-picker */ "./ui/color-picker.js");\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/icon-picker */ "./ui/icon-picker.js");\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/tooltip */ "./ui/tooltip.js");\n/* harmony import */ var _themes_bubble__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./themes/bubble */ "./themes/bubble.js");\n/* harmony import */ var _themes_snow__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./themes/snow */ "./themes/snow.js");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_core__WEBPACK_IMPORTED_MODULE_0__["default"].register({\n \'attributors/attribute/direction\': _formats_direction__WEBPACK_IMPORTED_MODULE_2__["DirectionAttribute"],\n \'attributors/class/align\': _formats_align__WEBPACK_IMPORTED_MODULE_1__["AlignClass"],\n \'attributors/class/background\': _formats_background__WEBPACK_IMPORTED_MODULE_7__["BackgroundClass"],\n \'attributors/class/color\': _formats_color__WEBPACK_IMPORTED_MODULE_8__["ColorClass"],\n \'attributors/class/direction\': _formats_direction__WEBPACK_IMPORTED_MODULE_2__["DirectionClass"],\n \'attributors/class/font\': _formats_font__WEBPACK_IMPORTED_MODULE_9__["FontClass"],\n \'attributors/class/size\': _formats_size__WEBPACK_IMPORTED_MODULE_10__["SizeClass"],\n \'attributors/style/align\': _formats_align__WEBPACK_IMPORTED_MODULE_1__["AlignStyle"],\n \'attributors/style/background\': _formats_background__WEBPACK_IMPORTED_MODULE_7__["BackgroundStyle"],\n \'attributors/style/color\': _formats_color__WEBPACK_IMPORTED_MODULE_8__["ColorStyle"],\n \'attributors/style/direction\': _formats_direction__WEBPACK_IMPORTED_MODULE_2__["DirectionStyle"],\n \'attributors/style/font\': _formats_font__WEBPACK_IMPORTED_MODULE_9__["FontStyle"],\n \'attributors/style/size\': _formats_size__WEBPACK_IMPORTED_MODULE_10__["SizeStyle"]\n}, true);\n_core__WEBPACK_IMPORTED_MODULE_0__["default"].register({\n \'formats/align\': _formats_align__WEBPACK_IMPORTED_MODULE_1__["AlignClass"],\n \'formats/direction\': _formats_direction__WEBPACK_IMPORTED_MODULE_2__["DirectionClass"],\n \'formats/indent\': _formats_indent__WEBPACK_IMPORTED_MODULE_3__["default"],\n \'formats/background\': _formats_background__WEBPACK_IMPORTED_MODULE_7__["BackgroundStyle"],\n \'formats/color\': _formats_color__WEBPACK_IMPORTED_MODULE_8__["ColorStyle"],\n \'formats/font\': _formats_font__WEBPACK_IMPORTED_MODULE_9__["FontClass"],\n \'formats/size\': _formats_size__WEBPACK_IMPORTED_MODULE_10__["SizeClass"],\n \'formats/blockquote\': _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__["default"],\n \'formats/code-block\': _formats_code__WEBPACK_IMPORTED_MODULE_20__["default"],\n \'formats/header\': _formats_header__WEBPACK_IMPORTED_MODULE_5__["default"],\n \'formats/list\': _formats_list__WEBPACK_IMPORTED_MODULE_6__["default"],\n \'formats/bold\': _formats_bold__WEBPACK_IMPORTED_MODULE_11__["default"],\n \'formats/code\': _formats_code__WEBPACK_IMPORTED_MODULE_20__["Code"],\n \'formats/italic\': _formats_italic__WEBPACK_IMPORTED_MODULE_12__["default"],\n \'formats/link\': _formats_link__WEBPACK_IMPORTED_MODULE_13__["default"],\n \'formats/script\': _formats_script__WEBPACK_IMPORTED_MODULE_14__["default"],\n \'formats/strike\': _formats_strike__WEBPACK_IMPORTED_MODULE_15__["default"],\n \'formats/underline\': _formats_underline__WEBPACK_IMPORTED_MODULE_16__["default"],\n \'formats/formula\': _formats_formula__WEBPACK_IMPORTED_MODULE_17__["default"],\n \'formats/image\': _formats_image__WEBPACK_IMPORTED_MODULE_18__["default"],\n \'formats/video\': _formats_video__WEBPACK_IMPORTED_MODULE_19__["default"],\n \'modules/syntax\': _modules_syntax__WEBPACK_IMPORTED_MODULE_21__["default"],\n \'modules/table\': _modules_table__WEBPACK_IMPORTED_MODULE_22__["default"],\n \'modules/toolbar\': _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__["default"],\n \'themes/bubble\': _themes_bubble__WEBPACK_IMPORTED_MODULE_29__["default"],\n \'themes/snow\': _themes_snow__WEBPACK_IMPORTED_MODULE_30__["default"],\n \'ui/icons\': _ui_icons__WEBPACK_IMPORTED_MODULE_24__["default"],\n \'ui/picker\': _ui_picker__WEBPACK_IMPORTED_MODULE_25__["default"],\n \'ui/icon-picker\': _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__["default"],\n \'ui/color-picker\': _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__["default"],\n \'ui/tooltip\': _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__["default"]\n}, true);\n/* harmony default export */ __webpack_exports__["default"] = (_core__WEBPACK_IMPORTED_MODULE_0__["default"]);\n\n//# sourceURL=webpack://Quill/./quill.js?')},"./themes/base.js": +/*!************************!*\ + !*** ./themes/base.js ***! + \************************/ +/*! exports provided: BaseTooltip, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseTooltip\", function() { return BaseTooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BaseTheme; });\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \"./node_modules/extend/index.js\");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \"./core/emitter.js\");\n/* harmony import */ var _core_theme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/theme */ \"./core/theme.js\");\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/color-picker */ \"./ui/color-picker.js\");\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icon-picker */ \"./ui/icon-picker.js\");\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/picker */ \"./ui/picker.js\");\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/tooltip */ \"./ui/tooltip.js\");\n\n\n\n\n\n\n\nconst ALIGNS = [false, 'center', 'right', 'justify'];\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'];\nconst FONTS = [false, 'serif', 'monospace'];\nconst HEADERS = ['1', '2', '3', false];\nconst SIZES = ['small', false, 'large', 'huge'];\n\nclass BaseTheme extends _core_theme__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n constructor(quill, options) {\n super(quill, options);\n\n const listener = e => {\n if (!document.body.contains(quill.root)) {\n document.body.removeEventListener('click', listener);\n return;\n }\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\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\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n const module = super.addModule(name);\n\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\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\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\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\n return new _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__[\"default\"](select, icons.align);\n }\n\n if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\n\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n\n return new _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__[\"default\"](select, icons[format]);\n }\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\n return new _ui_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"](select);\n });\n\n const update = () => {\n this.pickers.forEach(picker => {\n picker.update();\n });\n };\n\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].events.EDITOR_CHANGE, update);\n }\n\n}\n\nBaseTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _core_theme__WEBPACK_IMPORTED_MODULE_2__[\"default\"].DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n\n image() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n\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\n fileInput.click();\n },\n\n video() {\n this.quill.theme.tooltip.edit('video');\n }\n\n }\n }\n }\n});\n\nclass BaseTooltip extends _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__[\"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\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(\"data-\".concat(mode)) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n const {\n scrollTop\n } = this.quill.scrollingContainer;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let {\n value\n } = this.textbox;\n\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n const {\n scrollTop\n } = this.quill.root;\n\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n }\n\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n\n case 'video':\n {\n value = extractVideoUrl(value);\n }\n // eslint-disable-next-line no-fallthrough\n\n case 'formula':\n {\n if (!value) break;\n const range = this.quill.getSelection(true);\n\n if (range != null) {\n const index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n }\n\n this.quill.setSelection(index + 2, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n }\n\n break;\n }\n\n default:\n }\n\n this.textbox.value = '';\n this.hide();\n }\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\n if (match) {\n return \"\".concat(match[1] || 'https', \"://www.youtube.com/embed/\").concat(match[2], \"?showinfo=0\");\n } // eslint-disable-next-line no-cond-assign\n\n\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n return \"\".concat(match[1] || 'https', \"://player.vimeo.com/video/\").concat(match[2], \"/\");\n }\n\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(value => {\n const option = document.createElement('option');\n\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n\n select.appendChild(option);\n });\n}\n\n\n\n//# sourceURL=webpack://Quill/./themes/base.js?")},"./themes/bubble.js": +/*!**************************!*\ + !*** ./themes/bubble.js ***! + \**************************/ +/*! exports provided: BubbleTooltip, default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BubbleTooltip", function() { return BubbleTooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return BubbleTheme; });\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ "./node_modules/extend/index.js");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ "./core/emitter.js");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ "./themes/base.js");\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/selection */ "./core/selection.js");\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icons */ "./ui/icons.js");\n\n\n\n\n\nconst TOOLBAR_CONFIG = [[\'bold\', \'italic\', \'link\'], [{\n header: 1\n}, {\n header: 2\n}, \'blockquote\']];\n\nclass BubbleTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__["BaseTooltip"] {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== _core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].events.SELECTION_CHANGE) return;\n\n if (range != null && range.length > 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__["default"].sources.USER) {\n this.show(); // Lock our width so we will expand beyond our offsetParent boundaries\n\n this.root.style.left = \'0px\';\n this.root.style.width = \'\';\n this.root.style.width = "".concat(this.root.offsetWidth, "px");\n const lines = this.quill.getLines(range.index, range.length);\n\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 _core_selection__WEBPACK_IMPORTED_MODULE_3__["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(_core_emitter__WEBPACK_IMPORTED_MODULE_1__["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\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\n if (shift !== 0) {\n arrow.style.marginLeft = "".concat(-1 * shift - arrow.offsetWidth / 2, "px");\n }\n\n return shift;\n }\n\n}\n\nBubbleTooltip.TEMPLATE = [\'\', \'
    \', \'\', \'\', \'
    \'].join(\'\');\n\nclass BubbleTheme extends _base__WEBPACK_IMPORTED_MODULE_2__["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\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\'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__["default"]);\n this.buildPickers(toolbar.container.querySelectorAll(\'select\'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__["default"]);\n }\n\n}\n\nBubbleTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__["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});\n\n\n//# sourceURL=webpack://Quill/./themes/bubble.js?')},"./themes/snow.js": +/*!************************!*\ + !*** ./themes/snow.js ***! + \************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \"./node_modules/extend/index.js\");\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \"./core/emitter.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./themes/base.js\");\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/link */ \"./formats/link.js\");\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/selection */ \"./core/selection.js\");\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons */ \"./ui/icons.js\");\n\n\n\n\n\n\nconst TOOLBAR_CONFIG = [[{\n header: ['1', '2', '3', false]\n}], ['bold', 'italic', 'underline', 'link'], [{\n list: 'ordered'\n}, {\n list: 'bullet'\n}], ['clean']];\n\nclass SnowTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\"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\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, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER);\n delete this.linkRange;\n }\n\n event.preventDefault();\n this.hide();\n });\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n\n if (range.length === 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sources.USER) {\n const [link, offset] = this.quill.scroll.descendant(_formats_link__WEBPACK_IMPORTED_MODULE_3__[\"default\"], range.index);\n\n if (link != null) {\n this.linkRange = new _core_selection__WEBPACK_IMPORTED_MODULE_4__[\"Range\"](range.index - offset, link.length());\n const preview = _formats_link__WEBPACK_IMPORTED_MODULE_3__[\"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\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n\n}\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nclass SnowTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\"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\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({\n key: 'k',\n shortKey: true\n }, (range, context) => {\n toolbar.handlers.link.call(toolbar, !context.format.link);\n });\n }\n }\n\n}\n\nSnowTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\"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\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = \"mailto:\".concat(preview);\n }\n\n const {\n tooltip\n } = this.quill.theme;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n\n }\n }\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (SnowTheme);\n\n//# sourceURL=webpack://Quill/./themes/snow.js?")},"./ui/color-picker.js": +/*!****************************!*\ + !*** ./ui/color-picker.js ***! + \****************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \"./ui/picker.js\");\n\n\nclass ColorPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\"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\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}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ColorPicker);\n\n//# sourceURL=webpack://Quill/./ui/color-picker.js?")},"./ui/icon-picker.js": +/*!***************************!*\ + !*** ./ui/icon-picker.js ***! + \***************************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \"./ui/picker.js\");\n\n\nclass IconPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\"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 if (this.label.innerHTML === item.innerHTML) return;\n this.label.innerHTML = item.innerHTML;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (IconPicker);\n\n//# sourceURL=webpack://Quill/./ui/icon-picker.js?")},"./ui/icons.js": +/*!*********************!*\ + !*** ./ui/icons.js ***! + \*********************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/align-left.svg */ "./assets/icons/align-left.svg");\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/icons/align-center.svg */ "./assets/icons/align-center.svg");\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../assets/icons/align-right.svg */ "./assets/icons/align-right.svg");\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/icons/align-justify.svg */ "./assets/icons/align-justify.svg");\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/icons/background.svg */ "./assets/icons/background.svg");\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../assets/icons/blockquote.svg */ "./assets/icons/blockquote.svg");\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/icons/bold.svg */ "./assets/icons/bold.svg");\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/icons/clean.svg */ "./assets/icons/clean.svg");\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/icons/code.svg */ "./assets/icons/code.svg");\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/icons/color.svg */ "./assets/icons/color.svg");\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/icons/direction-ltr.svg */ "./assets/icons/direction-ltr.svg");\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/icons/direction-rtl.svg */ "./assets/icons/direction-rtl.svg");\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/icons/formula.svg */ "./assets/icons/formula.svg");\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/icons/header.svg */ "./assets/icons/header.svg");\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/icons/header-2.svg */ "./assets/icons/header-2.svg");\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/icons/italic.svg */ "./assets/icons/italic.svg");\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/icons/image.svg */ "./assets/icons/image.svg");\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/icons/indent.svg */ "./assets/icons/indent.svg");\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/icons/outdent.svg */ "./assets/icons/outdent.svg");\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/icons/link.svg */ "./assets/icons/link.svg");\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/icons/list-bullet.svg */ "./assets/icons/list-bullet.svg");\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/icons/list-check.svg */ "./assets/icons/list-check.svg");\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/icons/list-ordered.svg */ "./assets/icons/list-ordered.svg");\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/icons/subscript.svg */ "./assets/icons/subscript.svg");\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/icons/superscript.svg */ "./assets/icons/superscript.svg");\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/icons/strike.svg */ "./assets/icons/strike.svg");\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/icons/table.svg */ "./assets/icons/table.svg");\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/icons/underline.svg */ "./assets/icons/underline.svg");\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/icons/video.svg */ "./assets/icons/video.svg");\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__["default"] = ({\n align: {\n \'\': _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default.a,\n center: _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default.a,\n right: _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default.a,\n justify: _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default.a\n },\n background: _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default.a,\n blockquote: _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default.a,\n bold: _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default.a,\n clean: _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default.a,\n code: _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\n \'code-block\': _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\n color: _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default.a,\n direction: {\n \'\': _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default.a,\n rtl: _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default.a\n },\n formula: _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default.a,\n header: {\n \'1\': _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default.a,\n \'2\': _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default.a\n },\n italic: _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default.a,\n image: _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default.a,\n indent: {\n \'+1\': _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default.a,\n \'-1\': _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default.a\n },\n link: _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default.a,\n list: {\n bullet: _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default.a,\n check: _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default.a,\n ordered: _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default.a\n },\n script: {\n sub: _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default.a,\n super: _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default.a\n },\n strike: _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default.a,\n table: _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default.a,\n underline: _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default.a,\n video: _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default.a\n});\n\n//# sourceURL=webpack://Quill/./ui/icons.js?')},"./ui/picker.js": +/*!**********************!*\ + !*** ./ui/picker.js ***! + \**********************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/dropdown.svg */ \"./assets/icons/dropdown.svg\");\n/* harmony import */ var _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__);\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 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\n case 'Escape':\n this.escape();\n event.preventDefault();\n break;\n\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\n\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\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\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\n case 'Escape':\n this.escape();\n event.preventDefault();\n break;\n\n default:\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 = _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default.a;\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'); // Don't want screen readers to read this until options are visible\n\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1'; // Need a unique id for aria-controls\n\n options.id = \"ql-picker-options-\".concat(optionsCounter);\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n this.options = options;\n Array.from(this.select.options).forEach(option => {\n const item = this.buildItem(option);\n options.appendChild(item);\n\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(); // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n\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\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\n\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\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\n if (trigger) {\n this.select.dispatchEvent(new Event('change'));\n this.close();\n }\n }\n\n update() {\n let option;\n\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\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Picker);\n\n//# sourceURL=webpack://Quill/./ui/picker.js?")},"./ui/tooltip.js": +/*!***********************!*\ + !*** ./ui/tooltip.js ***! + \***********************/ +/*! exports provided: default */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\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\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener(\'scroll\', () => {\n this.root.style.marginTop = "".concat(-1 * this.quill.root.scrollTop, "px");\n });\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; // root.scrollTop should be 0 if scrollContainer !== root\n\n const top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = "".concat(left, "px");\n this.root.style.top = "".concat(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\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = "".concat(left + shift, "px");\n }\n\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = "".concat(left + shift, "px");\n }\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 = "".concat(top - verticalShift, "px");\n this.root.classList.add(\'ql-flip\');\n }\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}\n\n/* harmony default export */ __webpack_exports__["default"] = (Tooltip);\n\n//# sourceURL=webpack://Quill/./ui/tooltip.js?')},0: +/*!************************!*\ + !*** multi ./quill.js ***! + \************************/ +/*! no static exports found */function(module,exports,__webpack_require__){eval('module.exports = __webpack_require__(/*! ./quill.js */"./quill.js");\n\n\n//# sourceURL=webpack://Quill/multi_./quill.js?')},1: +/*!********************************!*\ + !*** ./util.inspect (ignored) ***! + \********************************/ +/*! no static exports found */function(module,exports){eval("/* (ignored) */\n\n//# sourceURL=webpack://Quill/./util.inspect_(ignored)?")}}).default},module.exports=factory()},function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return l})),n.d(t,"a",(function(){return d}));var r=n(4),o=n(11),i=n(14),s=n(13);const a=void 0!==e&&e.release&&/node|io\.js/.test(e.release.name),l="undefined"!=typeof window&&!a;"undefined"!=typeof navigator&&/Mac/.test(navigator.platform);let c;const u=[],_=()=>{if(void 0===c)if(a){c=r.c();const t=e.argv;let n=null;for(let e=0;e{if(0!==e.length){const[t,n]=e.split("=");c.set("--"+o.a(t,"-"),n),c.set("-"+o.a(t,"-"),n)}})):c=r.c();return c},d=t=>a?i.a(e.env[t.toUpperCase()]):i.a(s.a.getItem(t));(e=>_().has(e))("--"+(f="production"))||d(f);var f}).call(this,n(37))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n(e=>e.replace(o,""))(e.replace(i,e=>`${t}${(e=>e.toLowerCase())(e)}`));"undefined"!=typeof TextEncoder&&new TextEncoder;let a="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});a&&1===a.decode(new Uint8Array).length&&(a=null)},function(e,t,n){},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));let r=new class{constructor(){this.map=new Map}setItem(e,t){this.map.set(e,t)}getItem(e){return this.map.get(e)}};try{"undefined"!=typeof localStorage&&(r=localStorage)}catch(e){}const o=r},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));const r=e=>void 0===e?null:e},function(e,t){const n="undefined"==typeof performance?null:performance,r="undefined"==typeof crypto?null:crypto,o=null!==r?e=>{const t=new Uint8Array(e);return r.getRandomValues(t),t.buffer}:e=>{const t=new Uint8Array(e);for(let n=0;n>>0);return t.buffer};t.performance=n,t.cryptoRandomBuffer=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});i(n(10));var r=i(n(23)),o=i(n(24));function i(e){return e&&e.__esModule?e:{default:e}}var s={specs:[r.default,o.default],overlay:{className:"blot-formatter__overlay",style:{position:"absolute",boxSizing:"border-box",border:"1px dashed #444"}},align:{attribute:"data-align",aligner:{applyStyle:!0},icons:{left:'\n \n \n \n \n \n ',center:'\n \n \n \n \n \n ',right:'\n \n \n \n \n \n '},toolbar:{allowDeselect:!0,mainClassName:"blot-formatter__toolbar",mainStyle:{position:"absolute",top:"-12px",right:"0",left:"0",height:"0",minWidth:"100px",font:"12px/1.0 Arial, Helvetica, sans-serif",textAlign:"center",color:"#333",boxSizing:"border-box",cursor:"default",zIndex:"1"},buttonClassName:"blot-formatter__toolbar-button",addButtonSelectStyle:!0,buttonStyle:{display:"inline-block",width:"24px",height:"24px",background:"white",border:"1px solid #999",verticalAlign:"middle"},svgStyle:{display:"inline-block",width:"24px",height:"24px",background:"white",border:"1px solid #999",verticalAlign:"middle"}}},resize:{handleClassName:"blot-formatter__resize-handle",handleStyle:{position:"absolute",height:"12px",width:"12px",backgroundColor:"white",border:"1px solid #777",boxSizing:"border-box",opacity:"0.80"}}};t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&(e.style.borderLeftWidth="0")),n.options.align.toolbar.svgStyle&&Object.assign(e.children[0].style,n.options.align.toolbar.svgStyle)}},{key:"addButtons",value:function(e,t,n){var r=this;n.getAlignments().forEach((function(o,i){var s=document.createElement("span");s.classList.add(e.options.align.toolbar.buttonClassName),s.innerHTML=o.icon,s.addEventListener("click",(function(){r.onButtonClick(s,e,o,n)})),r.preselectButton(s,o,e,n),r.addButtonStyle(s,i,e),r.buttons.push(s),t.appendChild(s)}))}},{key:"preselectButton",value:function(e,t,n,r){if(n.currentSpec){var o=n.currentSpec.getTargetElement();o&&r.isAligned(o,t)&&this.selectButton(n,e)}}},{key:"onButtonClick",value:function(e,t,n,r){if(t.currentSpec){var o=t.currentSpec.getTargetElement();o&&this.clickButton(e,o,t,n,r)}}},{key:"clickButton",value:function(e,t,n,r,o){var i=this;this.buttons.forEach((function(e){i.deselectButton(n,e)})),o.isAligned(t,r)?n.options.align.toolbar.allowDeselect?o.clear(t):this.selectButton(n,e):(this.selectButton(n,e),r.apply(t)),n.update()}},{key:"selectButton",value:function(e,t){t.classList.add("is-selected"),e.options.align.toolbar.addButtonSelectStyle&&t.style.setProperty("filter","invert(20%)")}},{key:"deselectButton",value:function(e,t){t.classList.remove("is-selected"),e.options.align.toolbar.addButtonSelectStyle&&t.style.removeProperty("filter")}}]),e}();t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=0;c--)if(_[c]!=d[c])return!1;for(c=_.length-1;c>=0;c--)if(u=_[c],!s(e[u],t[u],n))return!1;return typeof e==typeof t}(e,t,n))};function a(e){return null==e}function l(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length||"function"!=typeof e.copy||"function"!=typeof e.slice||e.length>0&&"number"!=typeof e[0])}},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===o.call(e)},l=function(e){if(!e||"[object Object]"!==o.call(e))return!1;var t,n=r.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&r.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!i)return!1;for(t in e);return void 0===t||r.call(e,t)},c=function(e,t){i&&"__proto__"===t.name?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},u=function(e,t){if("__proto__"===t){if(!r.call(e,t))return;if(s)return s(e,t).value}return e[t]};e.exports=function e(){var t,n,r,o,i,s,_=arguments[0],d=1,f=arguments.length,p=!1;for("boolean"==typeof _&&(p=_,_=arguments[1]||{},d=2),(null==_||"object"!=typeof _&&"function"!=typeof _)&&(_={});d=0},e.prototype._handleTextChange=function(e){var t=this;window.setTimeout((function(){t._options.transformOnTextChange&&t._transformCursors(e),t._options.selectionChangeSource&&(t._emitSelection(),t.update())}))},e.prototype._emitSelection=function(){this._quill.emitter.emit(this._quill.constructor.events.SELECTION_CHANGE,this._quill.getSelection(),this._currentSelection,this._options.selectionChangeSource)},e.prototype._setDefaults=function(e){return(e=Object.assign({},e)).template=e.template||a.default,e.containerClass=e.containerClass||"ql-cursors",null!==e.selectionChangeSource&&(e.selectionChangeSource=e.selectionChangeSource||this._quill.constructor.sources.API),e.hideDelayMs=Number.isInteger(e.hideDelayMs)?e.hideDelayMs:3e3,e.hideSpeedMs=Number.isInteger(e.hideSpeedMs)?e.hideSpeedMs:400,e.transformOnTextChange=!!e.transformOnTextChange,e},e.prototype._lineRanges=function(e,t,n){var r=this._quill.getLines(e.range);return r.reduce((function(e,o,i){if(!o.children){var s=document.createRange();return s.selectNode(o.domNode),e.concat(s)}var a=0===i?t:o.path(0).pop(),l=a[0],c=a[1],u=i===r.length-1?n:o.path(o.length()-1).pop(),_=u[0],d=u[1],f=document.createRange();return f.setStart(l.domNode,c),f.setEnd(_.domNode,d),e.concat(f)}),[])},e.prototype._transformCursors=function(e){var t=this;e=new c(e),this.cursors().filter((function(e){return e.range})).forEach((function(n){n.range.index=e.transformPosition(n.range.index),t._updateCursor(n)}))},e}();t.default=u},function(e,t,n){var r;!function(o){var i=/^\s+/,s=/\s+$/,a=0,l=o.round,c=o.min,u=o.max,_=o.random;function d(e,t){if(t=t||{},(e=e||"")instanceof d)return e;if(!(this instanceof d))return new d(e,t);var n=function(e){var t,n,r,a={r:0,g:0,b:0},l=1,_=null,d=null,f=null,p=!1,h=!1;return"string"==typeof e&&(e=function(e){e=e.replace(i,"").replace(s,"").toLowerCase();var t,n=!1;if(T[e])e=T[e],n=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};return(t=F.rgb.exec(e))?{r:t[1],g:t[2],b:t[3]}:(t=F.rgba.exec(e))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=F.hsl.exec(e))?{h:t[1],s:t[2],l:t[3]}:(t=F.hsla.exec(e))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=F.hsv.exec(e))?{h:t[1],s:t[2],v:t[3]}:(t=F.hsva.exec(e))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=F.hex8.exec(e))?{r:R(t[1]),g:R(t[2]),b:R(t[3]),a:U(t[4]),format:n?"name":"hex8"}:(t=F.hex6.exec(e))?{r:R(t[1]),g:R(t[2]),b:R(t[3]),format:n?"name":"hex"}:(t=F.hex4.exec(e))?{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),a:U(t[4]+""+t[4]),format:n?"name":"hex8"}:!!(t=F.hex3.exec(e))&&{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),format:n?"name":"hex"}}(e)),"object"==typeof e&&($(e.r)&&$(e.g)&&$(e.b)?(t=e.r,n=e.g,r=e.b,a={r:255*S(t,255),g:255*S(n,255),b:255*S(r,255)},p=!0,h="%"===String(e.r).substr(-1)?"prgb":"rgb"):$(e.h)&&$(e.s)&&$(e.v)?(_=B(e.s),d=B(e.v),a=function(e,t,n){e=6*S(e,360),t=S(t,100),n=S(n,100);var r=o.floor(e),i=e-r,s=n*(1-t),a=n*(1-i*t),l=n*(1-(1-i)*t),c=r%6;return{r:255*[n,a,s,s,l,n][c],g:255*[l,n,n,a,s,s][c],b:255*[s,s,l,n,n,a][c]}}(e.h,_,d),p=!0,h="hsv"):$(e.h)&&$(e.s)&&$(e.l)&&(_=B(e.s),f=B(e.l),a=function(e,t,n){var r,o,i;function s(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=S(e,360),t=S(t,100),n=S(n,100),0===t)r=o=i=n;else{var a=n<.5?n*(1+t):n+t-n*t,l=2*n-a;r=s(l,a,e+1/3),o=s(l,a,e),i=s(l,a,e-1/3)}return{r:255*r,g:255*o,b:255*i}}(e.h,_,f),p=!0,h="hsl"),e.hasOwnProperty("a")&&(l=e.a)),l=C(l),{ok:p,format:e.format||h,r:c(255,u(a.r,0)),g:c(255,u(a.g,0)),b:c(255,u(a.b,0)),a:l}}(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=l(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=n.ok,this._tc_id=a++}function f(e,t,n){e=S(e,255),t=S(t,255),n=S(n,255);var r,o,i=u(e,t,n),s=c(e,t,n),a=(i+s)/2;if(i==s)r=o=0;else{var l=i-s;switch(o=a>.5?l/(2-i-s):l/(i+s),i){case e:r=(t-n)/l+(t>1)+720)%360;--t;)r.h=(r.h+o)%360,i.push(d(r));return i}function M(e,t){t=t||6;for(var n=d(e).toHsv(),r=n.h,o=n.s,i=n.v,s=[],a=1/t;t--;)s.push(d({h:r,s:o,v:i})),i=(i+a)%1;return s}d.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r=this.toRgb();return e=r.r/255,t=r.g/255,n=r.b/255,.2126*(e<=.03928?e/12.92:o.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:o.pow((t+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:o.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=C(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=p(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=p(this._r,this._g,this._b),t=l(360*e.h),n=l(100*e.s),r=l(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+r+"%)":"hsva("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=f(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=f(this._r,this._g,this._b),t=l(360*e.h),n=l(100*e.s),r=l(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+r+"%)":"hsla("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return h(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,n,r,o){var i=[j(l(e).toString(16)),j(l(t).toString(16)),j(l(n).toString(16)),j(q(r))];return o&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0):i.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*S(this._r,255))+"%",g:l(100*S(this._g,255))+"%",b:l(100*S(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*S(this._r,255))+"%, "+l(100*S(this._g,255))+"%, "+l(100*S(this._b,255))+"%)":"rgba("+l(100*S(this._r,255))+"%, "+l(100*S(this._g,255))+"%, "+l(100*S(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(I[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+m(this._r,this._g,this._b,this._a),n=t,r=this._gradientType?"GradientType = 1, ":"";if(e){var o=d(e);n="#"+m(o._r,o._g,o._b,o._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return d(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(E,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(b,arguments)},saturate:function(){return this._applyModification(y,arguments)},greyscale:function(){return this._applyModification(g,arguments)},spin:function(){return this._applyModification(w,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(D,arguments)},complement:function(){return this._applyCombination(O,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(A,arguments)},triad:function(){return this._applyCombination(k,arguments)},tetrad:function(){return this._applyCombination(P,arguments)}},d.fromRatio=function(e,t){if("object"==typeof e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]="a"===r?e[r]:B(e[r]));e=n}return d(e,t)},d.equals=function(e,t){return!(!e||!t)&&d(e).toRgbString()==d(t).toRgbString()},d.random=function(){return d.fromRatio({r:_(),g:_(),b:_()})},d.mix=function(e,t,n){n=0===n?0:n||50;var r=d(e).toRgb(),o=d(t).toRgb(),i=n/100;return d({r:(o.r-r.r)*i+r.r,g:(o.g-r.g)*i+r.g,b:(o.b-r.b)*i+r.b,a:(o.a-r.a)*i+r.a})},d.readability=function(e,t){var n=d(e),r=d(t);return(o.max(n.getLuminance(),r.getLuminance())+.05)/(o.min(n.getLuminance(),r.getLuminance())+.05)},d.isReadable=function(e,t,n){var r,o,i=d.readability(e,t);switch(o=!1,(r=function(e){var t,n;return"AA"!==(t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==t&&(t="AA"),"small"!==(n=(e.size||"small").toLowerCase())&&"large"!==n&&(n="small"),{level:t,size:n}}(n)).level+r.size){case"AAsmall":case"AAAlarge":o=i>=4.5;break;case"AAlarge":o=i>=3;break;case"AAAsmall":o=i>=7}return o},d.mostReadable=function(e,t,n){var r,o,i,s,a=null,l=0;o=(n=n||{}).includeFallbackColors,i=n.level,s=n.size;for(var c=0;cl&&(l=r,a=d(t[c]));return d.isReadable(e,a,{level:i,size:s})||!o?a:(n.includeFallbackColors=!1,d.mostReadable(e,["#fff","#000"],n))};var T=d.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},I=d.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(T);function C(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function S(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=c(t,u(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),o.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function L(e){return c(1,u(0,e))}function R(e){return parseInt(e,16)}function j(e){return 1==e.length?"0"+e:""+e}function B(e){return e<=1&&(e=100*e+"%"),e}function q(e){return o.round(255*parseFloat(e)).toString(16)}function U(e){return R(e)/255}var N,W,K,F=(W="[\\s|\\(]+("+(N="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+N+")[,|\\s]+("+N+")\\s*\\)?",K="[\\s|\\(]+("+N+")[,|\\s]+("+N+")[,|\\s]+("+N+")[,|\\s]+("+N+")\\s*\\)?",{CSS_UNIT:new RegExp(N),rgb:new RegExp("rgb"+W),rgba:new RegExp("rgba"+K),hsl:new RegExp("hsl"+W),hsla:new RegExp("hsla"+K),hsv:new RegExp("hsv"+W),hsva:new RegExp("hsva"+K),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function $(e){return!!F.CSS_UNIT.exec(e)}e.exports?e.exports=d:void 0===(r=function(){return d}.call(t,n,t,e))||(e.exports=r)}(Math)},function(e,t,n){var r,o; +/*! + * RangeFix v0.2.8 + * https://github.com/edg2s/rangefix + * + * Copyright 2014-17 Ed Sanders. + * Released under the MIT license + */void 0===(o="function"==typeof(r=function(){var e,t={};function n(e){var t;return e?screen.deviceXDPI===screen.logicalXDPI?e:"length"in e?Array.prototype.map.call(e,n):(t=screen.deviceXDPI/screen.logicalXDPI,{top:e.top/t,bottom:e.bottom/t,left:e.left/t,right:e.right/t,width:e.width/t,height:e.height/t}):e}function r(e,t){var n,r=0;if(1024>=t.length)return Array.prototype.push.apply(e,t);for(;r1,e.getClientRects||(a.setEnd(i,1),e.getClientRects=e.getBoundingClientRect=2===a.getClientRects().length),e.getBoundingClientRect||(a.setEnd(a.startContainer,a.startOffset),t=a.getBoundingClientRect(),e.getBoundingClientRect=0===t.top&&0===t.left),document.body.removeChild(n),l=window.ActiveXObject&&new Function("/*@cc_on return @_jscript_version; @*/")(),e.ieZoom=!!l&&l<=10),e},t.getClientRects=function(e){var t,o,i,s,a,l=this.isBroken();if(l.ieZoom)return n(e.getClientRects());if(!l.getClientRects)return e.getClientRects();for(t=[],i=[],o=e.endContainer,s=e.endOffset,a=document.createRange();o!==e.commonAncestorContainer;)a.setStart(o,0),a.setEnd(o,s),r(i,a.getClientRects()),s=Array.prototype.indexOf.call(o.parentNode.childNodes,o),o=o.parentNode;return(a=e.cloneRange()).setEnd(o,s),r(t,a.getClientRects()),r(t,i),t},t.getBoundingClientRect=function(e){var t,r,o,i,s,a,l=this.getClientRects(e);if(0===l.length)return null;if(s=e.getBoundingClientRect(),(a=this.isBroken()).ieZoom)return n(s);if(!a.getBoundingClientRect)return s;if(0===s.width&&0===s.height)return l[0];for(t=0,r=l.length;t
    \n \n \n \n
    \n \n \n
    \n';t.default=i},function(e,t,n){"use strict";n.r(t),function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),a?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;s.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),c=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),v="undefined"!=typeof WeakMap?new WeakMap:new n,E=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),r=new g(t,n,this);v.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){E.prototype[e]=function(){var t;return(t=v.get(this))[e].apply(t,arguments)}}));var x=void 0!==o.ResizeObserver?o.ResizeObserver:E;t.default=x}.call(this,n(10))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},o=r(n(1)),i=r(n(2)),s=r(n(14)),a=r(n(15)),l=r(n(3)),c=String.fromCharCode(0),u=function(){function e(e){Array.isArray(e)?this.ops=e:null!=e&&Array.isArray(e.ops)?this.ops=e.ops:this.ops=[]}return e.prototype.insert=function(e,t){var n={};return"string"==typeof e&&0===e.length?this:(n.insert=e,null!=t&&"object"==typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n))},e.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},e.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return null!=t&&"object"==typeof t&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},e.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=i.default(!0,{},e),"object"==typeof n){if("number"==typeof e.delete&&"number"==typeof n.delete)return this.ops[t-1]={delete:n.delete+e.delete},this;if("number"==typeof n.delete&&null!=e.insert&&(t-=1,"object"!=typeof(n=this.ops[t-1])))return this.ops.unshift(e),this;if(o.default(e.attributes,n.attributes)){if("string"==typeof e.insert&&"string"==typeof n.insert)return this.ops[t-1]={insert:n.insert+e.insert},"object"==typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this;if("number"==typeof e.retain&&"number"==typeof n.retain)return this.ops[t-1]={retain:n.retain+e.retain},"object"==typeof e.attributes&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},e.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},e.prototype.filter=function(e){return this.ops.filter(e)},e.prototype.forEach=function(e){this.ops.forEach(e)},e.prototype.map=function(e){return this.ops.map(e)},e.prototype.partition=function(e){var t=[],n=[];return this.forEach((function(r){(e(r)?t:n).push(r)})),[t,n]},e.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},e.prototype.changeLength=function(){return this.reduce((function(e,t){return t.insert?e+l.default.length(t):t.delete?e-t.delete:e}),0)},e.prototype.length=function(){return this.reduce((function(e,t){return e+l.default.length(t)}),0)},e.prototype.slice=function(t,n){void 0===t&&(t=0),void 0===n&&(n=1/0);for(var r=[],o=l.default.iterator(this.ops),i=0;i0&&r.next(s.retain-c)}for(var u=new e(i);n.hasNext()||r.hasNext();)if("insert"===r.peekType())u.push(r.next());else if("delete"===n.peekType())u.push(n.next());else{var _=Math.min(n.peekLength(),r.peekLength()),d=n.next(_),f=r.next(_);if("number"==typeof f.retain){var p={};"number"==typeof d.retain?p.retain=_:p.insert=d.insert;var h=a.default.compose(d.attributes,f.attributes,"number"==typeof d.retain);if(h&&(p.attributes=h),u.push(p),!r.hasNext()&&o.default(u.ops[u.ops.length-1],p)){var m=new e(n.rest());return u.concat(m).chop()}}else"number"==typeof f.delete&&"number"==typeof d.retain&&u.push(f)}return u.chop()},e.prototype.concat=function(t){var n=new e(this.ops.slice());return t.ops.length>0&&(n.push(t.ops[0]),n.ops=n.ops.concat(t.ops.slice(1))),n},e.prototype.diff=function(t,n){if(this.ops===t.ops)return new e;var r=[this,t].map((function(e){return e.map((function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:c;throw new Error("diff() called "+(e===t?"on":"with")+" non-document")})).join("")})),i=new e,u=s.default(r[0],r[1],n),_=l.default.iterator(this.ops),d=l.default.iterator(t.ops);return u.forEach((function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case s.default.INSERT:n=Math.min(d.peekLength(),t),i.push(d.next(n));break;case s.default.DELETE:n=Math.min(t,_.peekLength()),_.next(n),i.delete(n);break;case s.default.EQUAL:n=Math.min(_.peekLength(),d.peekLength(),t);var r=_.next(n),l=d.next(n);o.default(r.insert,l.insert)?i.retain(n,a.default.diff(r.attributes,l.attributes)):i.push(l).delete(n)}t-=n}})),i.chop()},e.prototype.eachLine=function(t,n){void 0===n&&(n="\n");for(var r=l.default.iterator(this.ops),o=new e,i=0;r.hasNext();){if("insert"!==r.peekType())return;var s=r.peek(),a=l.default.length(s)-r.peekLength(),c="string"==typeof s.insert?s.insert.indexOf(n,a)-a:-1;if(c<0)o.push(r.next());else if(c>0)o.push(r.next(c));else{if(!1===t(o,r.next(1).attributes||{},i))return;i+=1,o=new e}}o.length()>0&&t(o,{},i)},e.prototype.invert=function(t){var n=new e;return this.reduce((function(e,r){if(r.insert)n.delete(l.default.length(r));else{if(r.retain&&null==r.attributes)return n.retain(r.retain),e+r.retain;if(r.delete||r.retain&&r.attributes){var o=r.delete||r.retain;return t.slice(e,e+o).forEach((function(e){r.delete?n.push(e):r.retain&&r.attributes&&n.retain(l.default.length(e),a.default.invert(r.attributes,e.attributes))})),e+o}}return e}),0),n.chop()},e.prototype.transform=function(t,n){if(void 0===n&&(n=!1),n=!!n,"number"==typeof t)return this.transformPosition(t,n);for(var r=t,o=l.default.iterator(this.ops),i=l.default.iterator(r.ops),s=new e;o.hasNext()||i.hasNext();)if("insert"!==o.peekType()||!n&&"insert"===i.peekType())if("insert"===i.peekType())s.push(i.next());else{var c=Math.min(o.peekLength(),i.peekLength()),u=o.next(c),_=i.next(c);if(u.delete)continue;_.delete?s.push(_):s.retain(c,a.default.transform(u.attributes,_.attributes,n))}else s.retain(l.default.length(o.next()));return s.chop()},e.prototype.transformPosition=function(e,t){void 0===t&&(t=!1),t=!!t;for(var n=l.default.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(rs)){var f=t.slice(0,d);if((v=t.slice(d))===c){var p=Math.min(a,d),h=l.slice(0,p),m=f.slice(0,p);if(h===m){var b=l.slice(p),y=f.slice(p);return u(h,b,y,c)}}}if(null===_||_===a){var g=a,v=(f=t.slice(0,g),t.slice(g));if(f===l){var E=Math.min(i-g,s-g),x=c.slice(c.length-E),w=v.slice(v.length-E);if(x===w)return u(l,b=c.slice(0,c.length-E),y=v.slice(0,v.length-E),x)}}}return r.length>0&&o&&0===o.length&&(h=e.slice(0,r.index),x=e.slice(r.index+r.length),!(s<(p=h.length)+(E=x.length))&&(m=t.slice(0,p),w=t.slice(s-E),h===m&&x===w))?u(h,b=e.slice(p,i-E),y=t.slice(p,s-E),x):null}(e,t,s);if(_)return _}var d=o(e,t),f=e.substring(0,d);d=i(e=e.substring(d),t=t.substring(d));var p=e.substring(e.length-d),h=function(e,t){var s;if(!e)return[[1,t]];if(!t)return[[-1,e]];var a=e.length>t.length?e:t,l=e.length>t.length?t:e,c=a.indexOf(l);if(-1!==c)return s=[[1,a.substring(0,c)],[0,l],[1,a.substring(c+l.length)]],e.length>t.length&&(s[0][0]=s[2][0]=-1),s;if(1===l.length)return[[-1,e],[1,t]];var u=function(e,t){var n=e.length>t.length?e:t,r=e.length>t.length?t:e;if(n.length<4||2*r.length=e.length?[r,s,a,l,_]:null}var a,l,c,u,_,d=s(n,r,Math.ceil(n.length/4)),f=s(n,r,Math.ceil(n.length/2));return d||f?(a=f?d&&d[4].length>f[4].length?d:f:d,e.length>t.length?(l=a[0],c=a[1],u=a[2],_=a[3]):(u=a[0],_=a[1],l=a[2],c=a[3]),[l,c,u,_,a[4]]):null}(e,t);if(u){var _=u[0],d=u[1],f=u[2],p=u[3],h=u[4],m=n(_,f),b=n(d,p);return m.concat([[0,h]],b)}return function(e,t){for(var n=e.length,o=t.length,i=Math.ceil((n+o)/2),s=i,a=2*i,l=new Array(a),c=new Array(a),u=0;un)p+=2;else if(v>o)f+=2;else if(d&&(w=s+_-y)>=0&&w=E)return r(e,t,k,v)}}for(var x=-b+h;x<=b-m;x+=2){for(var w=s+x,O=(E=x===-b||x!==b&&c[w-1]n)m+=2;else if(O>o)h+=2;else if(!d&&(g=s+_-x)>=0&&g=(E=n-E))return r(e,t,k,v)}}}return[[-1,e],[1,t]]}(e,t)}(e=e.substring(0,e.length-d),t=t.substring(0,t.length-d));return f&&h.unshift([0,f]),p&&h.push([0,p]),function e(t,n){t.push([0,""]);for(var r,s=0,a=0,u=0,_="",d="";s=0&&c(t[f][1])){var p=t[f][1].slice(-1);if(t[f][1]=t[f][1].slice(0,-1),_=p+_,d=p+d,!t[f][1]){t.splice(f,1),s--;var h=f-1;t[h]&&1===t[h][0]&&(u++,d=t[h][1]+d,h--),t[h]&&-1===t[h][0]&&(a++,_=t[h][1]+_,h--),f=h}}l(t[s][1])&&(p=t[s][1].charAt(0),t[s][1]=t[s][1].slice(1),_+=p,d+=p)}if(s0||d.length>0){_.length>0&&d.length>0&&(0!==(r=o(d,_))&&(f>=0?t[f][1]+=d.substring(0,r):(t.splice(0,0,[0,d.substring(0,r)]),s++),d=d.substring(r),_=_.substring(r)),0!==(r=i(d,_))&&(t[s][1]=d.substring(d.length-r)+t[s][1],d=d.substring(0,d.length-r),_=_.substring(0,_.length-r)));var m=u+a;0===_.length&&0===d.length?(t.splice(s-m,m),s-=m):0===_.length?(t.splice(s-m,m,[1,d]),s=s-m+1):0===d.length?(t.splice(s-m,m,[-1,_]),s=s-m+1):(t.splice(s-m,m,[-1,_],[1,d]),s=s-m+2)}0!==s&&0===t[s-1][0]?(t[s-1][1]+=t[s][1],t.splice(s,1)):s++,u=0,a=0,_="",d=""}""===t[t.length-1][1]&&t.pop();var b=!1;for(s=1;s=55296&&e<=56319}function a(e){return e>=56320&&e<=57343}function l(e){return a(e.charCodeAt(0))}function c(e){return s(e.charCodeAt(e.length-1))}function u(e,t,n,r){return c(e)||l(r)?null:function(e){for(var t=[],n=0;n0&&t.push(e[n]);return t}([[0,e],[-1,t],[1,n],[0,r]])}function _(e,t,r){return n(e,t,r,!0)}_.INSERT=1,_.DELETE=-1,_.EQUAL=0,e.exports=_},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o,i=r(n(1)),s=r(n(2));!function(e){e.compose=function(e,t,n){void 0===e&&(e={}),void 0===t&&(t={}),"object"!=typeof e&&(e={}),"object"!=typeof t&&(t={});var r=s.default(!0,{},t);for(var o in n||(r=Object.keys(r).reduce((function(e,t){return null!=r[t]&&(e[t]=r[t]),e}),{})),e)void 0!==e[o]&&void 0===t[o]&&(r[o]=e[o]);return Object.keys(r).length>0?r:void 0},e.diff=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),"object"!=typeof e&&(e={}),"object"!=typeof t&&(t={});var n=Object.keys(e).concat(Object.keys(t)).reduce((function(n,r){return i.default(e[r],t[r])||(n[r]=void 0===t[r]?null:t[r]),n}),{});return Object.keys(n).length>0?n:void 0},e.invert=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),e=e||{};var n=Object.keys(t).reduce((function(n,r){return t[r]!==e[r]&&void 0!==e[r]&&(n[r]=t[r]),n}),{});return Object.keys(e).reduce((function(n,r){return e[r]!==t[r]&&void 0===t[r]&&(n[r]=null),n}),n)},e.transform=function(e,t,n){if(void 0===n&&(n=!1),"object"!=typeof e)return t;if("object"==typeof t){if(!n)return t;var r=Object.keys(t).reduce((function(n,r){return void 0===e[r]&&(n[r]=t[r]),n}),{});return Object.keys(r).length>0?r:void 0}}}(o||(o={})),t.default=o},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(3)),i=function(){function e(e){this.ops=e,this.index=0,this.offset=0}return e.prototype.hasNext=function(){return this.peekLength()<1/0},e.prototype.next=function(e){e||(e=1/0);var t=this.ops[this.index];if(t){var n=this.offset,r=o.default.length(t);if(e>=r-n?(e=r-n,this.index+=1,this.offset=0):this.offset+=e,"number"==typeof t.delete)return{delete:e};var i={};return t.attributes&&(i.attributes=t.attributes),"number"==typeof t.retain?i.retain=e:"string"==typeof t.insert?i.insert=t.insert.substr(n,e):i.insert=t.insert,i}return{retain:1/0}},e.prototype.peek=function(){return this.ops[this.index]},e.prototype.peekLength=function(){return this.ops[this.index]?o.default.length(this.ops[this.index])-this.offset:1/0},e.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},e.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var e=this.offset,t=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=e,this.index=t,[n].concat(r)}return[]},e}();t.default=i},function(e,t,n){var r=n(18),o=n(19);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i=(r(e.i,o,{insert:"head",singleton:!1}),o.locals?o.locals:{});e.exports=i},function(e,t,n){"use strict";var r,o=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i={};function s(e,t,n){for(var r=0;r2?arguments[2]:{},r=o(t);i&&(r=a.call(r,Object.getOwnPropertySymbols(t)));for(var s=0;s0&&(n.attributes=t),this.push(n))},c.prototype.delete=function(e){return e<=0?this:this.push({delete:e})},c.prototype.retain=function(e,t){if(e<=0)return this;var n={retain:e};return null!=t&&"object"===r(t)&&Object.keys(t).length>0&&(n.attributes=t),this.push(n)},c.prototype.push=function(e){var t=this.ops.length,n=this.ops[t-1];if(e=s(!0,{},e),"object"===r(n)){if("number"==typeof e.delete&&"number"==typeof n.delete)return this.ops[t-1]={delete:n.delete+e.delete},this;if("number"==typeof n.delete&&null!=e.insert&&(t-=1,"object"!==r(n=this.ops[t-1])))return this.ops.unshift(e),this;if(i(e.attributes,n.attributes)){if("string"==typeof e.insert&&"string"==typeof n.insert)return this.ops[t-1]={insert:n.insert+e.insert},"object"===r(e.attributes)&&(this.ops[t-1].attributes=e.attributes),this;if("number"==typeof e.retain&&"number"==typeof n.retain)return this.ops[t-1]={retain:n.retain+e.retain},"object"===r(e.attributes)&&(this.ops[t-1].attributes=e.attributes),this}}return t===this.ops.length?this.ops.push(e):this.ops.splice(t,0,e),this},c.prototype.chop=function(){var e=this.ops[this.ops.length-1];return e&&e.retain&&!e.attributes&&this.ops.pop(),this},c.prototype.filter=function(e){return this.ops.filter(e)},c.prototype.forEach=function(e){this.ops.forEach(e)},c.prototype.map=function(e){return this.ops.map(e)},c.prototype.partition=function(e){var t=[],n=[];return this.forEach((function(r){(e(r)?t:n).push(r)})),[t,n]},c.prototype.reduce=function(e,t){return this.ops.reduce(e,t)},c.prototype.changeLength=function(){return this.reduce((function(e,t){return t.insert?e+a.length(t):t.delete?e-t.delete:e}),0)},c.prototype.length=function(){return this.reduce((function(e,t){return e+a.length(t)}),0)},c.prototype.slice=function(e,t){e=e||0,"number"!=typeof t&&(t=1/0);for(var n=[],r=a.iterator(this.ops),o=0;o0&&n.next(o.retain-s)}for(var l=new c(r);t.hasNext()||n.hasNext();)if("insert"===n.peekType())l.push(n.next());else if("delete"===t.peekType())l.push(t.next());else{var u=Math.min(t.peekLength(),n.peekLength()),_=t.next(u),d=n.next(u);if("number"==typeof d.retain){var f={};"number"==typeof _.retain?f.retain=u:f.insert=_.insert;var p=a.attributes.compose(_.attributes,d.attributes,"number"==typeof _.retain);if(p&&(f.attributes=p),l.push(f),!n.hasNext()&&i(l.ops[l.ops.length-1],f)){var h=new c(t.rest());return l.concat(h).chop()}}else"number"==typeof d.delete&&"number"==typeof _.retain&&l.push(d)}return l.chop()},c.prototype.concat=function(e){var t=new c(this.ops.slice());return e.ops.length>0&&(t.push(e.ops[0]),t.ops=t.ops.concat(e.ops.slice(1))),t},c.prototype.diff=function(e,t){if(this.ops===e.ops)return new c;var n=[this,e].map((function(t){return t.map((function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:l;throw new Error("diff() called "+(t===e?"on":"with")+" non-document")})).join("")})),r=new c,s=o(n[0],n[1],t),u=a.iterator(this.ops),_=a.iterator(e.ops);return s.forEach((function(e){for(var t=e[1].length;t>0;){var n=0;switch(e[0]){case o.INSERT:n=Math.min(_.peekLength(),t),r.push(_.next(n));break;case o.DELETE:n=Math.min(t,u.peekLength()),u.next(n),r.delete(n);break;case o.EQUAL:n=Math.min(u.peekLength(),_.peekLength(),t);var s=u.next(n),l=_.next(n);i(s.insert,l.insert)?r.retain(n,a.attributes.diff(s.attributes,l.attributes)):r.push(l).delete(n)}t-=n}})),r.chop()},c.prototype.eachLine=function(e,t){t=t||"\n";for(var n=a.iterator(this.ops),r=new c,o=0;n.hasNext();){if("insert"!==n.peekType())return;var i=n.peek(),s=a.length(i)-n.peekLength(),l="string"==typeof i.insert?i.insert.indexOf(t,s)-s:-1;if(l<0)r.push(n.next());else if(l>0)r.push(n.next(l));else{if(!1===e(r,n.next(1).attributes||{},o))return;o+=1,r=new c}}r.length()>0&&e(r,{},o)},c.prototype.transform=function(e,t){if(t=!!t,"number"==typeof e)return this.transformPosition(e,t);for(var n=a.iterator(this.ops),r=a.iterator(e.ops),o=new c;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!t&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),s=n.next(i),l=r.next(i);if(s.delete)continue;l.delete?o.push(l):o.retain(i,a.attributes.transform(s.attributes,l.attributes,t))}else o.retain(a.length(n.next()));return o.chop()},c.prototype.transformPosition=function(e,t){t=!!t;for(var n=a.iterator(this.ops),r=0;n.hasNext()&&r<=e;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(r0&&"number"!=typeof e[0])}e.exports=function e(t,n,f){var p=f||{};return!!(p.strict?s(t,n):t===n)||(!t||!n||"object"!==r(t)&&"object"!==r(n)?p.strict?s(t,n):t==n:function(t,n,s){var f,p;if(r(t)!==r(n))return!1;if(_(t)||_(n))return!1;if(t.prototype!==n.prototype)return!1;if(i(t)!==i(n))return!1;var h=a(t),m=a(n);if(h!==m)return!1;if(h||m)return t.source===n.source&&l(t)===l(n);if(c(t)&&c(n))return u.call(t)===u.call(n);var b=d(t),y=d(n);if(b!==y)return!1;if(b||y){if(t.length!==n.length)return!1;for(f=0;f=0;f--)if(g[f]!=v[f])return!1;for(f=g.length-1;f>=0;f--)if(!e(t[p=g[f]],n[p],s))return!1;return!0}(t,n,p))}},function(e,t,n){"use strict";var r=Array.prototype.slice,o=n(5),i=Object.keys,s=i?function(e){return i(e)}:n(17),a=Object.keys;s.shim=function(){return Object.keys?function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2)||(Object.keys=function(e){return o(e)?a(r.call(e)):a(e)}):Object.keys=s,Object.keys||s},e.exports=s},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=Object.prototype.toString;e.exports=function(e){var t=o.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"===r(e)&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===o.call(e.callee)),n}},function(e,t,n){"use strict";var r=n(1),o=n(21)("%Function%"),i=o.apply,s=o.call;e.exports=function(){return r.apply(s,arguments)},e.exports.apply=function(){return r.apply(i,arguments)}},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r=function(e){return e!=e};e.exports=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!r(e)||!r(t))}},function(e,t,n){"use strict";var r=n(8);e.exports=function(){return"function"==typeof Object.is?Object.is:r}},function(e,t,n){"use strict";var r=Object,o=TypeError;e.exports=function(){if(null!=this&&this!==r(this))throw new o("RegExp.prototype.flags getter called on non-object");var e="";return this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),this.dotAll&&(e+="s"),this.unicode&&(e+="u"),this.sticky&&(e+="y"),e}},function(e,t,n){"use strict";var r=n(10),o=n(0).supportsDescriptors,i=Object.getOwnPropertyDescriptor,s=TypeError;e.exports=function(){if(!o)throw new s("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");if("gim"===/a/gim.flags){var e=i(RegExp.prototype,"flags");if(e&&"function"==typeof e.get&&"boolean"==typeof/a/.dotAll)return e.get}return r}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===i.call(e)},c=function(e){if(!e||"[object Object]"!==i.call(e))return!1;var t,n=o.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&o.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||o.call(e,t)},u=function(e,t){s&&"__proto__"===t.name?s(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},_=function(e,t){if("__proto__"===t){if(!o.call(e,t))return;if(a)return a(e,t).value}return e[t]};e.exports=function e(){var t,n,o,i,s,a,d=arguments[0],f=1,p=arguments.length,h=!1;for("boolean"==typeof d&&(h=d,d=arguments[1]||{},f=2),(null==d||"object"!==r(d)&&"function"!=typeof d)&&(d={});fe.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var l=a.pathname.split("/"),_=l[l.length-1];u(_,t.removeDirectoryIndex)&&(l=l.slice(0,l.length-1),a.pathname=l.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(var d=0,f=i(a.searchParams.keys());de.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var i=new o.a,s=t.data;r.forEach((function(t){var n=s.split(t),r=n.shift();i.insert(r),i.insert(t,{link:e.normalize(t)}),s=n.join(t)})),i.insert(s),n.ops=i.ops}return n}}))}},{key:"registerTypeListener",value:function(){var e=this;this.quill.on("text-change",(function(t){var n=t.ops;if(!(!n||n.length<1||n.length>2)){var r=n[n.length-1];r.insert&&"string"==typeof r.insert&&r.insert.match(/\s/)&&e.checkTextForUrl()}}))}},{key:"checkTextForUrl",value:function(){var e=this.quill.getSelection();if(e){var t=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(this.quill.getLeaf(e.index),1)[0];if(t.text&&"a"!==t.parent.domNode.localName){var n=t.text.match(this.options.urlRegularExpression);if(n){var r=this.quill.getIndex(t)+n.index;this.textToUrl(r,n[0])}}}}},{key:"textToUrl",value:function(e,t){var n=(new o.a).retain(e).delete(t.length).insert(t,{link:this.normalize(t)});this.quill.updateContents(n)}},{key:"normalize",value:function(e){if(this.options.normalizeRegularExpression.test(e))try{return s()(e,this.options.normalizeUrlOptions)}catch(e){console.error(e)}return e}}])&&_(t.prototype,n),e}();window.Quill&&window.Quill.register("modules/magicUrl",f)},function(e,t){function n(e,t,s){if(e==t)return e?[[0,e]]:[];(s<0||e.lengtht.length?e:t,l=e.length>t.length?t:e,c=a.indexOf(l);if(-1!=c)return s=[[1,a.substring(0,c)],[0,l],[1,a.substring(c+l.length)]],e.length>t.length&&(s[0][0]=s[2][0]=-1),s;if(1==l.length)return[[-1,e],[1,t]];var u=function(e,t){var n=e.length>t.length?e:t,r=e.length>t.length?t:e;if(n.length<4||2*r.length=e.length?[r,s,a,l,_]:null}var a,l,c,u,_,d=s(n,r,Math.ceil(n.length/4)),f=s(n,r,Math.ceil(n.length/2));return d||f?(a=f?d&&d[4].length>f[4].length?d:f:d,e.length>t.length?(l=a[0],c=a[1],u=a[2],_=a[3]):(u=a[0],_=a[1],l=a[2],c=a[3]),[l,c,u,_,a[4]]):null}(e,t);if(u){var _=u[0],d=u[1],f=u[2],p=u[3],h=u[4],m=n(_,f),b=n(d,p);return m.concat([[0,h]],b)}return function(e,t){for(var n=e.length,o=t.length,i=Math.ceil((n+o)/2),s=i,a=2*i,l=new Array(a),c=new Array(a),u=0;un)p+=2;else if(v>o)f+=2;else if(d&&(w=s+_-y)>=0&&w=E)return r(e,t,k,v)}}for(var x=-b+h;x<=b-m;x+=2){for(var w=s+x,O=(E=x==-b||x!=b&&c[w-1]n)m+=2;else if(O>o)h+=2;else if(!d&&(g=s+_-x)>=0&&g=(E=n-E))return r(e,t,k,v)}}}return[[-1,e],[1,t]]}(e,t)}(e=e.substring(0,e.length-l),t=t.substring(0,t.length-l));return c&&_.unshift([0,c]),u&&_.push([0,u]),function e(t){t.push([0,""]);for(var n,r=0,s=0,a=0,l="",c="";r1?(0!==s&&0!==a&&(0!==(n=o(c,l))&&(r-s-a>0&&0==t[r-s-a-1][0]?t[r-s-a-1][1]+=c.substring(0,n):(t.splice(0,0,[0,c.substring(0,n)]),r++),c=c.substring(n),l=l.substring(n)),0!==(n=i(c,l))&&(t[r][1]=c.substring(c.length-n)+t[r][1],c=c.substring(0,c.length-n),l=l.substring(0,l.length-n))),0===s?t.splice(r-a,s+a,[1,c]):0===a?t.splice(r-s,s+a,[-1,l]):t.splice(r-s-a,s+a,[-1,l],[1,c]),r=r-s-a+(s?1:0)+(a?1:0)+1):0!==r&&0==t[r-1][0]?(t[r-1][1]+=t[r][1],t.splice(r,1)):r++,a=0,s=0,l="",c=""}""===t[t.length-1][1]&&t.pop();var u=!1;for(r=1;r0&&r.splice(o+2,0,[s[0],l]),a(r,o,3)}return e}(_,s)),function(e){for(var t=!1,n=function(e){return e.charCodeAt(0)>=56320&&e.charCodeAt(0)<=57343},r=2;r=55296&&o.charCodeAt(o.length-1)<=56319&&-1===e[r-1][0]&&n(e[r-1][1])&&1===e[r][0]&&n(e[r][1])&&(t=!0,e[r-1][1]=e[r-2][1].slice(-1)+e[r-1][1],e[r][1]=e[r-2][1].slice(-1)+e[r][1],e[r-2][1]=e[r-2][1].slice(0,-1));var o;if(!t)return e;var i=[];for(r=0;r0&&i.push(e[r]);return i}(_)}function r(e,t,r,o){var i=e.substring(0,r),s=t.substring(0,o),a=e.substring(r),l=t.substring(o),c=n(i,s),u=n(a,l);return c.concat(u)}function o(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,r=Math.min(e.length,t.length),o=r,i=0;n=0&&r>=t-1;r--)if(r+10&&!i.call(e,0))for(var m=0;m0)for(var b=0;b=0&&"[object Array]"!==i.call(e)&&"[object Function]"===i.call(e.callee)},l=function(){return s(arguments)}();s.isLegacyArguments=a,e.exports=l?s:a},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(8),s=n(9),a=n(24),l=o(s(),Object);r(l,{getPolyfill:s,implementation:i,shim:a}),e.exports=l},function(e,t,n){"use strict";var r="Function.prototype.bind called on incompatible ",o=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==i.call(t))throw new TypeError(r+t);for(var n,s=o.call(arguments,1),a=function(){if(this instanceof n){var r=t.apply(this,s.concat(o.call(arguments)));return Object(r)===r?r:this}return t.apply(e,s.concat(o.call(arguments)))},l=Math.max(0,t.length-s.length),c=[],u=0;u1&&"boolean"!=typeof t)throw new TypeError('"allowMissing" argument must be a boolean');for(var n=h(e),r=m("%"+(n.length>0?n[0]:"")+"%",t),s=1;s=n.length){var a=i(r,n[s]);if(!t&&!(n[s]in r))throw new o("base intrinsic for "+e+" exists, but the property is not available.");r=a?a.get||a.value:r[n[s]]}else r=r[n[s]];return r}},function(e,t,n){"use strict";(function(t){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=t.Symbol,i=n(23);e.exports=function(){return"function"==typeof o&&"function"==typeof Symbol&&"symbol"===r(o("foo"))&&"symbol"===r(Symbol("bar"))&&i()}}).call(this,n(7))},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"===r(Symbol.iterator))return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var o=Object.getOwnPropertySymbols(e);if(1!==o.length||o[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(e,t,n){"use strict";var r=n(9),o=n(0);e.exports=function(){var e=r();return o(Object,{is:e},{is:function(){return Object.is!==e}}),e}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=n(26),i=RegExp.prototype.exec,s=Object.getOwnPropertyDescriptor,a=Object.prototype.toString,l="function"==typeof Symbol&&"symbol"===r(Symbol.toStringTag);e.exports=function(e){if(!e||"object"!==r(e))return!1;if(!l)return"[object RegExp]"===a.call(e);var t=s(e,"lastIndex");return!(!t||!o(t,"value"))&&function(e){try{var t=e.lastIndex;return e.lastIndex=0,i.call(e),!0}catch(e){return!1}finally{e.lastIndex=t}}(e)}},function(e,t,n){"use strict";var r=n(1);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(10),s=n(11),a=n(28),l=o(i);r(l,{getPolyfill:s,implementation:i,shim:a}),e.exports=l},function(e,t,n){"use strict";var r=n(0).supportsDescriptors,o=n(11),i=Object.getOwnPropertyDescriptor,s=Object.defineProperty,a=TypeError,l=Object.getPrototypeOf,c=/a/;e.exports=function(){if(!r||!l)throw new a("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var e=o(),t=l(c),n=i(t,"flags");return n&&n.get===e||s(t,"flags",{configurable:!0,enumerable:!1,get:e}),e}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=Date.prototype.getDay,i=Object.prototype.toString,s="function"==typeof Symbol&&"symbol"===r(Symbol.toStringTag);e.exports=function(e){return"object"===r(e)&&null!==e&&(s?function(e){try{return o.call(e),!0}catch(e){return!1}}(e):"[object Date]"===i.call(e))}},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=n(3),i=n(12),s={attributes:{compose:function(e,t,n){"object"!==r(e)&&(e={}),"object"!==r(t)&&(t={});var o=i(!0,{},t);for(var s in n||(o=Object.keys(o).reduce((function(e,t){return null!=o[t]&&(e[t]=o[t]),e}),{})),e)void 0!==e[s]&&void 0===t[s]&&(o[s]=e[s]);return Object.keys(o).length>0?o:void 0},diff:function(e,t){"object"!==r(e)&&(e={}),"object"!==r(t)&&(t={});var n=Object.keys(e).concat(Object.keys(t)).reduce((function(n,r){return o(e[r],t[r])||(n[r]=void 0===t[r]?null:t[r]),n}),{});return Object.keys(n).length>0?n:void 0},transform:function(e,t,n){if("object"!==r(e))return t;if("object"===r(t)){if(!n)return t;var o=Object.keys(t).reduce((function(n,r){return void 0===e[r]&&(n[r]=t[r]),n}),{});return Object.keys(o).length>0?o:void 0}}},iterator:function(e){return new a(e)},length:function(e){return"number"==typeof e.delete?e.delete:"number"==typeof e.retain?e.retain:"string"==typeof e.insert?e.insert.length:1}};function a(e){this.ops=e,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(e){e||(e=1/0);var t=this.ops[this.index];if(t){var n=this.offset,r=s.length(t);if(e>=r-n?(e=r-n,this.index+=1,this.offset=0):this.offset+=e,"number"==typeof t.delete)return{delete:e};var o={};return t.attributes&&(o.attributes=t.attributes),"number"==typeof t.retain?o.retain=e:"string"==typeof t.insert?o.insert=t.insert.substr(n,e):o.insert=t.insert,o}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?s.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var e=this.offset,t=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=e,this.index=t,[n].concat(r)}return[]},e.exports=s},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=n(32),i=n(34);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=v,t.resolve=function(e,t){return v(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?v(e,!1,!0).resolveObject(t):t},t.format=function(e){return i.isString(e)&&(e=v(e)),e instanceof s?e.format():s.prototype.format.call(e)},t.Url=s;var a=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),_=["'"].concat(u),d=["%","/","?",";","#"].concat(_),f=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=n(35);function v(e,t,n){if(e&&i.isObject(e)&&e instanceof s)return e;var r=new s;return r.parse(e,t,n),r}s.prototype.parse=function(e,t,n){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+r(e));var s=e.indexOf("?"),l=-1!==s&&s127?L+="x":L+=S[R];if(!L.match(p)){var B=I.slice(0,D),q=I.slice(D+1),U=S.match(h);U&&(B.push(U[1]),q.unshift(U[2])),q.length&&(v="/"+q.join(".")+v),this.hostname=B.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=o.toASCII(this.hostname));var N=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+N,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!m[w])for(D=0,C=_.length;D0)&&n.host.split("@"))&&(n.auth=M.shift(),n.host=n.hostname=M.shift())),n.search=e.search,n.query=e.query,i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var k=w.slice(-1)[0],P=(n.host||e.host||w.length>1)&&("."===k||".."===k)||""===k,A=0,D=w.length;D>=0;D--)"."===(k=w[D])?w.splice(D,1):".."===k?(w.splice(D,1),A++):A&&(w.splice(D,1),A--);if(!E&&!x)for(;A--;A)w.unshift("..");!E||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),P&&"/"!==w.join("/").substr(-1)&&w.push("");var M,T=""===w[0]||w[0]&&"/"===w[0].charAt(0);return O&&(n.hostname=n.host=T?"":w.length?w.shift():"",(M=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=M.shift(),n.host=n.hostname=M.shift())),(E=E||n.host&&w.length)&&!T&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},s.prototype.parseHost=function(){var e=this.host,t=l.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){(function(e,r){var o;function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)} +/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){var a="object"==i(t)&&t&&!t.nodeType&&t,l="object"==i(e)&&e&&!e.nodeType&&e,c="object"==(void 0===r?"undefined":i(r))&&r;c.global!==c&&c.window!==c&&c.self!==c||(s=c);var u,_,d=2147483647,f=/^xn--/,p=/[^\x20-\x7E]/,h=/[\x2E\u3002\uFF0E\uFF61]/g,m={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},b=Math.floor,y=String.fromCharCode;function g(e){throw new RangeError(m[e])}function v(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function E(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+v((e=e.replace(h,".")).split("."),t).join(".")}function x(e){for(var t,n,r=[],o=0,i=e.length;o=55296&&t<=56319&&o65535&&(t+=y((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+y(e)})).join("")}function O(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,n){var r=0;for(e=n?b(e/700):e>>1,e+=b(e/t);e>455;r+=36)e=b(e/35);return b(r+36*e/(e+38))}function P(e){var t,n,r,o,i,s,a,l,c,u,_,f=[],p=e.length,h=0,m=128,y=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r=128&&g("not-basic"),f.push(e.charCodeAt(r));for(o=n>0?n+1:0;o=p&&g("invalid-input"),((l=(_=e.charCodeAt(o++))-48<10?_-22:_-65<26?_-65:_-97<26?_-97:36)>=36||l>b((d-h)/s))&&g("overflow"),h+=l*s,!(l<(c=a<=y?1:a>=y+26?26:a-y));a+=36)s>b(d/(u=36-c))&&g("overflow"),s*=u;y=k(h-i,t=f.length+1,0==i),b(h/t)>d-m&&g("overflow"),m+=b(h/t),h%=t,f.splice(h++,0,m)}return w(f)}function A(e){var t,n,r,o,i,s,a,l,c,u,_,f,p,h,m,v=[];for(f=(e=x(e)).length,t=128,n=0,i=72,s=0;s=t&&_b((d-n)/(p=r+1))&&g("overflow"),n+=(a-t)*p,t=a,s=0;sd&&g("overflow"),_==t){for(l=n,c=36;!(l<(u=c<=i?1:c>=i+26?26:c-i));c+=36)m=l-u,h=36-u,v.push(y(O(u+m%h,0))),l=b(m/h);v.push(y(O(l,0))),i=k(n,p,r==o),n=0,++r}++n,++t}return v.join("")}if(u={version:"1.4.1",ucs2:{decode:x,encode:w},decode:P,encode:A,toASCII:function(e){return E(e,(function(e){return p.test(e)?"xn--"+A(e):e}))},toUnicode:function(e){return E(e,(function(e){return f.test(e)?P(e.slice(4).toLowerCase()):e}))}},"object"==i(n(13))&&n(13))void 0===(o=function(){return u}.call(t,n,t,e))||(e.exports=o);else if(a&&l)if(e.exports==a)l.exports=u;else for(_ in u)u.hasOwnProperty(_)&&(a[_]=u[_]);else s.punycode=u}(this)}).call(this,n(33)(e),n(7))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"===r(e)&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){"use strict";t.decode=t.parse=n(36),t.encode=t.stringify=n(37)},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,i){t=t||"&",n=n||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var u=0;u=0?(_=h.substr(0,m),d=h.substr(m+1)):(_=h,d=""),f=decodeURIComponent(_),p=decodeURIComponent(d),r(s,f)?o(s[f])?s[f].push(p):s[f]=[s[f],p]:s[f]=p}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=function(e){switch(r(e)){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,l){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"===r(e)?s(a(e),(function(r){var a=encodeURIComponent(o(r))+n;return i(e[r])?s(e[r],(function(e){return a+encodeURIComponent(o(e))})).join(t):a+encodeURIComponent(o(e[r]))})).join(t):l?encodeURIComponent(o(l))+n+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r + * @license MIT + */ +var r=n(34),o=n(35),i=n(36);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return W(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,n);case"utf8":case"utf-8":return P(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,s=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=n;ia&&(n=a-l),i=n;i>=0;i--){for(var _=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function P(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+_<=n)switch(_){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(l=(15&c)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,_=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=_}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,o){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(i,s),c=this.slice(r,o),u=e.slice(t,n),_=0;_o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return g(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return w(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function A(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function C(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function S(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function R(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||R(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,i){return i||R(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||C(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);C(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function W(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(33))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=c(e),s=r[0],a=r[1],l=new i(function(e,t,n){return 3*(t+n)/4-n}(0,s,a)),u=0,_=a>0?s-4:s;for(n=0;n<_;n+=4)t=o[e.charCodeAt(n)]<<18|o[e.charCodeAt(n+1)]<<12|o[e.charCodeAt(n+2)]<<6|o[e.charCodeAt(n+3)],l[u++]=t>>16&255,l[u++]=t>>8&255,l[u++]=255&t;2===a&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,l[u++]=255&t);1===a&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,l[u++]=t>>8&255,l[u++]=255&t);return l},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],s=0,a=n-o;sa?a:s+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var o,i,s=[],a=t;a>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,s,a=8*o-r-1,l=(1<>1,u=-7,_=n?o-1:0,d=n?-1:1,f=e[t+_];for(_+=d,i=f&(1<<-u)-1,f>>=-u,u+=a;u>0;i=256*i+e[t+_],_+=d,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+_],_+=d,u-=8);if(0===i)i=1-c;else{if(i===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=c}return(f?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var s,a,l,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,p=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+_>=1?d/l:d*Math.pow(2,1-_))*l>=2&&(s++,l/=2),s+_>=u?(a=0,s=u):s+_>=1?(a=(t*l-1)*Math.pow(2,o),s+=_):(a=t*Math.pow(2,_-1)*Math.pow(2,o),s=0));o>=8;e[n+f]=255&a,f+=p,a/=256,o-=8);for(s=s<0;e[n+f]=255&s,f+=p,s/=256,c-=8);e[n+f-p]|=128*h}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var l,c=[],u=!1,_=-1;function d(){u&&l&&(u=!1,l.length?c=l.concat(c):_=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(l=c,c=[];++_1)for(var n=1;nnew Set,i=e=>e[e.length-1],s=Array.from;class a{constructor(){this._observers=r.c()}on(e,t){r.e(this._observers,e,o).add(t)}once(e,t){this.on(e,(...n)=>{this.off(e,t),t(...n)})}off(e,t){const n=this._observers.get(e);void 0!==n&&(n.delete(t),0===n.size&&this._observers.delete(e))}emit(e,t){return s((this._observers.get(e)||r.c()).values()).forEach(e=>e(...t))}destroy(){this._observers=r.c()}}var l=n(3),c=n(0),u=n(1),_=n(15),d=n.n(_);d.a.performance;const f=d.a.cryptoRandomBuffer,p=(Math.random,()=>new Uint32Array(f(4))[0]);var h=n(5);const m=e=>new Error(e),b=()=>{throw m("Method unimplemented")},y=()=>{throw m("Unexpected case")};var g=n(2);Object.assign;const v=Object.keys,E=e=>v(e).length,x=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),w=(e,t)=>e===t||E(e)===E(t)&&((e,t)=>{for(const n in e)if(!t(e[n],n))return!1;return!0})(e,(e,n)=>(void 0!==e||x(t,n))&&t[n]===e),O=(e,t,n=0)=>{try{for(;n{if(null==e||null==t)return((e,t)=>e===t)(e,t);if(e.constructor!==t.constructor)return!1;if(e===t)return!0;switch(e.constructor){case ArrayBuffer:e=new Uint8Array(e),t=new Uint8Array(t);case Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let n=0;nnew D(e,t),T="undefined"!=typeof document?document:{},I=("undefined"!=typeof DOMParser&&new DOMParser,e=>r.d(e,(e,t)=>`${t}:${e};`).join(""));T.ELEMENT_NODE,T.TEXT_NODE,T.CDATA_SECTION_NODE,T.COMMENT_NODE,T.DOCUMENT_NODE,T.DOCUMENT_TYPE_NODE,T.DOCUMENT_FRAGMENT_NODE,JSON.stringify,JSON.parse;const C=e=>class{constructor(e){this._=e}destroy(){e(this._)}},S=(C(clearTimeout),C(clearInterval),C(e=>"undefined"!=typeof requestAnimationFrame&&cancelAnimationFrame(e)),C(e=>"undefined"!=typeof cancelIdleCallback&&cancelIdleCallback(e)),Date.now),L=A(),R=A(),j=A(),B=A(),q=A(),U=A(),N=A(),W=A(),K=A(),F={[L]:M("font-weight","bold"),[R]:M("font-weight","normal"),[j]:M("color","blue"),[q]:M("color","green"),[B]:M("color","grey"),[U]:M("color","red"),[N]:M("color","purple"),[W]:M("color","orange"),[K]:M("color","black")},H={[L]:"",[R]:"",[j]:"",[q]:"",[B]:"",[U]:"",[N]:"",[W]:"",[K]:""},G=P.c?e=>{const t=[],n=[];let r=0;for(;r0&&(t.push(""),n.push(t.join("")));r{const t=[],n=[],o=r.c();let i=[],s=0;for(;s0||e.length>0?(t.push("%c"+r),n.push(e)):t.push(r)}}}for(s>0&&(i=n,i.unshift(t.join("")));s{console.log(...G(e)),V.forEach(t=>t.print(e))},V=new Set;S();const Q=e=>({[Symbol.iterator](){return this},next:e}),Y=(e,t)=>Q(()=>{const{done:n,value:r}=e.next();return{done:n,value:n?void 0:t(r)}});class J{constructor(e,t){this.clock=e,this.len=t}}class X{constructor(){this.clients=new Map}}const Z=(e,t,n)=>t.clients.forEach((t,r)=>{const o=e.doc.store.clients.get(r);for(let r=0;r{const n=e.clients.get(t.client);return void 0!==n&&null!==((e,t)=>{let n=0,r=e.length-1;for(;n<=r;){const o=Object(l.c)((n+r)/2),i=e[o],s=i.clock;if(s<=t){if(t{e.clients.forEach(e=>{let t,n;for(e.sort((e,t)=>e.clock-t.clock),t=1,n=1;t{Object(r.e)(e.clients,t,()=>[]).push(new J(n,o))},re=()=>new X,oe=e=>{const t=re();return e.clients.forEach((e,n)=>{const r=[];for(let t=0;t0&&t.clients.set(n,r)}),t},ie=(e,t)=>{Object(c.m)(e.restEncoder,t.clients.size),t.clients.forEach((t,n)=>{e.resetDsCurVal(),Object(c.m)(e.restEncoder,n);const r=t.length;Object(c.m)(e.restEncoder,r);for(let n=0;n{const r=new X,o=Object(u.i)(e.restDecoder);for(let i=0;i0){const e=new fe;ie(e,r),n.pendingDeleteReaders.push(new ue(Object(u.e)(e.toUint8Array())))}},ae=p;class le extends a{constructor({gc:e=!0,gcFilter:t=(()=>!0)}={}){super(),this.gc=e,this.gcFilter=t,this.clientID=ae(),this.share=new Map,this.store=new Ve,this._transaction=null,this._transactionCleanups=[]}transact(e,t=null){ut(this,e,t)}get(e,t=gt){const n=Object(r.e)(this.share,e,()=>{const e=new t;return e._integrate(this,null),e}),o=n.constructor;if(t!==gt&&o!==t){if(o===gt){const r=new t;r._map=n._map,n._map.forEach(e=>{for(;null!==e;e=e.left)e.parent=r}),r._start=n._start;for(let e=r._start;null!==e;e=e.right)e.parent=r;return r._length=n._length,this.share.set(e,r),r._integrate(this,null),r}throw new Error(`Type with the name ${e} has already been defined with a different constructor`)}return n}getArray(e=""){return this.get(e,Ct)}getText(e=""){return this.get(e,Vt)}getMap(e=""){return this.get(e,Lt)}getXmlFragment(e=""){return this.get(e,Yt)}toJSON(){const e={};return this.share.forEach((t,n)=>{e[n]=t.toJSON()}),e}destroy(){this.emit("destroyed",[!0]),super.destroy()}on(e,t){super.on(e,t)}off(e,t){super.off(e,t)}}class ce{constructor(e){this.restDecoder=e}resetDsCurVal(){}readDsClock(){return Object(u.i)(this.restDecoder)}readDsLen(){return Object(u.i)(this.restDecoder)}}class ue{constructor(e){this.dsCurrVal=0,this.restDecoder=e}resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=Object(u.i)(this.restDecoder),this.dsCurrVal}readDsLen(){const e=Object(u.i)(this.restDecoder)+1;return this.dsCurrVal+=e,e}}class _e extends ue{constructor(e){super(e),this.keys=[],Object(u.g)(e),this.keyClockDecoder=new u.a(Object(u.j)(e)),this.clientDecoder=new u.d(Object(u.j)(e)),this.leftClockDecoder=new u.a(Object(u.j)(e)),this.rightClockDecoder=new u.a(Object(u.j)(e)),this.infoDecoder=new u.b(Object(u.j)(e),u.g),this.stringDecoder=new u.c(Object(u.j)(e)),this.parentInfoDecoder=new u.b(Object(u.j)(e),u.g),this.typeRefDecoder=new u.d(Object(u.j)(e)),this.lenDecoder=new u.d(Object(u.j)(e))}readLeftID(){return new Se(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new Se(this.clientDecoder.read(),this.rightClockDecoder.read())}readClient(){return this.clientDecoder.read()}readInfo(){return this.infoDecoder.read()}readString(){return this.stringDecoder.read()}readParentInfo(){return 1===this.parentInfoDecoder.read()}readTypeRef(){return this.typeRefDecoder.read()}readLen(){return this.lenDecoder.read()}readAny(){return Object(u.f)(this.restDecoder)}readBuf(){return Object(u.j)(this.restDecoder)}readJSON(){return Object(u.f)(this.restDecoder)}readKey(){const e=this.keyClockDecoder.read();if(e{const r=new Map;n.forEach((e,n)=>{Ye(t,n)>e&&r.set(n,e)}),Qe(t).forEach((e,t)=>{n.has(t)||r.set(t,0)}),Object(c.m)(e.restEncoder,r.size),Array.from(r.entries()).sort((e,t)=>t[0]-e[0]).forEach(([n,r])=>{((e,t,n,r)=>{const o=Xe(t,r);Object(c.m)(e.restEncoder,t.length-o),e.writeClient(n),Object(c.m)(e.restEncoder,r);const i=t[o];i.write(e,r-i.id.clock);for(let n=o+1;n{const o=new Map;var i;((e,t,n)=>{const r=Object(u.i)(e.restDecoder);for(let o=0;o{const n=e.pendingClientsStructRefs;t.forEach((e,t)=>{const r=n.get(t);if(void 0===r)n.set(t,{refs:e,i:0});else{const t=r.i>0?r.refs.slice(r.i):r.refs;for(let n=0;ne.id.clock-t.id.clock)}})})(n,o),((e,t)=>{const n=t.pendingStack,o=t.pendingClientsStructRefs,i=Array.from(o.keys()).sort((e,t)=>e-t);if(0===i.length)return;const s=()=>{let e=o.get(i[i.length-1]);for(;e.refs.length===e.i;){if(i.pop(),!(i.length>0))return t.pendingClientsStructRefs.clear(),null;e=o.get(i[i.length-1])}return e};let a=s();if(null===a&&0===n.length)return;let l=n.length>0?n.pop():a.refs[a.i++];const c=new Map;for(;;){const i=Object(r.e)(c,l.id.client,()=>Ye(t,l.id.client)),u=l.id.clocke.id.clock-t.id.clock),e.i=0;continue}}return void n.push(l)}const _=l.getMissing(e,t);if(null===_)if((0===u||u0)l=n.pop();else if(null!==a&&a.i{e.i===e.refs.length?i.delete(t):(e.refs.splice(0,e.i),e.i=0)}),((e,t)=>{const n=t.pendingDeleteReaders;t.pendingDeleteReaders=[];for(let r=0;rut(t,e=>{ve(r,e,t.store),se(r,e,t.store)},n,!1),xe=(e,t,n)=>((e,t,n,r=_e)=>{const o=Object(u.e)(t);Ee(o,e,n,new r(o))})(e,t,n,ye),we=(e,t,n=new pe)=>(((e,t,n=new Map)=>{ge(e,t.store,n),ie(e,oe(t.store))})(n,e,null==t?new Map:ke(t)),n.toUint8Array()),Oe=e=>{const t=new Map,n=Object(u.i)(e.restDecoder);for(let r=0;rOe(new me(Object(u.e)(e))),Pe=(e,t)=>(Object(c.m)(e.restEncoder,t.size),t.forEach((t,n)=>{Object(c.m)(e.restEncoder,n),Object(c.m)(e.restEncoder,t)}),e),Ae=(e,t=new fe)=>(((e,t)=>{Pe(e,Qe(t.store))})(t,e),t.toUint8Array());class De{constructor(){this.l=[]}}const Me=()=>new De,Te=(e,t)=>e.l.push(t),Ie=(e,t)=>{e.l=e.l.filter(e=>t!==e)},Ce=(e,t,n)=>O(e.l,[t,n]);class Se{constructor(e,t){this.client=e,this.clock=t}}const Le=(e,t)=>e===t||null!==e&&null!==t&&e.client===t.client&&e.clock===t.clock,Re=(e,t)=>new Se(e,t),je=e=>{for(const[t,n]of e.doc.share.entries())if(n===e)return t;throw y()};class Be{constructor(e,t,n){this.type=e,this.tname=t,this.item=n}}const qe=e=>new Be(null==e.type?null:Re(e.type.client,e.type.clock),e.tname||null,null==e.item?null:Re(e.item.client,e.item.clock));class Ue{constructor(e,t){this.type=e,this.index=t}}const Ne=(e,t)=>{let n=null,r=null;return null===e._item?r=je(e):n=Re(e._item.id.client,e._item.id.clock),new Be(n,r,t)},We=(e,t)=>{let n=e._start;for(;null!==n;){if(!n.deleted&&n.countable){if(n.length>t)return Ne(e,Re(n.id.client,n.id.clock+t));t-=n.length}n=n.right}return Ne(e,null)},Ke=(e,t)=>{const n=t.store,r=e.item,o=e.type,i=e.tname;let s=null,a=0;if(null!==r){if(Ye(n,r.client)<=r.clock)return null;const e=vn(n,r),t=e.item;if(!(t instanceof xn))return null;if(s=t.parent,null===s._item||!s._item.deleted){a=t.deleted||!t.countable?0:e.diff;let n=t.left;for(;null!==n;)!n.deleted&&n.countable&&(a+=n.length),n=n.left}}else{if(null!==i)s=t.get(i);else{if(null===o)throw y();{if(Ye(n,o.client)<=o.clock)return null;const{item:e}=vn(n,o);if(!(e instanceof xn&&e.content instanceof gn))return null;s=e.content.type}}a=s._length}return((e,t)=>new Ue(e,t))(s,a)},Fe=(e,t)=>e===t||null!==e&&null!==t&&e.tname===t.tname&&Le(e.item,t.item)&&Le(e.type,t.type);class $e{constructor(e,t){this.ds=e,this.sv=t}}const He=(e,t)=>new $e(e,t),Ge=(He(re(),new Map),(e,t)=>void 0===t?!e.deleted:t.sv.has(e.id.client)&&(t.sv.get(e.id.client)||0)>e.id.clock&&!ee(t.ds,e.id)),ze=(e,t)=>{const n=Object(r.e)(e.meta,ze,o),i=e.doc.store;n.has(t)||(t.sv.forEach((t,n)=>{t{}),n.add(t))};class Ve{constructor(){this.clients=new Map,this.pendingClientsStructRefs=new Map,this.pendingStack=[],this.pendingDeleteReaders=[]}}const Qe=e=>{const t=new Map;return e.clients.forEach((e,n)=>{const r=e[e.length-1];t.set(n,r.id.clock+r.length)}),t},Ye=(e,t)=>{const n=e.clients.get(t);if(void 0===n)return 0;const r=n[n.length-1];return r.id.clock+r.length},Je=(e,t)=>{let n=e.clients.get(t.id.client);if(void 0===n)n=[],e.clients.set(t.id.client,n);else{const e=n[n.length-1];if(e.id.clock+e.length!==t.id.clock)throw y()}n.push(t)},Xe=(e,t)=>{let n=0,r=e.length-1,o=e[r],i=o.id.clock;if(i===t)return r;let s=Object(l.c)(t/(i+o.length-1)*r);for(;n<=r;){if(o=e[s],i=o.id.clock,i<=t){if(t{const n=e.clients.get(t.client);return n[Xe(n,t.clock)]},et=(e,t,n)=>{const r=Xe(t,n),o=t[r];return o.id.clock{const n=e.doc.store.clients.get(t.client);return n[et(e,n,t.clock)]},nt=(e,t,n)=>{const r=t.clients.get(n.client),o=Xe(r,n.clock),i=r[o];return n.clock!==i.id.clock+i.length-1&&i.constructor!==nn&&r.splice(o+1,0,En(e,i,n.clock-i.id.clock+1)),i},rt=(e,t,n,r,o)=>{if(0===r)return;const i=n+r;let s,a=et(e,t,n);do{s=t[a++],i!(0===t.deleteSet.clients.size&&!Object(r.a)(t.afterState,(e,n)=>t.beforeState.get(n)!==e))&&(te(t.deleteSet),((e,t)=>{ge(e,t.doc.store,t.beforeState)})(e,t),ie(e,t.deleteSet),!0),st=(e,t)=>{const n=e[t-1],r=e[t];n.deleted===r.deleted&&n.constructor===r.constructor&&n.mergeWith(r)&&(e.splice(t,1),r instanceof xn&&null!==r.parentSub&&r.parent._map.get(r.parentSub)===r&&r.parent._map.set(r.parentSub,n))},at=(e,t,n)=>{for(const[r,o]of e.clients.entries()){const e=t.clients.get(r);for(let r=o.length-1;r>=0;r--){const i=o[r],s=i.clock+i.len;for(let r=Xe(e,i.clock),o=e[r];r{e.clients.forEach((e,n)=>{const r=t.clients.get(n);for(let t=e.length-1;t>=0;t--){const n=e[t];for(let e=Object(l.g)(r.length-1,1+Xe(r,n.clock+n.len-1)),t=r[e];e>0&&t.id.clock>=n.clock;t=r[--e])st(r,e)}})},ct=(e,t)=>{if(ta.push(()=>{null!==t._item&&t._item.deleted||t._callObserver(n,e)})),a.push(()=>{n.changedParentTypes.forEach((e,t)=>a.push(()=>{null!==t._item&&t._item.deleted||((e=e.filter(e=>null===e.target._item||!e.target._item.deleted)).forEach(e=>{e.currentTarget=t}),Ce(t._dEH,e,n))})),a.push(()=>r.emit("afterTransaction",[n,r]))}),O(a,[])}finally{r.gc&&at(i,o,r.gcFilter),lt(i,o),n.afterState.forEach((e,t)=>{const r=n.beforeState.get(t)||0;if(r!==e){const e=o.clients.get(t),n=Object(l.f)(Xe(e,r),1);for(let t=e.length-1;t>=n;t--)st(e,t)}});for(let e=0;e0&&st(r,i)}if(n.local||n.afterState.get(r.clientID)===n.beforeState.get(r.clientID)||(r.clientID=ae(),z(W,L,"[yjs] ",R,U,"Changed the client-id because another client seems to be using it.")),r.emit("afterTransactionCleanup",[n,r]),r._observers.has("update")){const e=new be;it(e,n)&&r.emit("update",[e.toUint8Array(),n.origin,r])}if(r._observers.has("updateV2")){const e=new pe;it(e,n)&&r.emit("updateV2",[e.toUint8Array(),n.origin,r])}e.length<=t+1?(r._transactionCleanups=[],r.emit("afterAllTransactions",[r,e])):ct(e,t+1)}}},ut=(e,t,n=null,r=!0)=>{const o=e._transactionCleanups;let i=!1;null===e._transaction&&(i=!0,e._transaction=new ot(e,n,r),o.push(e._transaction),1===o.length&&e.emit("beforeAllTransactions",[e]),e.emit("beforeTransaction",[e._transaction,e]));try{t(e._transaction)}finally{i&&o[0]===e._transaction&&ct(o,0)}};class _t{constructor(e,t){this.target=e,this.currentTarget=e,this.transaction=t,this._changes=null}get path(){return dt(this.currentTarget,this.target)}deletes(e){return ee(this.transaction.deleteSet,e.id)}adds(e){return e.id.clock>=(this.transaction.beforeState.get(e.id.client)||0)}get changes(){let e=this._changes;if(null===e){const t=this.target,n=o(),r=o(),s=[],a=new Map;e={added:n,deleted:r,delta:s,keys:a};const l=this.transaction.changed.get(t);if(l.has(null)){let e=null;const o=()=>{e&&s.push(e)};for(let i=t._start;null!==i;i=i.right)i.deleted?this.deletes(i)&&!this.adds(i)&&(null!==e&&void 0!==e.delete||(o(),e={delete:0}),e.delete+=i.length,r.add(i)):this.adds(i)?(null!==e&&void 0!==e.insert||(o(),e={insert:[]}),e.insert=e.insert.concat(i.content.getContent()),n.add(i)):(null!==e&&void 0!==e.retain||(o(),e={retain:0}),e.retain+=i.length);null!==e&&void 0===e.retain&&o()}l.forEach(e=>{if(null!==e){const n=t._map.get(e);let r,o;if(this.adds(n)){let e=n.left;for(;null!==e&&this.adds(e);)e=e.left;if(this.deletes(n)){if(null===e||!this.deletes(e))return;r="delete",o=i(e.content.getContent())}else null!==e&&this.deletes(e)?(r="update",o=i(e.content.getContent())):(r="add",o=void 0)}else{if(!this.deletes(n))return;r="delete",o=i(n.content.getContent())}a.set(e,{action:r,oldValue:o})}}),this._changes=e}return e}}const dt=(e,t)=>{const n=[];for(;null!==t._item&&t!==e;){if(null!==t._item.parentSub)n.unshift(t._item.parentSub);else{let e=0,r=t._item.parent._start;for(;r!==t._item&&null!==r;)r.deleted||e++,r=r.right;n.unshift(e)}t=t._item.parent}return n};let ft=0;class pt{constructor(e,t){e.marker=!0,this.p=e,this.index=t,this.timestamp=ft++}}const ht=(e,t,n)=>{e.p.marker=!1,e.p=t,t.marker=!0,e.index=n,e.timestamp=ft++},mt=(e,t)=>{if(null===e._start||0===t||null===e._searchMarker)return null;const n=0===e._searchMarker.length?null:e._searchMarker.reduce((e,n)=>Object(l.a)(t-e.index){e.timestamp=ft++})(n));null!==r.right&&ot;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);for(;null!==r.left&&r.left.id.client===r.id.client&&r.left.id.clock+r.left.length===r.id.clock;)r=r.left,!r.deleted&&r.countable&&(o-=r.length);return null!==n&&Object(l.a)(n.index-o){if(e.length>=80){const r=e.reduce((e,t)=>e.timestamp{for(let r=e.length-1;r>=0;r--){const o=e[r];if(n>0){let t=o.p;for(t.marker=!1;t&&(t.deleted||!t.countable);)t=t.left,t&&!t.deleted&&t.countable&&(o.index-=t.length);if(null===t||!0===t.marker){e.splice(r,1);continue}o.p=t,t.marker=!0}(t0&&t===o.index)&&(o.index=Object(l.f)(t,o.index+n))}},yt=(e,t,n)=>{const o=e,i=t.changedParentTypes;for(;Object(r.e)(i,e,()=>[]).push(n),null!==e._item;)e=e._item.parent;Ce(o._eH,n,t)};class gt{constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=Me(),this._dEH=Me(),this._searchMarker=null}_integrate(e,t){this.doc=e,this._item=t}_copy(){throw b()}_write(e){}get _first(){let e=this._start;for(;null!==e&&e.deleted;)e=e.right;return e}_callObserver(e,t){!e.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(e){Te(this._eH,e)}observeDeep(e){Te(this._dEH,e)}unobserve(e){Ie(this._eH,e)}unobserveDeep(e){Ie(this._dEH,e)}toJSON(){}}const vt=e=>{const t=[];let n=e._start;for(;null!==n;){if(n.countable&&!n.deleted){const e=n.content.getContent();for(let n=0;n{let n=0,r=e._start;for(;null!==r;){if(r.countable&&!r.deleted){const o=r.content.getContent();for(let r=0;r{const n=[];return Et(e,(r,o)=>{n.push(t(r,o,e))}),n},wt=e=>{let t=e._start,n=null,r=0;return{[Symbol.iterator](){return this},next:()=>{if(null===n){for(;null!==t&&t.deleted;)t=t.right;if(null===t)return{done:!0,value:void 0};n=t.content.getContent(),r=0,t=t.right}const e=n[r++];return n.length<=r&&(n=null),{done:!1,value:e}}}},Ot=(e,t,n,r)=>{let o=n;const i=e.doc,s=i.clientID,a=i.store,l=null===n?t._start:n.right;let c=[];const u=()=>{c.length>0&&(o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new cn(c)),o.integrate(e,0),c=[])};r.forEach(n=>{switch(n.constructor){case Number:case Object:case Boolean:case Array:case String:c.push(n);break;default:switch(u(),n.constructor){case Uint8Array:case ArrayBuffer:o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new rn(new Uint8Array(n))),o.integrate(e,0);break;default:if(!(n instanceof gt))throw new Error("Unexpected content type in insert operation");o=new xn(Re(s,Ye(a,s)),o,o&&o.lastId,l,l&&l.id,t,null,new gn(n)),o.integrate(e,0)}}}),u()},kt=(e,t,n,r)=>{if(0===n)return t._searchMarker&&bt(t._searchMarker,n,r.length),Ot(e,t,null,r);const o=n,i=mt(t,n);let s=t._start;for(null!==i&&(s=i.p,0===(n-=i.index)&&(s=s.prev,n+=s&&s.countable&&!s.deleted?s.length:0));null!==s;s=s.right)if(!s.deleted&&s.countable){if(n<=s.length){n{if(0===r)return;const o=n,i=r,s=mt(t,n);let a=t._start;for(null!==s&&(a=s.p,n-=s.index);null!==a&&n>0;a=a.right)!a.deleted&&a.countable&&(n0&&null!==a;)a.deleted||(r0)throw m("array length exceeded");t._searchMarker&&bt(t._searchMarker,o,-i+r)},At=(e,t,n)=>{const r=t._map.get(n);void 0!==r&&r.delete(e)},Dt=(e,t,n,r)=>{const o=t._map.get(n)||null,i=e.doc,s=i.clientID;let a;if(null==r)a=new cn([r]);else switch(r.constructor){case Number:case Object:case Boolean:case Array:case String:a=new cn([r]);break;case Uint8Array:a=new rn(r);break;default:if(!(r instanceof gt))throw new Error("Unexpected content type");a=new gn(r)}new xn(Re(s,Ye(i.store,s)),o,o&&o.lastId,null,null,t,n,a).integrate(e,0)},Mt=(e,t)=>{const n=e._map.get(t);return void 0===n||n.deleted?void 0:n.content.getContent()[n.length-1]},Tt=e=>{return t=e.entries(),n=e=>!e[1].deleted,Q(()=>{let e;do{e=t.next()}while(!e.done&&!n(e.value));return e});var t,n};class It extends _t{constructor(e,t){super(e,t),this._transaction=t}}class Ct extends gt{constructor(){super(),this._prelimContent=[],this._searchMarker=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new Ct}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}_callObserver(e,t){super._callObserver(e,t),yt(this,e,new It(this,e))}insert(e,t){null!==this.doc?ut(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}push(e){this.insert(this.length,e)}unshift(e){this.insert(0,e)}delete(e,t=1){null!==this.doc?ut(this.doc,n=>{Pt(n,this,e,t)}):this._prelimContent.splice(e,t)}get(e){return((e,t)=>{const n=mt(e,t);let r=e._start;for(null!==n&&(r=n.p,t-=n.index);null!==r;r=r.right)if(!r.deleted&&r.countable){if(te instanceof gt?e.toJSON():e)}map(e){return xt(this,e)}forEach(e){Et(this,e)}[Symbol.iterator](){return wt(this)}_write(e){e.writeTypeRef(dn)}}class St extends _t{constructor(e,t,n){super(e,t),this.keysChanged=n}}class Lt extends gt{constructor(e){super(),this._prelimContent=null,this._prelimContent=void 0===e?new Map:new Map(e)}_integrate(e,t){super._integrate(e,t),this._prelimContent.forEach((e,t)=>{this.set(t,e)}),this._prelimContent=null}_copy(){return new Lt}_callObserver(e,t){yt(this,e,new St(this,e,t))}toJSON(){const e={};return this._map.forEach((t,n)=>{if(!t.deleted){const r=t.content.getContent()[t.length-1];e[n]=r instanceof gt?r.toJSON():r}}),e}get size(){return[...Tt(this._map)].length}keys(){return Y(Tt(this._map),e=>e[0])}values(){return Y(Tt(this._map),e=>e[1].content.getContent()[e[1].length-1])}entries(){return Y(Tt(this._map),e=>[e[0],e[1].content.getContent()[e[1].length-1]])}forEach(e){return this._map.forEach((t,n)=>{t.deleted||e(t.content.getContent()[t.length-1],n,this)}),{}}[Symbol.iterator](){return this.entries()}delete(e){null!==this.doc?ut(this.doc,t=>{At(t,this,e)}):this._prelimContent.delete(e)}set(e,t){return null!==this.doc?ut(this.doc,n=>{Dt(n,this,e,t)}):this._prelimContent.set(e,t),t}get(e){return Mt(this,e)}has(e){return((e,t)=>{const n=e._map.get(t);return void 0!==n&&!n.deleted})(this,e)}_write(e){e.writeTypeRef(fn)}}const Rt=(e,t)=>e===t||"object"==typeof e&&"object"==typeof t&&e&&t&&w(e,t);class jt{constructor(e,t,n,r){this.left=e,this.right=t,this.index=n,this.currentAttributes=r}forward(){switch(null===this.right&&y(),this.right.content.constructor){case sn:case un:this.right.deleted||(this.index+=this.right.length);break;case an:this.right.deleted||Nt(this.currentAttributes,this.right.content)}this.left=this.right,this.right=this.right.right}}const Bt=(e,t,n)=>{for(;null!==t.right&&n>0;){switch(t.right.content.constructor){case sn:case un:t.right.deleted||(n{const r=new Map,o=mt(t,n);if(o){const t=new jt(o.p.left,o.p,o.index,r);return Bt(e,t,n-o.index)}{const o=new jt(null,t._start,0,r);return Bt(e,o,n)}},Ut=(e,t,n,r)=>{for(;null!==n.right&&(!0===n.right.deleted||n.right.content.constructor===an&&Rt(r.get(n.right.content.key),n.right.content.value));)n.right.deleted||r.delete(n.right.content.key),n.forward();const o=e.doc,i=o.clientID;let s=n.left;const a=n.right;r.forEach((n,r)=>{s=new xn(Re(i,Ye(o.store,i)),s,s&&s.lastId,a,a&&a.id,t,null,new an(r,n)),s.integrate(e,0)})},Nt=(e,t)=>{const{key:n,value:r}=t;null===r?e.delete(n):e.set(n,r)},Wt=(e,t)=>{for(;null!==e.right&&(e.right.deleted||e.right.content.constructor===an&&Rt(t[e.right.content.key]||null,e.right.content.value));)e.forward()},Kt=(e,t,n,r)=>{const o=e.doc,i=o.clientID,s=new Map;for(const a in r){const l=r[a],c=n.currentAttributes.get(a)||null;if(!Rt(c,l)){s.set(a,c);const{left:r,right:u}=n;n.right=new xn(Re(i,Ye(o.store,i)),r,r&&r.lastId,u,u&&u.id,t,null,new an(a,l)),n.right.integrate(e,0),n.forward()}}return s},Ft=(e,t,n,r,o)=>{n.currentAttributes.forEach((e,t)=>{void 0===o[t]&&(o[t]=null)});const i=e.doc,s=i.clientID;Wt(n,o);const a=Kt(e,t,n,o),l=r.constructor===String?new un(r):new sn(r);let{left:c,right:u,index:_}=n;t._searchMarker&&bt(t._searchMarker,n.index,l.getLength()),u=new xn(Re(s,Ye(i.store,s)),c,c&&c.lastId,u,u&&u.id,t,null,l),u.integrate(e,0),n.right=u,n.index=_,n.forward(),Ut(e,t,n,a)},$t=(e,t,n,r,o)=>{const i=e.doc,s=i.clientID;Wt(n,o);const a=Kt(e,t,n,o);for(;r>0&&null!==n.right;){if(!n.right.deleted)switch(n.right.content.constructor){case an:{const{key:t,value:r}=n.right.content,i=o[t];void 0!==i&&(Rt(i,r)?a.delete(t):a.set(t,r),n.right.delete(e));break}case sn:case un:r0){let o="";for(;r>0;r--)o+="\n";n.right=new xn(Re(s,Ye(i.store,s)),n.left,n.left&&n.left.lastId,n.right,n.right&&n.right.id,t,null,new un(o)),n.right.integrate(e,0),n.forward()}Ut(e,t,n,a)},Ht=(e,t,n,r,o)=>{for(;n&&n.content.constructor!==un&&n.content.constructor!==sn;)n.deleted||n.content.constructor!==an||Nt(o,n.content),n=n.right;let i=0;for(;t!==n;){if(!t.deleted){const n=t.content;switch(n.constructor){case an:{const{key:s,value:a}=n;(o.get(s)||null)===a&&(r.get(s)||null)!==a||(t.delete(e),i++);break}}}t=t.right}return i},Gt=(e,t,n)=>{const o=n,i=Object(r.b)(t.currentAttributes),s=t.right;for(;n>0&&null!==t.right;){if(!1===t.right.deleted)switch(t.right.content.constructor){case sn:case un:n{const t=this._delta,n=new Map,r=new Map;let o=this.target._start,i=null;const s={};let a="",l=0,c=0;const u=()=>{if(null!==i){let e;switch(i){case"delete":e={delete:c},c=0;break;case"insert":e={insert:a},n.size>0&&(e.attributes={},n.forEach((t,n)=>{null!==t&&(e.attributes[n]=t)})),a="";break;case"retain":if(e={retain:l},Object.keys(s).length>0){e.attributes={};for(const t in s)e.attributes[t]=s[t]}l=0}t.push(e),i=null}};for(;null!==o;){switch(o.content.constructor){case sn:this.adds(o)?this.deletes(o)||(u(),i="insert",a=o.content.embed,u()):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=1):o.deleted||("retain"!==i&&(u(),i="retain"),l+=1);break;case un:this.adds(o)?this.deletes(o)||("insert"!==i&&(u(),i="insert"),a+=o.content.str):this.deletes(o)?("delete"!==i&&(u(),i="delete"),c+=o.length):o.deleted||("retain"!==i&&(u(),i="retain"),l+=o.length);break;case an:{const{key:t,value:a}=o.content;if(this.adds(o)){if(!this.deletes(o)){const l=n.get(t)||null;Rt(l,a)?o.delete(e):("retain"===i&&u(),Rt(a,r.get(t)||null)?delete s[t]:s[t]=a)}}else if(this.deletes(o)){r.set(t,a);const e=n.get(t)||null;Rt(e,a)||("retain"===i&&u(),s[t]=e)}else if(!o.deleted){r.set(t,a);const n=s[t];void 0!==n&&(Rt(n,a)?o.delete(e):("retain"===i&&u(),null===a?s[t]=a:delete s[t]))}o.deleted||("insert"===i&&u(),Nt(n,o.content));break}}o=o.right}for(u();t.length>0;){const e=t[t.length-1];if(void 0===e.retain||void 0!==e.attributes)break;t.pop()}})}return this._delta}}class Vt extends gt{constructor(e){super(),this._pending=void 0!==e?[()=>this.insert(0,e)]:[],this._searchMarker=[]}get length(){return this._length}_integrate(e,t){super._integrate(e,t);try{this._pending.forEach(e=>e())}catch(e){console.error(e)}this._pending=null}_copy(){return new Vt}_callObserver(e,t){super._callObserver(e,t);const n=new zt(this,e),o=e.doc;if(!e.local){let t=!1;for(const[n,r]of e.afterState.entries()){const i=e.beforeState.get(n)||0;if(r!==i&&(rt(e,o.store.clients.get(n),i,r,e=>{e.deleted||e.content.constructor!==an||(t=!0)}),t))break}t||Z(e,e.deleteSet,e=>{e instanceof nn||t||e.parent===this&&e.content.constructor===an&&(t=!0)}),ut(o,e=>{t?(e=>{let t=0;ut(e.doc,n=>{let o=e._start,i=e._start,s=Object(r.c)();const a=Object(r.b)(s);for(;i;){if(!1===i.deleted)switch(i.content.constructor){case an:Nt(a,i.content);break;case sn:case un:t+=Ht(n,o,i,s,a),s=Object(r.b)(a),o=i}i=i.right}})})(this):Z(e,e.deleteSet,t=>{t instanceof nn||t.parent===this&&((e,t)=>{for(;t&&t.right&&(t.right.deleted||t.right.content.constructor!==un&&t.right.content.constructor!==sn);)t=t.right;const n=new Set;for(;t&&(t.deleted||t.content.constructor!==un&&t.content.constructor!==sn);){if(!t.deleted&&t.content.constructor===an){const r=t.content.key;n.has(r)?t.delete(e):n.add(r)}t=t.left}})(e,t)})})}yt(this,e,n)}toString(){let e="",t=this._start;for(;null!==t;)!t.deleted&&t.countable&&t.content.constructor===un&&(e+=t.content.str),t=t.right;return e}toJSON(){return this.toString()}applyDelta(e,{sanitize:t=!0}={}){null!==this.doc?ut(this.doc,n=>{const r=new jt(null,this._start,0,new Map);for(let o=0;o0)&&Ft(n,this,r,s,i.attributes||{})}else void 0!==i.retain?$t(n,this,r,i.retain,i.attributes||{}):void 0!==i.delete&&Gt(n,r,i.delete)}}):this._pending.push(()=>this.applyDelta(e))}toDelta(e,t,n){const r=[],o=new Map,i=this.doc;let s="",a=this._start;function l(){if(s.length>0){const e={};let t=!1;o.forEach((n,r)=>{t=!0,e[r]=n});const n={insert:s};t&&(n.attributes=e),r.push(n),s=""}}return ut(i,i=>{for(e&&ze(i,e),t&&ze(i,t);null!==a;){if(Ge(a,e)||void 0!==t&&Ge(a,t))switch(a.content.constructor){case un:{const r=o.get("ychange");void 0===e||Ge(a,e)?void 0===t||Ge(a,t)?void 0!==r&&(l(),o.delete("ychange")):void 0!==r&&r.user===a.id.client&&"added"===r.state||(l(),o.set("ychange",n?n("added",a.id):{type:"added"})):void 0!==r&&r.user===a.id.client&&"removed"===r.state||(l(),o.set("ychange",n?n("removed",a.id):{type:"removed"})),s+=a.content.str;break}case sn:{l();const e={insert:a.content.embed};if(o.size>0){const t={};e.attributes=t,o.forEach((e,n)=>{t[n]=e})}r.push(e);break}case an:Ge(a,e)&&(l(),Nt(o,a.content))}a=a.right}l()},ze),r}insert(e,t,n){if(t.length<=0)return;const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);n||(n={},o.currentAttributes.forEach((e,t)=>{n[t]=e})),Ft(r,this,o,t,n)}):this._pending.push(()=>this.insert(e,t,n))}insertEmbed(e,t,n={}){if(t.constructor!==Object)throw new Error("Embed must be an Object");const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);Ft(r,this,o,t,n)}):this._pending.push(()=>this.insertEmbed(e,t,n))}delete(e,t){if(0===t)return;const n=this.doc;null!==n?ut(n,n=>{Gt(n,qt(n,this,e),t)}):this._pending.push(()=>this.delete(e,t))}format(e,t,n){if(0===t)return;const r=this.doc;null!==r?ut(r,r=>{const o=qt(r,this,e);null!==o.right&&$t(r,this,o,t,n)}):this._pending.push(()=>this.format(e,t,n))}_write(e){e.writeTypeRef(pn)}}class Qt{constructor(e,t=(()=>!0)){this._filter=t,this._root=e,this._currentNode=e._start,this._firstCall=!0}[Symbol.iterator](){return this}next(){let e=this._currentNode,t=e.content.type;if(null!==e&&(!this._firstCall||e.deleted||!this._filter(t)))do{if(t=e.content.type,e.deleted||t.constructor!==Jt&&t.constructor!==Yt||null===t._start)for(;null!==e;){if(null!==e.right){e=e.right;break}e=e.parent===this._root?null:e.parent._item}else e=t._start}while(null!==e&&(e.deleted||!this._filter(e.content.type)));return this._firstCall=!1,null===e?{value:void 0,done:!0}:(this._currentNode=e,{value:e.content.type,done:!1})}}class Yt extends gt{constructor(){super(),this._prelimContent=[]}_integrate(e,t){super._integrate(e,t),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new Yt}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}createTreeWalker(e){return new Qt(this,e)}querySelector(e){e=e.toUpperCase();const t=new Qt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e).next();return t.done?null:t.value}querySelectorAll(e){return e=e.toUpperCase(),Array.from(new Qt(this,t=>t.nodeName&&t.nodeName.toUpperCase()===e))}_callObserver(e,t){yt(this,e,new Xt(this,t,e))}toString(){return xt(this,e=>e.toString()).join("")}toJSON(){return this.toString()}toDOM(e=document,t={},n){const r=e.createDocumentFragment();return void 0!==n&&n._createAssociation(r,this),Et(this,o=>{r.insertBefore(o.toDOM(e,t,n),null)}),r}insert(e,t){null!==this.doc?ut(this.doc,n=>{kt(n,this,e,t)}):this._prelimContent.splice(e,0,...t)}delete(e,t=1){null!==this.doc?ut(this.doc,n=>{Pt(n,this,e,t)}):this._prelimContent.splice(e,t)}toArray(){return vt(this)}_write(e){e.writeTypeRef(mn)}}class Jt extends Yt{constructor(e="UNDEFINED"){super(),this.nodeName=e,this._prelimAttrs=new Map}_integrate(e,t){super._integrate(e,t),this._prelimAttrs.forEach((e,t)=>{this.setAttribute(t,e)}),this._prelimAttrs=null}_copy(){return new Jt(this.nodeName)}toString(){const e=this.getAttributes(),t=[],n=[];for(const t in e)n.push(t);n.sort();const r=n.length;for(let o=0;o0?" "+t.join(" "):""}>${super.toString()}`}removeAttribute(e){null!==this.doc?ut(this.doc,t=>{At(t,this,e)}):this._prelimAttrs.delete(e)}setAttribute(e,t){null!==this.doc?ut(this.doc,n=>{Dt(n,this,e,t)}):this._prelimAttrs.set(e,t)}getAttribute(e){return Mt(this,e)}getAttributes(e){return(e=>{const t={};return e._map.forEach((e,n)=>{e.deleted||(t[n]=e.content.getContent()[e.length-1])}),t})(this)}toDOM(e=document,t={},n){const r=e.createElement(this.nodeName),o=this.getAttributes();for(const e in o)r.setAttribute(e,o[e]);return Et(this,o=>{r.appendChild(o.toDOM(e,t,n))}),void 0!==n&&n._createAssociation(r,this),r}_write(e){e.writeTypeRef(hn),e.writeKey(this.nodeName)}}class Xt extends _t{constructor(e,t,n){super(e,n),this.childListChanged=!1,this.attributesChanged=new Set,t.forEach(e=>{null===e?this.childListChanged=!0:this.attributesChanged.add(e)})}}class Zt extends Lt{constructor(e){super(),this.hookName=e}_copy(){return new Zt(this.hookName)}toDOM(e=document,t={},n){const r=t[this.hookName];let o;return o=void 0!==r?r.createDom(this):document.createElement(this.hookName),o.setAttribute("data-yjs-hook",this.hookName),void 0!==n&&n._createAssociation(o,this),o}_write(e){e.writeTypeRef(bn),e.writeKey(this.hookName)}}class en extends Vt{_copy(){return new en}toDOM(e=document,t,n){const r=e.createTextNode(this.toString());return void 0!==n&&n._createAssociation(r,this),r}toString(){return this.toDelta().map(e=>{const t=[];for(const n in e.attributes){const r=[];for(const t in e.attributes[n])r.push({key:t,value:e.attributes[n][t]});r.sort((e,t)=>e.keye.nodeName=0;e--)n+=``;return n}).join("")}toJSON(){return this.toString()}_write(e){e.writeTypeRef(yn)}}class tn{constructor(e,t){this.id=e,this.length=t}get deleted(){throw b()}mergeWith(e){return!1}write(e,t,n){throw b()}integrate(e,t){throw b()}}class nn extends tn{get deleted(){return!0}delete(){}mergeWith(e){return this.length+=e.length,!0}integrate(e,t){t>0&&(this.id.clock+=t,this.length-=t),Je(e.doc.store,this)}write(e,t){e.writeInfo(0),e.writeLen(this.length-t)}getMissing(e,t){return null}}class rn{constructor(e){this.content=e}getLength(){return 1}getContent(){return[this.content]}isCountable(){return!0}copy(){return new rn(this.content)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeBuf(this.content)}getRef(){return 3}}class on{constructor(e){this.len=e}getLength(){return this.len}getContent(){return[]}isCountable(){return!1}copy(){return new on(this.len)}splice(e){const t=new on(this.len-e);return this.len=e,t}mergeWith(e){return this.len+=e.len,!0}integrate(e,t){ne(e.deleteSet,t.id.client,t.id.clock,this.len),t.markDeleted()}delete(e){}gc(e){}write(e,t){e.writeLen(this.len-t)}getRef(){return 1}}class sn{constructor(e){this.embed=e}getLength(){return 1}getContent(){return[this.embed]}isCountable(){return!0}copy(){return new sn(this.embed)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){}delete(e){}gc(e){}write(e,t){e.writeJSON(this.embed)}getRef(){return 5}}class an{constructor(e,t){this.key=e,this.value=t}getLength(){return 1}getContent(){return[]}isCountable(){return!1}copy(){return new an(this.key,this.value)}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){t.parent._searchMarker=null}delete(e){}gc(e){}write(e,t){e.writeKey(this.key),e.writeJSON(this.value)}getRef(){return 6}}class ln{constructor(e){this.arr=e}getLength(){return this.arr.length}getContent(){return this.arr}isCountable(){return!0}copy(){return new ln(this.arr)}splice(e){const t=new ln(this.arr.slice(e));return this.arr=this.arr.slice(0,e),t}mergeWith(e){return this.arr=this.arr.concat(e.arr),!0}integrate(e,t){}delete(e){}gc(e){}write(e,t){const n=this.arr.length;e.writeLen(n-t);for(let r=t;rnew Ct,e=>new Lt,e=>new Vt,e=>new Jt(e.readKey()),e=>new Yt,e=>new Zt(e.readKey()),e=>new en],dn=0,fn=1,pn=2,hn=3,mn=4,bn=5,yn=6;class gn{constructor(e){this.type=e}getLength(){return 1}getContent(){return[this.type]}isCountable(){return!0}copy(){return new gn(this.type._copy())}splice(e){throw b()}mergeWith(e){return!1}integrate(e,t){this.type._integrate(e.doc,t)}delete(e){let t=this.type._start;for(;null!==t;)t.deleted?e._mergeStructs.push(t):t.delete(e),t=t.right;this.type._map.forEach(t=>{t.deleted?e._mergeStructs.push(t):t.delete(e)}),e.changed.delete(this.type)}gc(e){let t=this.type._start;for(;null!==t;)t.gc(e,!0),t=t.right;this.type._start=null,this.type._map.forEach(t=>{for(;null!==t;)t.gc(e,!0),t=t.left}),this.type._map=new Map}write(e,t){this.type._write(e)}getRef(){return 7}}const vn=(e,t)=>{let n,r=t,o=0;do{o>0&&(r=Re(r.client,r.clock+o)),n=Ze(e,r),o=r.clock-n.id.clock,r=n.redone}while(null!==r&&n instanceof xn);return{item:n,diff:o}},En=(e,t,n)=>{const{client:r,clock:o}=t.id,i=new xn(Re(r,o+n),t,Re(r,o+n-1),t.right,t.rightOrigin,t.parent,t.parentSub,t.content.splice(n));return t.deleted&&i.markDeleted(),t.keep&&(i.keep=!0),null!==t.redone&&(i.redone=Re(t.redone.client,t.redone.clock+n)),t.right=i,null!==i.right&&(i.right.left=i),e._mergeStructs.push(i),null!==i.parentSub&&null===i.right&&i.parent._map.set(i.parentSub,i),t.length=n,i};class xn extends tn{constructor(e,t,n,r,o,i,s,a){super(e,a.getLength()),this.origin=n,this.left=t,this.right=r,this.rightOrigin=o,this.parent=i,this.parentSub=s,this.redone=null,this.content=a,this.info=this.content.isCountable()?g.b:0}set marker(e){(this.info&g.d)>0!==e&&(this.info^=g.d)}get marker(){return(this.info&g.d)>0}get keep(){return(this.info&g.a)>0}set keep(e){this.keep!==e&&(this.info^=g.a)}get countable(){return(this.info&g.b)>0}get deleted(){return(this.info&g.c)>0}set deleted(e){this.deleted!==e&&(this.info^=g.c)}markDeleted(){this.info|=g.c}getMissing(e,t){if(this.origin&&this.origin.client!==this.id.client&&this.origin.clock>=Ye(t,this.origin.client))return this.origin.client;if(this.rightOrigin&&this.rightOrigin.client!==this.id.client&&this.rightOrigin.clock>=Ye(t,this.rightOrigin.client))return this.rightOrigin.client;if(this.parent&&this.parent.constructor===Se&&this.id.client!==this.parent.client&&this.parent.clock>=Ye(t,this.parent.client))return this.parent.client;if(this.origin&&(this.left=nt(e,t,this.origin),this.origin=this.left.lastId),this.rightOrigin&&(this.right=tt(e,this.rightOrigin),this.rightOrigin=this.right.id),(this.left&&this.left.constructor===nn||this.right&&this.right.constructor===nn)&&(this.parent=null),this.parent){if(this.parent.constructor===Se){const e=Ze(t,this.parent);e.constructor===nn?this.parent=null:this.parent=e.content.type}}else this.left&&this.left.constructor===xn&&(this.parent=this.left.parent,this.parentSub=this.left.parentSub),this.right&&this.right.constructor===xn&&(this.parent=this.right.parent,this.parentSub=this.right.parentSub);return null}integrate(e,t){if(t>0&&(this.id.clock+=t,this.left=nt(e,e.doc.store,Re(this.id.client,this.id.clock-1)),this.origin=this.left.lastId,this.content=this.content.splice(t),this.length-=t),this.parent){if(!this.left&&(!this.right||null!==this.right.left)||this.left&&this.left.right!==this.right){let t,n=this.left;if(null!==n)t=n.right;else if(null!==this.parentSub)for(t=this.parent._map.get(this.parentSub)||null;null!==t&&null!==t.left;)t=t.left;else t=this.parent._start;const r=new Set,o=new Set;for(;null!==t&&t!==this.right;){if(o.add(t),r.add(t),Le(this.origin,t.origin)){if(t.id.client{const i=t._item;(null===i||i.id.clock<(e.beforeState.get(i.id.client)||0)&&!i.deleted)&&Object(r.e)(e.changed,t,o).add(n)})(e,this.parent,this.parentSub),(null!==this.parent._item&&this.parent._item.deleted||null!==this.parentSub&&null!==this.right)&&this.delete(e)}else new nn(this.id,this.length).integrate(e,0)}get next(){let e=this.right;for(;null!==e&&e.deleted;)e=e.right;return e}get prev(){let e=this.left;for(;null!==e&&e.deleted;)e=e.left;return e}get lastId(){return 1===this.length?this.id:Re(this.id.client,this.id.clock+this.length-1)}mergeWith(e){return!!(Le(e.origin,this.lastId)&&this.right===e&&Le(this.rightOrigin,e.rightOrigin)&&this.id.client===e.id.client&&this.id.clock+this.length===e.id.clock&&this.deleted===e.deleted&&null===this.redone&&null===e.redone&&this.content.constructor===e.content.constructor&&this.content.mergeWith(e.content))&&(e.keep&&(this.keep=!0),this.right=e.right,null!==this.right&&(this.right.left=this),this.length+=e.length,!0)}delete(e){if(!this.deleted){const t=this.parent;this.countable&&null===this.parentSub&&(t._length-=this.length),this.markDeleted(),ne(e.deleteSet,this.id.client,this.id.clock,this.length),Object(r.e)(e.changed,t,o).add(this.parentSub),this.content.delete(e)}}gc(e,t){if(!this.deleted)throw y();this.content.gc(e),t?((e,t,n)=>{const r=e.clients.get(t.id.client);r[Xe(r,t.id.clock)]=n})(e,this,new nn(this.id,this.length)):this.content=new on(this.length)}write(e,t){const n=t>0?Re(this.id.client,this.id.clock+t-1):this.origin,r=this.rightOrigin,o=this.parentSub,i=this.content.getRef()&g.i|(null===n?0:g.g)|(null===r?0:g.f)|(null===o?0:g.e);if(e.writeInfo(i),null!==n&&e.writeLeftID(n),null!==r&&e.writeRightID(r),null===n&&null===r){const t=this.parent,n=t._item;if(null===n){const n=je(t);e.writeParentInfo(!0),e.writeString(n)}else e.writeParentInfo(!1),e.writeLeftID(n.id);null!==o&&e.writeString(o)}this.content.write(e,t)}}const wn=(e,t)=>On[t&g.i](e),On=[()=>{throw y()},e=>new on(e.readLen()),e=>{const t=e.readLen(),n=[];for(let r=0;rnew rn(e.readBuf()),e=>new un(e.readString()),e=>new sn(e.readJSON()),e=>new an(e.readString(),e.readJSON()),e=>new gn(_n[e.readTypeRef()](e)),e=>{const t=e.readLen(),n=[];for(let r=0;rt.key===e&&null!==this.onmessage&&this.onmessage({data:h.d(t.newValue||"")}))}postMessage(e){kn.a.setItem(this.room,h.e(h.b(e)))}}:BroadcastChannel,Dn=e=>r.e(Pn,e,()=>{const t=new Set,n=new An(e);return n.onmessage=e=>t.forEach(t=>t(e.data)),{bc:n,subs:t}}),Mn=(e,t)=>{const n=Dn(e);n.bc.postMessage(t),n.subs.forEach(e=>e(t))},Tn=(e,t)=>{c.m(e,0);const n=(e=>Ae(e,new he))(t);c.n(e,n)},In=(e,t,n)=>{c.m(e,1),c.n(e,((e,t)=>we(e,t,new be))(t,n))},Cn=(e,t,n)=>{xe(t,u.j(e),n)},Sn=Cn,Ln=(e,t,n,r)=>{const o=u.i(e);switch(o){case 0:((e,t,n)=>{In(t,n,u.j(e))})(e,t,n);break;case 1:Cn(e,n,r);break;case 2:Sn(e,n,r);break;default:throw new Error("Unknown message type")}return o};class Rn extends a{constructor(e){super(),this.doc=e,this.states=new Map,this.meta=new Map,this._checkInterval=setInterval(()=>{const t=S();null!==this.getLocalState()&&15e3<=t-this.meta.get(e.clientID).lastUpdated&&this.setLocalState(this.getLocalState());const n=[];this.meta.forEach((r,o)=>{o!==e.clientID&&3e4<=t-r.lastUpdated&&this.states.has(o)&&n.push(o)}),n.length>0&&jn(this,n,"timeout")},l.c(3e3)),e.on("destroy",()=>{this.destroy()}),this.setLocalState({})}destroy(){super.destroy(),clearInterval(this._checkInterval)}getLocalState(){return this.states.get(this.doc.clientID)||null}setLocalState(e){const t=this.doc.clientID,n=this.meta.get(t),r=void 0===n?0:n.clock+1,o=this.states.get(t);null===e?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:r,lastUpdated:S()});const i=[],s=[],a=[],l=[];null===e?l.push(t):null==o?null!=e&&i.push(t):(s.push(t),k(o,e)||a.push(t)),(i.length>0||a.length>0||l.length>0)&&this.emit("change",[{added:i,updated:a,removed:l},"local"]),this.emit("update",[{added:i,updated:s,removed:l},"local"])}setLocalStateField(e,t){const n=this.getLocalState();null!==n&&(n[e]=t,this.setLocalState(n))}getStates(){return this.states}}const jn=(e,t,n)=>{const r=[];for(let n=0;n0&&(e.emit("change",[{added:[],updated:[],removed:r},n]),e.emit("update",[{added:[],updated:[],removed:r},n]))},Bn=(e,t,n=e.states)=>{const r=t.length,o=c.f();c.m(o,r);for(let i=0;i{let e=!0;return(t,n)=>{if(e){e=!1;try{t()}finally{e=!0}}else void 0!==n&&n()}},Un=(e,t)=>console.warn(`Permission denied to access ${e.url}.\n${t}`),Nn=(e,t,n)=>{const r=u.e(t),o=c.f();switch(u.i(r)){case 0:{c.m(o,0);const t=Ln(r,o,e.doc,e);n&&1===t&&!e.synced&&(e.synced=!0);break}case 3:c.m(o,1),c.n(o,Bn(e.awareness,Array.from(e.awareness.getStates().keys())));break;case 1:((e,t,n)=>{const r=u.e(t),o=S(),i=[],s=[],a=[],l=[],c=u.i(r);for(let t=0;t0||a.length>0||l.length>0)&&e.emit("change",[{added:i,updated:a,removed:l},n]),(i.length>0||s.length>0||l.length>0)&&e.emit("update",[{added:i,updated:s,removed:l},n])})(e.awareness,u.j(r),e);break;case 2:((e,t,n)=>{switch(u.i(e)){case 0:n(t,u.h(e))}})(r,e.doc,Un);break;default:return console.error("Unable to compute message"),o}return o},Wn=e=>{if(e.shouldConnect&&null===e.ws){const t=new e._WS(e.url);t.binaryType="arraybuffer",e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=n=>{e.wsLastMessageReceived=S();const r=Nn(e,new Uint8Array(n.data),!0);c.g(r)>1&&t.send(c.h(r))},t.onclose=()=>{e.ws=null,e.wsconnecting=!1,e.wsconnected?(e.wsconnected=!1,e.synced=!1,jn(e.awareness,Array.from(e.awareness.getStates().keys()),e),e.emit("status",[{status:"disconnected"}])):e.wsUnsuccessfulReconnects++,setTimeout(Wn,l.g(1200*l.e(e.wsUnsuccessfulReconnects+1),2500),e)},t.onopen=()=>{e.wsLastMessageReceived=S(),e.wsconnecting=!1,e.wsconnected=!0,e.wsUnsuccessfulReconnects=0,e.emit("status",[{status:"connected"}]);const n=c.f();if(c.m(n,0),Tn(n,e.doc),t.send(c.h(n)),null!==e.awareness.getLocalState()){const n=c.f();c.m(n,1),c.n(n,Bn(e.awareness,[e.doc.clientID])),t.send(c.h(n))}}}},Kn=(e,t)=>{e.wsconnected&&e.ws.send(t),e.bcconnected&&e.mux(()=>{Mn(e.url,t)})};class Fn extends a{constructor(e,t,n,{connect:r=!0,awareness:o=new Rn(n),params:i={},WebSocketPolyfill:s=WebSocket,resyncInterval:a=-1}={}){for(super();"/"===e[e.length-1];)e=e.slice(0,e.length-1);const l=(e=>((e,t)=>{const n=[];for(const r in e)n.push(t(e[r],r));return n})(e,(e,t)=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`).join("&"))(i);this.bcChannel=e+"/"+t,this.url=e+"/"+t+(0===l.length?"":"?"+l),this.roomname=t,this.doc=n,this._WS=s,this._localAwarenessState={},this.awareness=o,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.wsUnsuccessfulReconnects=0,this.mux=qn(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=r,this._resyncInterval=0,a>0&&(this._resyncInterval=setInterval(()=>{if(this.ws){this.synced||(alert("\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message.."),console.warn("Client was unsynced anyway"));const e=c.f();c.m(e,0),Tn(e,n),this.ws.send(c.h(e))}},a)),this._bcSubscriber=e=>{this.mux(()=>{const t=Nn(this,new Uint8Array(e),!1);c.g(t)>1&&Mn(this.bcChannel,c.h(t))})},this._updateHandler=(e,t)=>{if(t!==this||null===t){const t=c.f();c.m(t,0),((e,t)=>{c.m(e,2),c.n(e,t)})(t,e),Kn(this,c.h(t))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:n},r)=>{const i=e.concat(t).concat(n),s=c.f();c.m(s,1),c.n(s,Bn(o,i)),Kn(this,c.h(s))},window.addEventListener("beforeunload",()=>{jn(this.awareness,[n.clientID],"window unload")}),o.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval(()=>{this.wsconnected&&3e4{const e=c.f();c.m(e,0),Tn(e,this.doc),Mn(this.bcChannel,c.h(e));const t=c.f();c.m(t,0),In(t,this.doc),Mn(this.bcChannel,c.h(t));const n=c.f();c.m(n,3),Mn(this.bcChannel,c.h(n));const r=c.f();c.m(r,1),c.n(r,Bn(this.awareness,[this.doc.clientID])),Mn(this.bcChannel,c.h(r))})}disconnectBc(){const e=c.f();var t,n;c.m(e,1),c.n(e,Bn(this.awareness,[this.doc.clientID],new Map)),Kn(this,c.h(e)),this.bcconnected&&(t=this.bcChannel,n=this._bcSubscriber,Dn(t).subs.delete(n),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),null!==this.ws&&this.ws.close()}connect(){this.shouldConnect=!0,this.wsconnected||null!==this.ws||(Wn(this),this.connectBc())}}const $n=(e,t,n,r,o)=>{try{if(t&&t.cursor&&n!==r.clientID){const i=t.user||{},s=i.color||"#ffa500",a=i.name||"User: "+n;e.createCursor(n.toString(),a,s);const l=Ke(qe(t.cursor.anchor),r),c=Ke(qe(t.cursor.head),r);l&&c&&l.type===o&&e.moveCursor(n.toString(),{index:l.index,length:c.index-l.index})}else e.removeCursor(n.toString())}catch(e){console.error(e)}};class Hn{constructor(e,t,n){const r=qn(),o=e.doc;this.mux=r,this.type=e,this.doc=o,this.quill=t;const i=t.getModule("cursors")||null;this.quillCursors=i,this._negatedUsedFormats={},this.awareness=n,this._awarenessChange=({added:t,removed:r,updated:s})=>{const a=n.getStates();t.forEach(t=>{$n(i,a.get(t),t,o,e)}),s.forEach(t=>{$n(i,a.get(t),t,o,e)}),r.forEach(e=>{i.removeCursor(e.toString())})},this._typeObserver=e=>{r(()=>{const n=e.delta,r=[];for(let e=0;e{if(a&&a.ops){const t=a.ops;t.forEach(e=>{if(void 0!==e.attributes)for(let t in e.attributes)void 0===this._negatedUsedFormats[t]&&(this._negatedUsedFormats[t]=!1)}),r(()=>{e.applyDelta(t)})}if(n&&i){const r=t.getSelection(),s=n.getLocalState();if(null===r)null!==n.getLocalState()&&n.setLocalStateField("cursor",null);else{const t=We(e,r.index),o=We(e,r.index+r.length);s&&s.cursor&&Fe(t,s.cursor.anchor)&&Fe(o,s.cursor.head)||n.setLocalStateField("cursor",{anchor:t,head:o})}n.getStates().forEach((t,n)=>{$n(i,t,n,o,e)})}},t.on("editor-change",this._quillObserver),r(()=>{t.setContents(e.toDelta())}),null!==i&&n&&(n.getStates().forEach((t,n)=>{$n(i,t,n,o,e)}),n.on("change",this._awarenessChange))}destroy(){this.type.unobserve(this._typeObserver),this.quill.off(this._quillObserver),this.awareness&&this.awareness.off("change",this._awarenessChange)}}var Gn=n(7),zn=n.n(Gn),Vn=n(26),Qn=n.n(Vn);function Yn(e){var t=e.getBoundingClientRect();return{width:t.width,height:t.height,top:t.top,right:t.right,bottom:t.bottom,left:t.left,x:t.left,y:t.top}}function Jn(e){if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Xn(e){var t=Jn(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Zn(e){return e instanceof Jn(e).Element||e instanceof Element}function er(e){return e instanceof Jn(e).HTMLElement||e instanceof HTMLElement}function tr(e){return e?(e.nodeName||"").toLowerCase():null}function nr(e){return((Zn(e)?e.ownerDocument:e.document)||window.document).documentElement}function rr(e){return Yn(nr(e)).left+Xn(e).scrollLeft}function or(e){return Jn(e).getComputedStyle(e)}function ir(e){var t=or(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function sr(e,t,n){void 0===n&&(n=!1);var r,o,i=nr(t),s=Yn(e),a=er(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==tr(t)||ir(i))&&(l=(r=t)!==Jn(r)&&er(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:Xn(r)),er(t)?((c=Yn(t)).x+=t.clientLeft,c.y+=t.clientTop):i&&(c.x=rr(i))),{x:s.left+l.scrollLeft-c.x,y:s.top+l.scrollTop-c.y,width:s.width,height:s.height}}function ar(e){return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}function lr(e){return"html"===tr(e)?e:e.assignedSlot||e.parentNode||e.host||nr(e)}function cr(e,t){void 0===t&&(t=[]);var n=function e(t){return["html","body","#document"].indexOf(tr(t))>=0?t.ownerDocument.body:er(t)&&ir(t)?t:e(lr(t))}(e),r="body"===tr(n),o=Jn(n),i=r?[o].concat(o.visualViewport||[],ir(n)?n:[]):n,s=t.concat(i);return r?s:s.concat(cr(lr(i)))}function ur(e){return["table","td","th"].indexOf(tr(e))>=0}function _r(e){if(!er(e)||"fixed"===or(e).position)return null;var t=e.offsetParent;if(t){var n=nr(t);if("body"===tr(t)&&"static"===or(t).position&&"static"!==or(n).position)return n}return t}function dr(e){for(var t=Jn(e),n=_r(e);n&&ur(n)&&"static"===or(n).position;)n=_r(n);return n&&"body"===tr(n)&&"static"===or(n).position?t:n||function(e){for(var t=lr(e);er(t)&&["html","body"].indexOf(tr(t))<0;){var n=or(t);if("none"!==n.transform||"none"!==n.perspective||n.willChange&&"auto"!==n.willChange)return t;t=t.parentNode}return null}(e)||t}var fr="top",pr="bottom",hr="right",mr="left",br=[fr,pr,hr,mr],yr=br.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),gr=[].concat(br,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),vr=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Er(e){var t=new Map,n=new Set,r=[];return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||function e(o){n.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(r){if(!n.has(r)){var o=t.get(r);o&&e(o)}})),r.push(o)}(e)})),r}var xr={placement:"bottom",modifiers:[],strategy:"absolute"};function wr(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function Mr(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?Pr(o):null,s=o?Ar(o):null,a=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(i){case fr:t={x:a,y:n.y-r.height};break;case pr:t={x:a,y:n.y+n.height};break;case hr:t={x:n.x+n.width,y:l};break;case mr:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=i?Dr(i):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case"start":t[c]=Math.floor(t[c])-Math.floor(n[u]/2-r[u]/2);break;case"end":t[c]=Math.floor(t[c])+Math.ceil(n[u]/2-r[u]/2)}}return t}var Tr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ir(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.offsets,s=e.position,a=e.gpuAcceleration,l=e.adaptive,c=function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:Math.round(t*r)/r||0,y:Math.round(n*r)/r||0}}(i),u=c.x,_=c.y,d=i.hasOwnProperty("x"),f=i.hasOwnProperty("y"),p=mr,h=fr,m=window;if(l){var b=dr(n);b===Jn(n)&&(b=nr(n)),o===fr&&(h=pr,_-=b.clientHeight-r.height,_*=a?1:-1),o===mr&&(p=hr,u-=b.clientWidth-r.width,u*=a?1:-1)}var y,g=Object.assign({position:s},l&&Tr);return a?Object.assign(Object.assign({},g),{},((y={})[h]=f?"0":"",y[p]=d?"0":"",y.transform=(m.devicePixelRatio||1)<2?"translate("+u+"px, "+_+"px)":"translate3d("+u+"px, "+_+"px, 0)",y)):Object.assign(Object.assign({},g),{},((t={})[h]=f?_+"px":"",t[p]=d?u+"px":"",t.transform="",t))}var Cr={left:"right",right:"left",bottom:"top",top:"bottom"};function Sr(e){return e.replace(/left|right|bottom|top/g,(function(e){return Cr[e]}))}var Lr={start:"end",end:"start"};function Rr(e){return e.replace(/start|end/g,(function(e){return Lr[e]}))}function jr(e,t){var n,r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&((n=r)instanceof Jn(n).ShadowRoot||n instanceof ShadowRoot)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function Br(e){return Object.assign(Object.assign({},e),{},{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function qr(e,t){return"viewport"===t?Br(function(e){var t=Jn(e),n=nr(e),r=t.visualViewport,o=n.clientWidth,i=n.clientHeight,s=0,a=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=r.offsetLeft,a=r.offsetTop)),{width:o,height:i,x:s+rr(e),y:a}}(e)):er(t)?function(e){var t=Yn(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):Br(function(e){var t=nr(e),n=Xn(e),r=e.ownerDocument.body,o=Math.max(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),i=Math.max(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-n.scrollLeft+rr(e),a=-n.scrollTop;return"rtl"===or(r||t).direction&&(s+=Math.max(t.clientWidth,r?r.clientWidth:0)-o),{width:o,height:i,x:s,y:a}}(nr(e)))}function Ur(e,t,n){var r="clippingParents"===t?function(e){var t=cr(lr(e)),n=["absolute","fixed"].indexOf(or(e).position)>=0&&er(e)?dr(e):e;return Zn(n)?t.filter((function(e){return Zn(e)&&jr(e,n)&&"body"!==tr(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],s=o.reduce((function(t,n){var r=qr(e,n);return t.top=Math.max(r.top,t.top),t.right=Math.min(r.right,t.right),t.bottom=Math.min(r.bottom,t.bottom),t.left=Math.max(r.left,t.left),t}),qr(e,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Nr(e){return Object.assign(Object.assign({},{top:0,right:0,bottom:0,left:0}),e)}function Wr(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Kr(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,i=n.boundary,s=void 0===i?"clippingParents":i,a=n.rootBoundary,l=void 0===a?"viewport":a,c=n.elementContext,u=void 0===c?"popper":c,_=n.altBoundary,d=void 0!==_&&_,f=n.padding,p=void 0===f?0:f,h=Nr("number"!=typeof p?p:Wr(p,br)),m="popper"===u?"reference":"popper",b=e.elements.reference,y=e.rects.popper,g=e.elements[d?m:u],v=Ur(Zn(g)?g:g.contextElement||nr(e.elements.popper),s,l),E=Yn(b),x=Mr({reference:E,element:y,strategy:"absolute",placement:o}),w=Br(Object.assign(Object.assign({},y),x)),O="popper"===u?w:E,k={top:v.top-O.top+h.top,bottom:O.bottom-v.bottom+h.bottom,left:v.left-O.left+h.left,right:O.right-v.right+h.right},P=e.modifiersData.offset;if("popper"===u&&P){var A=P[o];Object.keys(k).forEach((function(e){var t=[hr,pr].indexOf(e)>=0?1:-1,n=[fr,pr].indexOf(e)>=0?"y":"x";k[e]+=A[n]*t}))}return k}function Fr(e,t,n){return Math.max(e,Math.min(t,n))}function $r(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Hr(e){return[fr,hr,pr,mr].some((function(t){return e[t]>=0}))}var Gr=Or({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,s=r.resize,a=void 0===s||s,l=Jn(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&c.forEach((function(e){e.addEventListener("scroll",n.update,kr)})),a&&l.addEventListener("resize",n.update,kr),function(){i&&c.forEach((function(e){e.removeEventListener("scroll",n.update,kr)})),a&&l.removeEventListener("resize",n.update,kr)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Mr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,s=void 0===i||i,a={placement:Pr(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign(Object.assign({},t.styles.popper),Ir(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign(Object.assign({},t.styles.arrow),Ir(Object.assign(Object.assign({},a),{},{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];er(o)&&tr(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});er(r)&&tr(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,s=gr.reduce((function(e,n){return e[n]=function(e,t,n){var r=Pr(e),o=[mr,fr].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign(Object.assign({},t),{},{placement:e})):n,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[mr,hr].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,i),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=s}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,_=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,p=void 0===f||f,h=n.allowedAutoPlacements,m=t.options.placement,b=Pr(m),y=l||(b===m||!p?[Sr(m)]:function(e){if("auto"===Pr(e))return[];var t=Sr(e);return[Rr(e),t,Rr(t)]}(m)),g=[m].concat(y).reduce((function(e,n){return e.concat("auto"===Pr(n)?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?gr:l,u=Ar(r),_=u?a?yr:yr.filter((function(e){return Ar(e)===u})):br,d=_.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=_);var f=d.reduce((function(t,n){return t[n]=Kr(e,{placement:n,boundary:o,rootBoundary:i,padding:s})[Pr(n)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:n,boundary:u,rootBoundary:_,padding:c,flipVariations:p,allowedAutoPlacements:h}):n)}),[]),v=t.rects.reference,E=t.rects.popper,x=new Map,w=!0,O=g[0],k=0;k=0,T=M?"width":"height",I=Kr(t,{placement:P,boundary:u,rootBoundary:_,altBoundary:d,padding:c}),C=M?D?hr:mr:D?pr:fr;v[T]>E[T]&&(C=Sr(C));var S=Sr(C),L=[];if(i&&L.push(I[A]<=0),a&&L.push(I[C]<=0,I[S]<=0),L.every((function(e){return e}))){O=P,w=!1;break}x.set(P,L)}if(w)for(var R=function(e){var t=g.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return O=t,"break"},j=p?3:1;j>0;j--){if("break"===R(j))break}t.placement!==O&&(t.modifiersData[r]._skip=!0,t.placement=O,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,_=n.padding,d=n.tether,f=void 0===d||d,p=n.tetherOffset,h=void 0===p?0:p,m=Kr(t,{boundary:l,rootBoundary:c,padding:_,altBoundary:u}),b=Pr(t.placement),y=Ar(t.placement),g=!y,v=Dr(b),E="x"===v?"y":"x",x=t.modifiersData.popperOffsets,w=t.rects.reference,O=t.rects.popper,k="function"==typeof h?h(Object.assign(Object.assign({},t.rects),{},{placement:t.placement})):h,P={x:0,y:0};if(x){if(i){var A="y"===v?fr:mr,D="y"===v?pr:hr,M="y"===v?"height":"width",T=x[v],I=x[v]+m[A],C=x[v]-m[D],S=f?-O[M]/2:0,L="start"===y?w[M]:O[M],R="start"===y?-O[M]:-w[M],j=t.elements.arrow,B=f&&j?ar(j):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=q[A],N=q[D],W=Fr(0,w[M],B[M]),K=g?w[M]/2-S-W-U-k:L-W-U-k,F=g?-w[M]/2+S+W+N+k:R+W+N+k,$=t.elements.arrow&&dr(t.elements.arrow),H=$?"y"===v?$.clientTop||0:$.clientLeft||0:0,G=t.modifiersData.offset?t.modifiersData.offset[t.placement][v]:0,z=x[v]+K-G-H,V=x[v]+F-G,Q=Fr(f?Math.min(I,z):I,T,f?Math.max(C,V):C);x[v]=Q,P[v]=Q-T}if(a){var Y="x"===v?fr:mr,J="x"===v?pr:hr,X=x[E],Z=Fr(X+m[Y],X,X-m[J]);x[E]=Z,P[E]=Z-X}t.modifiersData[r]=P}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=n.elements.arrow,i=n.modifiersData.popperOffsets,s=Pr(n.placement),a=Dr(s),l=[mr,hr].indexOf(s)>=0?"height":"width";if(o&&i){var c=n.modifiersData[r+"#persistent"].padding,u=ar(o),_="y"===a?fr:mr,d="y"===a?pr:hr,f=n.rects.reference[l]+n.rects.reference[a]-i[a]-n.rects.popper[l],p=i[a]-n.rects.reference[a],h=dr(o),m=h?"y"===a?h.clientHeight||0:h.clientWidth||0:0,b=f/2-p/2,y=c[_],g=m-u[l]-c[d],v=m/2-u[l]/2+b,E=Fr(y,v,g),x=a;n.modifiersData[r]=((t={})[x]=E,t.centerOffset=E-v,t)}},effect:function(e){var t=e.state,n=e.options,r=e.name,o=n.element,i=void 0===o?"[data-popper-arrow]":o,s=n.padding,a=void 0===s?0:s;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&jr(t.elements.popper,i)&&(t.elements.arrow=i,t.modifiersData[r+"#persistent"]={padding:Nr("number"!=typeof a?a:Wr(a,br))})},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Kr(t,{elementContext:"reference"}),a=Kr(t,{altBoundary:!0}),l=$r(s,r),c=$r(a,o,i),u=Hr(l),_=Hr(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:_},t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-reference-hidden":u,"data-popper-escaped":_})}}]}),zr={passive:!0,capture:!0};function Vr(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function Qr(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function Yr(e,t){return"function"==typeof e?e.apply(void 0,t):e}function Jr(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function Xr(e){return[].concat(e)}function Zr(e,t){-1===e.indexOf(t)&&e.push(t)}function eo(e){return e.split("-")[0]}function to(e){return[].slice.call(e)}function no(){return document.createElement("div")}function ro(e){return["Element","Fragment"].some((function(t){return Qr(e,t)}))}function oo(e){return Qr(e,"MouseEvent")}function io(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function so(e){return ro(e)?[e]:function(e){return Qr(e,"NodeList")}(e)?to(e):Array.isArray(e)?e:to(document.querySelectorAll(e))}function ao(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function lo(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function co(e){var t=Xr(e)[0];return t&&t.ownerDocument||document}function uo(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}var _o={isTouch:!1},fo=0;function po(){_o.isTouch||(_o.isTouch=!0,window.performance&&document.addEventListener("mousemove",ho))}function ho(){var e=performance.now();e-fo<20&&(_o.isTouch=!1,document.removeEventListener("mousemove",ho)),fo=e}function mo(){var e=document.activeElement;if(io(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var bo="undefined"!=typeof window&&"undefined"!=typeof document?navigator.userAgent:"",yo=/MSIE |Trident\//.test(bo);var go={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},vo=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},go,{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Eo=Object.keys(vo);function xo(e){var t=(e.plugins||[]).reduce((function(t,n){var r=n.name,o=n.defaultValue;return r&&(t[r]=void 0!==e[r]?e[r]:o),t}),{});return Object.assign({},e,{},t)}function wo(e,t){var n=Object.assign({},t,{content:Yr(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(xo(Object.assign({},vo,{plugins:t}))):Eo).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},vo.aria,{},n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Oo(e,t){e.innerHTML=t}function ko(e){var t=no();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",ro(e)?t.appendChild(e):Oo(t,e)),t}function Po(e,t){ro(t.content)?(Oo(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Oo(e,t.content):e.textContent=t.content)}function Ao(e){var t=e.firstElementChild,n=to(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function Do(e){var t=no(),n=no();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=no();function o(n,r){var o=Ao(t),i=o.box,s=o.content,a=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||Po(s,e.props),r.arrow?a?n.arrow!==r.arrow&&(i.removeChild(a),i.appendChild(ko(r.arrow))):i.appendChild(ko(r.arrow)):a&&i.removeChild(a)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),Po(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}Do.$$tippy=!0;var Mo=1,To=[],Io=[];function Co(e,t){var n,r,o,i,s,a,l,c,u,_=wo(e,Object.assign({},vo,{},xo((n=t,Object.keys(n).reduce((function(e,t){return void 0!==n[t]&&(e[t]=n[t]),e}),{}))))),d=!1,f=!1,p=!1,h=!1,m=[],b=Jr(V,_.interactiveDebounce),y=Mo++,g=(u=_.plugins).filter((function(e,t){return u.indexOf(e)===t})),v={id:y,reference:e,popper:no(),popperInstance:null,props:_,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:g,clearDelayTimeouts:function(){clearTimeout(r),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;L("onBeforeUpdate",[v,t]),G();var n=v.props,r=wo(e,Object.assign({},v.props,{},t,{ignoreAttributes:!0}));v.props=r,H(),n.interactiveDebounce!==r.interactiveDebounce&&(B(),b=Jr(V,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?Xr(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");j(),S(),w&&w(n,r);v.popperInstance&&(X(),ee().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));L("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=_o.isTouch&&!v.props.touch,o=Vr(v.props.duration,0,vo.duration);if(e||t||n||r)return;if(M().hasAttribute("disabled"))return;if(L("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,D()&&(x.style.visibility="visible");S(),W(),v.state.isMounted||(x.style.transition="none");if(D()){var i=I(),s=i.box,a=i.content;ao([s,a],0)}l=function(){if(v.state.isVisible&&!h){if(h=!0,x.offsetHeight,x.style.transition=v.props.moveTransition,D()&&v.props.animation){var e=I(),t=e.box,n=e.content;ao([t,n],o),lo([t,n],"visible")}R(),j(),Zr(Io,v),v.state.isMounted=!0,L("onMount",[v]),v.props.animation&&D()&&function(e,t){F(e,t)}(o,(function(){v.state.isShown=!0,L("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=M();e=v.props.interactive&&t===vo.appendTo||"parent"===t?n.parentNode:Yr(t,[n]);e.contains(x)||e.appendChild(x);X(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,r=Vr(v.props.duration,1,vo.duration);if(e||t||n)return;if(L("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,h=!1,d=!1,D()&&(x.style.visibility="hidden");if(B(),K(),S(),D()){var o=I(),i=o.box,s=o.content;v.props.animation&&(ao([i,s],r),lo([i,s],"hidden"))}R(),j(),v.props.animation?D()&&function(e,t){F(e,(function(){!v.state.isVisible&&x.parentNode&&x.parentNode.contains(x)&&t()}))}(r,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;T().addEventListener("mousemove",b),Zr(To,b),b(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;Z(),ee().forEach((function(e){e._tippy.unmount()})),x.parentNode&&x.parentNode.removeChild(x);Io=Io.filter((function(e){return e!==v})),v.state.isMounted=!1,L("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),G(),delete e._tippy,v.state.isDestroyed=!0,L("onDestroy",[v])}};if(!_.render)return v;var E=_.render(v),x=E.popper,w=E.onUpdate;x.setAttribute("data-tippy-root",""),x.id="tippy-"+v.id,v.popper=x,e._tippy=v,x._tippy=v;var O=g.map((function(e){return e.fn(v)})),k=e.hasAttribute("aria-expanded");return H(),j(),S(),L("onCreate",[v]),_.showOnCreate&&te(),x.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),x.addEventListener("mouseleave",(function(e){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&(T().addEventListener("mousemove",b),b(e))})),v;function P(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function A(){return"hold"===P()[0]}function D(){var e;return!!(null==(e=v.props.render)?void 0:e.$$tippy)}function M(){return c||e}function T(){var e=M().parentNode;return e?co(e):document}function I(){return Ao(x)}function C(e){return v.state.isMounted&&!v.state.isVisible||_o.isTouch||s&&"focus"===s.type?0:Vr(v.props.delay,e?0:1,vo.delay)}function S(){x.style.pointerEvents=v.props.interactive&&v.state.isVisible?"":"none",x.style.zIndex=""+v.props.zIndex}function L(e,t,n){var r;(void 0===n&&(n=!0),O.forEach((function(n){n[e]&&n[e].apply(void 0,t)})),n)&&(r=v.props)[e].apply(r,t)}function R(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,r=x.id;Xr(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+r:r);else{var o=t&&t.replace(r,"").trim();o?e.setAttribute(n,o):e.removeAttribute(n)}}))}}function j(){!k&&v.props.aria.expanded&&Xr(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===M()?"true":"false"):e.removeAttribute("aria-expanded")}))}function B(){T().removeEventListener("mousemove",b),To=To.filter((function(e){return e!==b}))}function q(e){if(!(_o.isTouch&&(p||"mousedown"===e.type)||v.props.interactive&&x.contains(e.target))){if(M().contains(e.target)){if(_o.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else L("onClickOutside",[v,e]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||K())}}function U(){p=!0}function N(){p=!1}function W(){var e=T();e.addEventListener("mousedown",q,!0),e.addEventListener("touchend",q,zr),e.addEventListener("touchstart",N,zr),e.addEventListener("touchmove",U,zr)}function K(){var e=T();e.removeEventListener("mousedown",q,!0),e.removeEventListener("touchend",q,zr),e.removeEventListener("touchstart",N,zr),e.removeEventListener("touchmove",U,zr)}function F(e,t){var n=I().box;function r(e){e.target===n&&(uo(n,"remove",r),t())}if(0===e)return t();uo(n,"remove",a),uo(n,"add",r),a=r}function $(t,n,r){void 0===r&&(r=!1),Xr(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),m.push({node:e,eventType:t,handler:n,options:r})}))}function H(){var e;A()&&($("touchstart",z,{passive:!0}),$("touchend",Q,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch($(e,z),e){case"mouseenter":$("mouseleave",Q);break;case"focus":$(yo?"focusout":"blur",Y);break;case"focusin":$("focusout",Y)}}))}function G(){m.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),m=[]}function z(e){var t,n=!1;if(v.state.isEnabled&&!J(e)&&!f){var r="focus"===(null==(t=s)?void 0:t.type);s=e,c=e.currentTarget,j(),!v.state.isVisible&&oo(e)&&To.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||d)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:te(e),"click"===e.type&&(d=!n),n&&!r&&ne(e)}}function V(e){var t=e.target,n=M().contains(t)||x.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,s=eo(o.placement),a=o.modifiersData.offset;if(!a)return!0;var l="bottom"===s?a.top.y:0,c="top"===s?a.bottom.y:0,u="right"===s?a.left.x:0,_="left"===s?a.right.x:0,d=t.top-r+l>i,f=r-t.bottom-c>i,p=t.left-n+u>i,h=n-t.right-_>i;return d||f||p||h}))}(ee().concat(x).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:_}:null})).filter(Boolean),e)&&(B(),ne(e))}function Q(e){J(e)||v.props.trigger.indexOf("click")>=0&&d||(v.props.interactive?v.hideWithInteractivity(e):ne(e))}function Y(e){v.props.trigger.indexOf("focusin")<0&&e.target!==M()||v.props.interactive&&e.relatedTarget&&x.contains(e.relatedTarget)||ne(e)}function J(e){return!!_o.isTouch&&A()!==e.type.indexOf("touch")>=0}function X(){Z();var t=v.props,n=t.popperOptions,r=t.placement,o=t.offset,i=t.getReferenceClientRect,s=t.moveTransition,a=D()?Ao(x).arrow:null,c=i?{getBoundingClientRect:i,contextElement:i.contextElement||M()}:e,u=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(D()){var n=I().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];D()&&a&&u.push({name:"arrow",options:{element:a,padding:3}}),u.push.apply(u,(null==n?void 0:n.modifiers)||[]),v.popperInstance=Gr(c,x,Object.assign({},n,{placement:r,onFirstUpdate:l,modifiers:u}))}function Z(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function ee(){return to(x.querySelectorAll("[data-tippy-root]"))}function te(e){v.clearDelayTimeouts(),e&&L("onTrigger",[v,e]),W();var t=C(!0),n=P(),o=n[0],i=n[1];_o.isTouch&&"hold"===o&&i&&(t=i),t?r=setTimeout((function(){v.show()}),t):v.show()}function ne(e){if(v.clearDelayTimeouts(),L("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&d)){var t=C(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else K()}}function So(e,t){void 0===t&&(t={});var n=vo.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",po,zr),window.addEventListener("blur",mo);var r=Object.assign({},t,{plugins:n}),o=so(e).reduce((function(e,t){var n=t&&Co(t,r);return n&&e.push(n),e}),[]);return ro(e)?o[0]:o}So.defaultProps=vo,So.setDefaultProps=function(e){Object.keys(e).forEach((function(t){vo[t]=e[t]}))},So.currentInput=_o;So.setDefaultProps({render:Do});var Lo=So,Ro=function(){function e(){}return e.prototype.getAllStyles=function(e){return window.getComputedStyle(e)},e.prototype.getStyle=function(e,t){return this.getAllStyles(e)[t]},e.prototype.isStaticPositioned=function(e){return"static"===(this.getStyle(e,"position")||"static")},e.prototype.offsetParent=function(e){for(var t=e.offsetParent||document.documentElement;t&&t!==document.documentElement&&this.isStaticPositioned(t);)t=t.offsetParent;return t||document.documentElement},e.prototype.position=function(e,t){var n;void 0===t&&(t=!0);var r={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(e,"position"))n={top:(n=e.getBoundingClientRect()).top,bottom:n.bottom,left:n.left,right:n.right,height:n.height,width:n.width};else{var o=this.offsetParent(e);n=this.offset(e,!1),o!==document.documentElement&&(r=this.offset(o,!1)),r.top+=o.clientTop,r.left+=o.clientLeft}return n.top-=r.top,n.bottom-=r.top,n.left-=r.left,n.right-=r.left,t&&(n.top=Math.round(n.top),n.bottom=Math.round(n.bottom),n.left=Math.round(n.left),n.right=Math.round(n.right)),n},e.prototype.offset=function(e,t){void 0===t&&(t=!0);var n=e.getBoundingClientRect(),r=window.pageYOffset-document.documentElement.clientTop,o=window.pageXOffset-document.documentElement.clientLeft,i={height:n.height||e.offsetHeight,width:n.width||e.offsetWidth,top:n.top+r,bottom:n.bottom+r,left:n.left+o,right:n.right+o};return t&&(i.height=Math.round(i.height),i.width=Math.round(i.width),i.top=Math.round(i.top),i.bottom=Math.round(i.bottom),i.left=Math.round(i.left),i.right=Math.round(i.right)),i},e.prototype.positionElements=function(e,t,n,r){var o=n.split("-"),i=o[0],s=void 0===i?"top":i,a=o[1],l=void 0===a?"center":a,c=r?this.offset(e,!1):this.position(e,!1),u=this.getAllStyles(t),_=parseFloat(u.marginTop),d=parseFloat(u.marginBottom),f=parseFloat(u.marginLeft),p=parseFloat(u.marginRight),h=0,m=0;switch(s){case"top":h=c.top-(t.offsetHeight+_+d);break;case"bottom":h=c.top+c.height;break;case"left":m=c.left-(t.offsetWidth+f+p);break;case"right":m=c.left+c.width}switch(l){case"top":h=c.top;break;case"bottom":h=c.top+c.height-t.offsetHeight;break;case"left":m=c.left;break;case"right":m=c.left+c.width-t.offsetWidth;break;case"center":"top"===s||"bottom"===s?m=c.left+c.width/2-t.offsetWidth/2:h=c.top+c.height/2-t.offsetHeight/2}t.style.transform="translate("+Math.round(m)+"px, "+Math.round(h)+"px)";var b=t.getBoundingClientRect(),y=document.documentElement,g=window.innerHeight||y.clientHeight,v=window.innerWidth||y.clientWidth;return b.left>=0&&b.top>=0&&b.right<=v&&b.bottom<=g},e}(),jo=/\s+/,Bo=new Ro;var qo,Uo,No=function(){return(No=Object.assign||function(e){for(var t,n=1,r=arguments.length;n',this.DEFAULTS={maxRowCount:-1},this.menuItems=[{title:"Sağa sütun ekle",icon:'',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.options.maxRowCount>0&&!(n.getColCount()',handler:function(){n.table.insertRowAbove()}},{title:"Yukarı satır ekle",icon:'',handler:function(){n.table.insertRowBelow()}},{title:"Sütunu sil",icon:'',handler:function(){n.table.deleteColumn()}},{title:"Satırı sil",icon:'',handler:function(){n.table.deleteRow()}},{title:"Tabloyu sil",icon:'',handler:function(){n.table.deleteTable()}}],this.editorChangeHandler=function(e,t,r,o){e===qo.SELECTION_CHANGE&&n.detectButton(t)},this.contextMenuHandler=function(e){if(!n.isTable())return!0;e.preventDefault(),n.showMenu()},this.toggleClickHandler=function(e){n.toggleMenu(),e.preventDefault(),e.stopPropagation()},this.docClickHandler=function(){return n.hideMenu},this.quill=e,this.options=No(No({},this.DEFAULTS),t),this.table=e.getModule("table"),this.table?(this.toggle=e.addContainer("ql-table-toggle"),this.toggle.classList.add("ql-table-toggle_hidden"),this.toggle.innerHTML=this.TOGGLE_TEMPLATE,this.toggle.addEventListener("click",this.toggleClickHandler),this.quill.on(qo.EDITOR_CHANGE,this.editorChangeHandler),this.quill.root.addEventListener("contextmenu",this.contextMenuHandler)):console.error('"table" module not found')}return e.prototype.isTable=function(e){return e||(e=this.quill.getSelection()),!!e&&!(!this.quill.getFormat(e.index).table||e.length)},e.prototype.getColCount=function(e){if(void 0===e&&(e=null),e||(e=this.quill.getSelection()),!e)return 0;var t=this.table.getTable(e)[0];return t?t.rows().reduce((function(e,t){return Math.max(t.children.length,e)}),0):0},e.prototype.showMenu=function(){var e=this;this.hideMenu(),this.menu=this.quill.addContainer("ql-table-menu"),this.menuItems.forEach((function(t){e.menu.appendChild(e.createMenuItem(t))})),function(e,t,n,r,o){var i=Array.isArray(n)?n:n.split(jo),s=["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right","left-top","left-bottom","right-top","right-bottom"],a=t.classList,l=function(e){var t=e.split("-"),n=t[0],r=t[1],i=[];return o&&(i.push(o+"-"+n),r&&i.push(o+"-"+n+"-"+r),i.forEach((function(e){a.add(e)}))),i};o&&s.forEach((function(e){a.remove(o+"-"+e)}));var c=i.findIndex((function(e){return"auto"===e}));c>=0&&s.forEach((function(e){null==i.find((function(t){return-1!==t.search("^"+e)}))&&i.splice(c++,1,e)}));var u,_=t.style;_.position="absolute",_.top="0",_.left="0",_["will-change"]="transform";for(var d=!1,f=0,p=i;f{this.quill.getSelection()||setTimeout(()=>this.insert(e),0)})}insert(e){const t=(this.quill.getSelection()||{}).index||this.quill.getLength();this.quill.insertEmbed(t,"image",e,"user")}readFiles(e,t){[].forEach.call(e,e=>{if(!e.type.match(/^image\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\.microsoft\.icon)/i))return;const n=new FileReader;n.onload=e=>{t(e.target.result)};const r=e.getAsFile?e.getAsFile():e;r instanceof Blob&&n.readAsDataURL(r)})}}),zn.a.register("modules/magicUrl",$o.a),zn.a.register("modules/cursors",Qn.a),zn.a.register({"modules/tableUI":Ko},!0),window.addEventListener("load",()=>{const e=new le;var t=new Fn("ws://localhost:9000",documentUUID,e);const n=e.getText(documentUUID);let r=new zn.a("#full-container .editor",{bounds:"#full-container .editor",modules:{cursors:!0,syntax:!0,toolbar:{container:".toolbar"},table:!0,tableUI:!0,magicUrl:!0,imageDrop:!0,blotFormatter:{}},theme:"snow"});editorInstance=r,providerInstance=t;new Hn(n,r,t.awareness);t.awareness.setLocalStateField("user",{name:divergent_name,color:divergent_color}),Lo(".ql-bold",{content:"Kalın"}),Lo(".ql-italic",{content:"Eğik"}),Lo(".ql-underline",{content:"Altı Çizili"}),Lo(".ql-strike",{content:"Üstü Çizili"}),Lo(".ql-blockquote",{content:"Alıntı"}),Lo(".ql-code-block",{content:"Kod Bloğu"}),Lo('[value="ordered"]',{content:"Sıralı Liste"}),Lo('[value="bullet"]',{content:"Liste"}),Lo('[value="+1"]',{content:"İçe Adım"}),Lo('[value="-1"]',{content:"Dışa Adım"}),Lo(".ql-link",{content:"Link"}),Lo(".ql-image",{content:"Resim"}),Lo(".ql-clean",{content:"Biçimlendirmeyi Temizle"});let o=()=>{$.ajax(saveRoute,{type:"POST",data:{_token:csrfToken,data:$(".ql-editor").html()},success:function(e,t,n){},error:function(e,t,n){clearInterval(i),console.log("Error"+n)}})},i=setInterval(()=>{o()},9999999),s=!1;$(".editor").keypress((function(){s||(clearInterval(i),i=setInterval(()=>{o()},8e3),s=!0)}))})}]); +//# sourceMappingURL=quill.bundle.js.map \ No newline at end of file diff --git a/server/public/editor/quill.bundle.js.map b/server/public/editor/quill.bundle.js.map new file mode 100644 index 0000000..43921c0 --- /dev/null +++ b/server/public/editor/quill.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/lib0/number.js","webpack:///./node_modules/lib0/encoding.js","webpack:///./node_modules/lib0/decoding.js","webpack:///./node_modules/lib0/binary.js","webpack:///./node_modules/lib0/math.js","webpack:///./node_modules/lib0/map.js","webpack:///./node_modules/lib0/buffer.js","webpack:///./node_modules/quill-blot-formatter/dist/BlotFormatter.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/lib0/environment.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/Action.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/BlotSpec.js","webpack:///./node_modules/lib0/string.js","webpack:///./node_modules/lib0/storage.js","webpack:///./node_modules/lib0/conditions.js","webpack:///./node_modules/isomorphic.js/iso-browser.js","webpack:///./node_modules/quill-blot-formatter/dist/Options.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/AlignAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultAligner.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/Toolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/align/DefaultToolbar.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/ResizeAction.js","webpack:///./node_modules/quill-blot-formatter/dist/actions/DeleteAction.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/ImageSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/IframeVideoSpec.js","webpack:///./node_modules/quill-blot-formatter/dist/specs/UnclickableBlotSpec.js","webpack:///./node_modules/quill-cursors/dist/quill-cursors.js","webpack:///./node_modules/quill-magic-url/dist/index.js","webpack:///./node_modules/quill-blot-formatter/dist/index.js","webpack:///./node_modules/deepmerge/dist/es.js","webpack:///./node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lib0/set.js","webpack:///./node_modules/lib0/array.js","webpack:///./node_modules/lib0/observable.js","webpack:///./node_modules/lib0/isomorphic.js","webpack:///./node_modules/lib0/random.js","webpack:///./node_modules/lib0/error.js","webpack:///./node_modules/lib0/object.js","webpack:///./node_modules/lib0/function.js","webpack:///./node_modules/lib0/symbol.js","webpack:///./node_modules/lib0/pair.js","webpack:///./node_modules/lib0/dom.js","webpack:///./node_modules/lib0/json.js","webpack:///./node_modules/lib0/eventloop.js","webpack:///./node_modules/lib0/time.js","webpack:///./node_modules/lib0/logging.js","webpack:///./node_modules/lib0/iterator.js","webpack:///./node_modules/yjs/dist/yjs.mjs","webpack:///./node_modules/lib0/broadcastchannel.js","webpack:///./node_modules/y-protocols/sync.js","webpack:///./node_modules/y-protocols/awareness.js","webpack:///./node_modules/lib0/mutex.js","webpack:///./node_modules/y-websocket/src/y-websocket.js","webpack:///./node_modules/y-protocols/auth.js","webpack:///./node_modules/lib0/url.js","webpack:///./node_modules/y-quill/node_modules/y-protocols/awareness.js","webpack:///./node_modules/y-quill/src/y-quill.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/tippy.js/dist/tippy.esm.js","webpack:///./node_modules/positioning/dist/positioning.js","webpack:///./node_modules/quill-table-ui/dist/index.js","webpack:///./quill.js","webpack:///./node_modules/quill-image-drop-module/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","binary","isInteger","num","isFinite","math","isNaN","Encoder","this","cpos","cbuf","Uint8Array","bufs","createEncoder","encoder","len","length","toUint8Array","uint8arr","curPos","set","buffer","write","bufferLen","push","writeUint8","writeVarUint","writeVarInt","isNegative","writeVarString","str","encodedString","unescape","encodeURIComponent","codePointAt","writeUint8Array","uint8Array","leftCopyLen","rightCopyLen","subarray","writeVarUint8Array","byteLength","writeOnDataView","verifyLen","dview","DataView","floatTestBed","ArrayBuffer","writeAny","data","setFloat32","getFloat32","writeFloat32","setFloat64","writeFloat64","setBigInt64","writeBigInt64","Array","keys","RleEncoder","writer","super","w","count","v","flushUintOptRleEncoder","UintOptRleEncoder","flushIntDiffOptRleEncoder","encodedDiff","diff","IntDiffOptRleEncoder","StringEncoder","sarr","lensE","string","join","Decoder","arr","pos","createDecoder","hasContent","decoder","readUint8Array","view","byteOffset","readVarUint8Array","readVarUint","readUint8","Error","readVarInt","sign","readVarString","remainingLen","String","fromCodePoint","nextLen","bytes","apply","decodeURIComponent","escape","readFromDataView","dv","readAnyLookupTable","getFloat64","getBigInt64","obj","readAny","RleDecoder","reader","UintOptRleDecoder","IntDiffOptRleDecoder","hasCount","StringDecoder","spos","end","read","res","slice","BIT1","BIT2","BIT3","BIT4","BIT6","BIT7","BIT8","BITS5","BITS6","BITS7","BITS8","BITS31","floor","Math","abs","ceil","round","imul","log10","min","log2","log","sqrt","a","b","max","exp10","pow","exp","isNegativeZero","Map","copy","forEach","k","setIfUndefined","map","createT","undefined","f","any","createUint8ArrayFromLen","createUint8ArrayViewFromArrayBuffer","createUint8ArrayFromArrayBuffer","toBase64","btoa","Buffer","from","toString","fromBase64","atob","charCodeAt","buf","copyUint8Array","newBuf","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_deepmerge2","_interopRequireDefault","_Options2","default","_classCallCheck","instance","TypeError","dontMerge","destination","source","BlotFormatter","quill","_this","options","arguments","onClick","hide","arrayMerge","currentSpec","actions","overlay","document","createElement","classList","add","className","style","assign","execCommand","root","parentNode","position","addEventListener","specs","SpecClass","spec","init","setSelection","setUserSelect","appendChild","repositionOverlay","createActions","onHide","removeChild","setProperty","destroyActions","action","onUpdate","_this2","getActions","ActionClass","onCreate","onDestroy","overlayTarget","getOverlayElement","parent","specRect","getBoundingClientRect","parentRect","display","left","scrollLeft","top","scrollTop","width","height","_this3","prop","documentElement","factory","window","eval","__webpack_exports__","0","1","isNode","process","release","test","isBrowser","navigator","platform","params","args","computeParams","pargs","argv","currParamName","parg","location","search","split","kv","getVariable","env","toUpperCase","getItem","has","hasParam","_BlotFormatter","Action","formatter","_AlignAction2","_ResizeAction2","_DeleteAction2","BlotSpec","getTargetElement","fromCharCode","trimLeftRegex","fromCamelCaseRegex","fromCamelCase","separator","replace","trimLeft","match","toLowerCase","TextEncoder","utf8TextDecoder","TextDecoder","fatal","ignoreBOM","decode","_localStorage","localStorage","e","varStorage","undefinedToNull","perf","performance","isoCrypto","crypto","cryptoRandomBuffer","getRandomValues","random","_ImageSpec2","_IframeVideoSpec2","DefaultOptions","boxSizing","border","align","attribute","aligner","applyStyle","icons","center","right","toolbar","allowDeselect","mainClassName","mainStyle","minWidth","font","textAlign","color","cursor","zIndex","buttonClassName","addButtonSelectStyle","buttonStyle","background","verticalAlign","svgStyle","resize","handleClassName","handleStyle","backgroundColor","opacity","_Action3","_DefaultAligner2","_DefaultToolbar2","AlignAction","_Action","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","subClass","superClass","constructor","setPrototypeOf","_inherits","getElement","destroy","_defineProperty","DefaultAligner","_alignments","alignAttribute","alignments","icon","el","setAlignment","setStyle","removeAttribute","alignment","getAttribute","setAttribute","float","margin","DefaultToolbar","buttons","addToolbarStyle","addButtons","button","index","borderLeftWidth","children","getAlignments","innerHTML","onButtonClick","preselectButton","addButtonStyle","isAligned","selectButton","clickButton","alignTarget","deselectButton","clear","update","remove","removeProperty","ResizeAction","onMouseDown","event","HTMLElement","dragHandle","setCursor","rect","dragStartX","clientX","preDragWidth","targetRatio","onDrag","onMouseUp","deltaX","newWidth","topLeftHandle","bottomLeftHandle","newHeight","removeEventListener","createHandle","topRightHandle","bottomRightHandle","repositionHandles","box","handleXOffset","handleYOffset","parseFloat","bottom","body","_quill2","DeleteAction","_ref","_temp","_len","_key","concat","onKeyUp","keyCode","blot","find","deleteAt","_BlotSpec3","ImageSpec","_BlotSpec","tagName","img","show","_UnclickableBlotSpec3","IframeVideoSpec","_UnclickableBlotSpec","UnclickableBlotSpec","selector","onTextChange","querySelectorAll","unclickable","onMouseEnter","nextUnclickable","repositionProxyImage","onProxyImageClick","hideProxyImage","createProxyImage","proxyImage","on","canvas","context","getContext","globalAlpha","fillRect","src","toDataURL","pageXOffset","pageYOffset","id","build","CONTAINER_ELEMENT_TAG","CURSOR_CLASS","template","getElementsByClassName","SELECTION_CLASS","CARET_CONTAINER_CLASS","CARET_CLASS","FLAG_CLASS","NAME_CLASS","textContent","_hideDelay","hideDelayMs","_hideSpeedMs","hideSpeedMs","transitionDelay","transitionDuration","_el","_selectionEl","_caretEl","_flagEl","HIDDEN_CLASS","toggleFlag","toggle","SHOW_FLAG_CLASS","NO_DELAY_CLASS","setTimeout","updateCaret","updateSelection","_clearSelection","_sanitize","_sortByDomPosition","_addSelection","_selectionBlock","SELECTION_ELEMENT_TAG","SELECTION_BLOCK_CLASS","setAlpha","sort","Set","filter","_serialize","FLAG_FLAP_CLASS","Date","getTime","strict","u","h","getOwnPropertyDescriptor","isArray","newValue","__importDefault","iterator","delete","retain","insert","__importStar","_cursors","_quill","_options","_setDefaults","_container","addContainer","containerClass","_currentSelection","getSelection","_registerSelectionChangeListeners","_registerTextChangeListener","_registerDomListeners","createCursor","moveCursor","range","_updateCursor","removeCursor","cursors","clearCursors","events","SELECTION_CHANGE","TEXT_CHANGE","_handleTextChange","container","observe","_indexWithinQuillBounds","getLeaf","_leafIsValid","getBounds","_lineRanges","reduce","getClientRects","getLength","domNode","transformOnTextChange","_transformCursors","selectionChangeSource","_emitSelection","emitter","emit","sources","API","getLines","createRange","selectNode","path","pop","setStart","setEnd","transformPosition","g","M","format","G","rgb","exec","rgba","hsl","hsla","hsv","hsva","hex8","q","F","hex6","hex4","hex3","U","T","substr","H","j","ok","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","D","charAt","I","toHsl","N","_","y","desaturate","A","toRgb","x","C","S","E","O","L","toHsv","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","toHsvString","toHslString","toHex","toHexString","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","R","toFilter","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","equals","mix","readability","isReadable","level","size","mostReadable","includeFallbackColors","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexNames","indexOf","parseInt","P","B","z","CSS_UNIT","RegExp","screen","deviceXDPI","logicalXDPI","isBroken","createTextNode","startContainer","startOffset","ActiveXObject","Function","ieZoom","endContainer","endOffset","commonAncestorContainer","childNodes","cloneRange","some","__entries__","splice","requestAnimationFrame","now","MutationObserver","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","disconnect_","updateObservers_","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","disconnect","propertyName","getInstance","instance_","ownerDocument","defaultView","SVGGraphicsElement","SVGElement","getBBox","clientWidth","clientHeight","getComputedStyle","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","DOMRectReadOnly","contentRect","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","unobserve","clearActive","WeakMap","ResizeObserver","ops","unshift","chop","partition","changeLength","hasNext","next","compose","peek","peekType","peekLength","rest","INSERT","DELETE","EQUAL","eachLine","invert","transform","Op","AttributeMap","shim","propertyIsEnumerable","supported","unsupported","oldRange","newRange","substring","offset","singleton","locals","querySelector","HTMLIFrameElement","contentDocument","head","css","media","sourceMap","nonce","nc","Boolean","styleSheet","cssText","insertBefore","JSON","stringify","firstChild","all","base","sourceRoot","getOwnPropertySymbols","supportsDescriptors","callee","is","global","ignoreCase","multiline","dotAll","unicode","sticky","flags","done","return","URL","getOwnPropertyDescriptors","defaultProtocol","normalizeProtocol","forceHttp","forceHttps","stripAuthentication","stripHash","stripWWW","removeQueryParameters","removeTrailingSlash","removeDirectoryIndex","sortQueryParameters","Reflect","trim","shift","startsWith","protocol","username","password","hash","pathname","decodeURI","hostname","searchParams","stripProtocol","globalRegularExpression","urlRegularExpression","normalizeRegularExpression","normalizeUrlOptions","registerTypeListener","registerPasteListener","clipboard","addMatcher","Node","TEXT_NODE","link","normalize","checkTextForUrl","text","localName","getIndex","textToUrl","updateContents","console","error","Quill","register","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","isLegacyArguments","getPolyfill","implementation","entries","values","Atomics","encodeURI","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","parse","valueOf","Promise","then","reject","resolve","Proxy","RangeError","SharedArrayBuffer","SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakSet","getOwnPropertyNames","lastIndex","getDay","slashes","auth","host","port","query","href","resolveObject","isString","Url","javascript","http","https","ftp","gopher","file","isObject","lastIndexOf","parseHost","$","toASCII","W","V","isNullOrUndefined","isNull","nodeType","overflow","version","ucs2","encode","toUnicode","punycode","webpackPolyfill","deprecate","paths","maxKeys","_Options","_AlignAction","_DefaultAligner","_DefaultToolbar","_DeleteAction","_ResizeAction","_ImageSpec","_IframeVideoSpec","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","val","defaultArrayMerge","element","sourceIsArray","mergeObject","array","prev","deepmerge_1","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","arg","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","type","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","last","_observers","observers","uint32","methodUnimplemented","unexpectedCase","hasProperty","callAll","fs","equalityDeep","equalityStrict","Pair","mapToStyleString","DOMParser","ELEMENT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","createTimeoutClass","clearFunction","timeoutId","getUnixTime","clearInterval","cancelAnimationFrame","cancelIdleCallback","BOLD","UNBOLD","BLUE","GREY","GREEN","RED","PURPLE","ORANGE","UNCOLOR","_browserStyleMap","_nodeStyleMap","computeLoggingArgs","strBuilder","logArgs","styles","currentStyle","print","vconsoles","vc","createIterator","iteratorMap","fmap","DeleteItem","clock","DeleteSet","clients","iterateDeletedStructs","transaction","ds","deletes","clientid","structs","doc","store","del","iterateStructs","isDeleted","dis","client","midindex","mid","midclock","findIndexDS","sortAndMergeDeleteSet","dels","addToDeleteSet","createDeleteSet","createDeleteSetFromStructStore","ss","dsitems","struct","deleted","writeDeleteSet","restEncoder","resetDsCurVal","item","writeDsClock","writeDsLen","readAndApplyDeleteSet","unappliedDS","numClients","restDecoder","numberOfDeletes","state","getState","readDsClock","clockEnd","readDsLen","findIndexSS","splitItem","unappliedDSEncoder","pendingDeleteReaders","generateNewClientId","gc","gcFilter","clientID","share","StructStore","_transaction","_transactionCleanups","origin","transact","TypeConstructor","_integrate","Constr","_map","_start","_length","YArray","YText","YXmlFragment","eventName","dsCurrVal","keyClockDecoder","clientDecoder","leftClockDecoder","rightClockDecoder","infoDecoder","stringDecoder","parentInfoDecoder","typeRefDecoder","lenDecoder","ID","keyClock","keyMap","keyClockEncoder","clientEncoder","leftClockEncoder","rightClockEncoder","infoEncoder","stringEncoder","parentInfoEncoder","typeRefEncoder","lenEncoder","info","isYKey","embed","DefaultDSEncoder","DefaultDSDecoder","DefaultUpdateEncoder","DefaultUpdateDecoder","createID","writeClientsStructs","_sm","sm","getStateVector","startNewStructs","writeClient","firstStruct","writeStructs","readStructs","clientsStructRefs","pendingClientsStructRefs","clientRefs","numOfStateUpdates","numberOfStructs","refs","readClient","readInfo","cantCopyParentInfo","readLeftID","readRightID","readParentInfo","readString","readItemContent","readLen","GC","readClientsStructRefs","clientsStructsRefs","structRefs","pendingStructRefs","merged","r1","r2","mergeReadStructsIntoPendingReads","stack","pendingStack","clientsStructRefsIds","getNextStructTarget","nextStructsTarget","curStructsTarget","stackHead","localClock","missing","getMissing","integrate","resumeStructIntegration","pendingReaders","tryResumePendingDeleteReaders","readUpdateV2","ydoc","transactionOrigin","structDecoder","applyUpdate","YDecoder","applyUpdateV2","encodeStateAsUpdateV2","encodedTargetStateVector","targetStateVector","writeStateAsUpdate","decodeStateVector","readStateVector","ssLength","decodedState","writeStateVector","sv","encodeStateVectorV2","writeDocumentStateVector","EventHandler","createEventHandler","addEventHandlerListener","eventHandler","removeEventHandlerListener","callEventHandlerListeners","arg0","arg1","compareIDs","findRootTypeKey","RelativePosition","tname","createRelativePositionFromJSON","json","AbsolutePosition","createRelativePosition","typeid","_item","createRelativePositionFromTypeIndex","countable","createAbsolutePositionFromRelativePosition","rpos","rightID","typeID","followRedone","content","createAbsolutePosition","compareRelativePositions","Snapshot","createSnapshot","isVisible","snapshot","splitSnapshotAffectedStructs","meta","getItemCleanStart","lastStruct","addStruct","findIndexCleanStart","getItemCleanEnd","clockStart","Transaction","local","deleteSet","beforeState","afterState","changed","changedParentTypes","_mergeStructs","writeUpdateMessageFromTransaction","writeStructsFromTransaction","tryToMergeWithLeft","mergeWith","parentSub","tryGcDeleteSet","deleteItems","di","deleteItem","endDeleteItemClock","si","keep","tryMergeDeleteSet","cleanupTransactions","transactionCleanups","mergeStructs","subs","itemtype","_callObserver","currentTarget","_dEH","beforeClock","firstChangePos","replacedStructPos","initialCall","_changes","getPathTo","changes","added","delta","lastOp","packOp","adds","getContent","oldValue","child","globalSearchMarkerTimestamp","ArraySearchMarker","timestamp","overwriteMarker","findMarker","yarray","_searchMarker","pindex","refreshMarkerTimestamp","searchMarker","pm","markPosition","updateMarkerChanges","callTypeObservers","changedType","_eH","parentSubs","typeListToArray","cs","typeListForEach","typeListMap","result","typeListCreateIterator","currentContent","currentContentIndex","typeListInsertGenericsAfter","referenceItem","ownClientId","jsonContent","packJsonContent","lastId","ContentAny","typeListInsertGenerics","startIndex","typeListDelete","startLength","typeMapDelete","typeMapSet","typeMapGet","createMapIterator","iteratorFilter","entry","YArrayEvent","_prelimContent","typeListGet","writeTypeRef","YArrayRefID","YMapEvent","ymap","keysChanged","typeMapHas","YMapRefID","equalAttrs","currentAttributes","ContentString","updateCurrentAttributes","findNextPosition","findPosition","insertNegatedAttributes","currPos","negatedAttributes","forward","minimizeAttributeChanges","insertAttributes","currentVal","insertText","formatText","attr","newlines","cleanupFormattingGap","startAttributes","endAttributes","cleanups","deleteText","startAttrs","YTextEvent","ytext","_delta","oldAttributes","deleteLen","addOp","op","curVal","_pending","foundFormattingItem","afterClock","cleanupYTextFormatting","attrs","cleanupContextlessFormattingGap","sanitize","ins","applyDelta","prevSnapshot","computeYChange","packStr","addAttributes","cur","user","insertEmbed","YTextRefID","YXmlTreeWalker","_filter","_root","_currentNode","_firstCall","YXmlElement","nodeName","YXmlEvent","xml","_document","hooks","fragment","createDocumentFragment","_createAssociation","xmlType","toDOM","YXmlFragmentRefID","_prelimAttrs","getAttributes","stringBuilder","keysLen","toLocaleLowerCase","attributeName","attributeValue","typeMapGetAll","dom","yxml","YXmlElementRefID","writeKey","childListChanged","attributesChanged","YXmlHook","hookName","hook","createDom","YXmlHookRefID","YXmlText","toDelta","nestedNodes","node","YXmlTextRefID","encodingRef","writeInfo","writeLen","writeBuf","ContentDeleted","markDeleted","writeJSON","ContentJSON","writeString","typeRefs","readKey","_copy","_write","nextID","redone","leftItem","rightItem","rightOrigin","isCountable","isMarked","doKeep","doDelete","parentItem","conflictingItems","itemsBeforeOrigin","addChangedTypeToTransaction","parentGCd","newStruct","replaceStruct","getRef","writeLeftID","writeRightID","ykey","writeParentInfo","contentRefs","readBuf","readJSON","readTypeRef","channels","BC","BroadcastChannel","room","onmessage","storage","setItem","getChannel","bc","publish","postMessage","writeSyncStep1","writeSyncStep2","encodedStateVector","readSyncStep2","decoding","readSyncMessage","messageType","readSyncStep1","states","_checkInterval","setInterval","getLocalState","outdatedTimeout","lastUpdated","setLocalState","removeAwarenessStates","currLocalMeta","prevState","updated","filteredUpdated","removed","field","awareness","curMeta","encodeAwarenessUpdate","createMutex","token","provider","reason","warn","url","readMessage","emitSynced","syncMessageType","synced","getStates","clientMeta","currClock","permissionDeniedHandler","setupWS","shouldConnect","ws","websocket","_WS","binaryType","wsconnecting","wsconnected","wsLastMessageReceived","send","onclose","status","wsUnsuccessfulReconnects","onopen","encoderAwarenessState","broadcastMessage","bcconnected","mux","serverUrl","roomname","connect","WebSocketPolyfill","WebSocket","resyncInterval","encodedParams","results","bcChannel","_localAwarenessState","_synced","_resyncInterval","alert","_bcSubscriber","_updateHandler","_awarenessUpdateHandler","changedClients","close","messageReconnectTimeout","encoderSync","encoderState","encoderAwarenessQuery","disconnectBc","connectBc","updateCursor","quillCursors","aw","clientId","anchor","err","getModule","_negatedUsedFormats","_awarenessChange","_typeObserver","eventDelta","_quillObserver","eventType","sel","setLocalStateField","setContents","getWindow","getWindowScroll","win","isElement","isHTMLElement","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","scroll","offsets","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getParentNode","assignedSlot","listScrollParents","scrollParent","getScrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","html","getOffsetParent","currentNode","perspective","willChange","getContainingBlock","basePlacements","variationPlacements","acc","placement","modifierPhases","order","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","fn","pending","orderedModifiers","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","current","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","roundOffsets","hasX","hasY","sideX","sideY","_Object$assign","commonStyles","getOppositePlacement","matched","getOppositeVariationPlacement","contains","rootNode","getRootNode","ShadowRoot","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","userAgent","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","arrow","initialStyles","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","TOUCH_OPTIONS","capture","getValueAtIndexOrReturn","defaultValue","isType","invokeWithArgsOrReturn","ms","normalizeToArray","pushIfUnique","arrayFrom","div","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","els","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","listener","method","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","onWindowBlur","activeElement","blur","ua","isIE","pluginProps","animateFill","followCursor","inlinePositioning","defaultProps","appendTo","aria","expanded","delay","duration","getReferenceClientRect","hideOnClick","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onHidden","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","plugins","popperOptions","render","showOnCreate","touch","trigger","triggerTarget","allowHTML","animation","inertia","maxWidth","role","theme","defaultKeys","getExtendedPassedProps","passedProps","plugin","evaluateProps","valueAsString","getDataAttributeProps","dangerouslySetInnerHTML","createArrowElement","getChildren","firstElementChild","boxChildren","backdrop","prevProps","nextProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isEnabled","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","setContent","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","getCurrentTarget","hasAttribute","getIsDefaultRenderFn","visibility","addDocumentPress","transition","_getDefaultTemplateCh2","getDefaultTemplateChildren","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","callback","onTransitionEnd","onTransitionedIn","mount","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","getDocument","enable","disable","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","pointerEvents","shouldInvokePropsHook","_instance$props","pluginHooks","currentValue","nextValue","onDocumentPress","onTouchMove","onTouchStart","handler","onMouseLeave","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","clientY","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$popperInsta","relatedTarget","_instance$props2","computedReference","_getNormalizedTouchSe","touchValue","touchDelay","tippy","targets","optionalProps","instances","setDefaultProps","Positioning","getAllStyles","getStyle","isStaticPositioned","offsetParentEl","elPosition","parentOffset","elBcr","viewportOffset","elOffset","positionElements","hostElement","targetElement","appendToBody","placementPrimary","_c","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","windowHeight","innerHeight","windowWidth","innerWidth","placementSeparator","positionService","QuillEvents","QuillSources","__assign","DEFAULT_PLACEMENT","TableUI","TOGGLE_TEMPLATE","DEFAULTS","maxRowCount","menuItems","getColCount","table","insertColumnRight","insertColumnLeft","insertRowAbove","insertRowBelow","deleteColumn","deleteRow","deleteTable","editorChangeHandler","detectButton","contextMenuHandler","evt","isTable","preventDefault","showMenu","toggleClickHandler","toggleMenu","stopPropagation","docClickHandler","hideMenu","EDITOR_CHANGE","getTable","rows","row","menu","it","createMenuItem","baseClass","placementVals","addClassesToTarget","targetPlacement","primary","secondary","classes","classname","placementToRemove","hasAuto","findIndex","testPlacement","isInViewport","placementVals_1","addedClasses","iconSpan","textSpan","innerText","focus","getLine","cell","containerBounds","bounds","showToggle","hideToggle","handleDrop","handlePaste","dataTransfer","files","caretRangeFromPoint","selection","setBaseAndExtent","readFiles","clipboardData","items","dataUrl","FileReader","onload","blob","getAsFile","Blob","readAsDataURL","documentUUID","getText","editor","editorInstance","providerInstance","divergent_name","divergent_color","save","ajax","saveRoute","csrfToken","success","xhr","jqXhr","textStatus","errorMessage","saveLoop","checker","keypress"],"mappings":"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","file":"quill.bundle.js","sourcesContent":[" \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 = \"/quill/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\n\n/* istanbul ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nconst verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer.\n *\n * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num >>>= 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * Encodes integers in the range from [-2147483648, -2147483647].\n *\n * We don't use zig-zag encoding because we want to keep the option open\n * to use the same function for BigInt and 53bit integers (doubles).\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num >>>= 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num >>>= 7\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeVarString = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write the content of another Encoder.\n *\n * TODO: can be improved!\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object|Array|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && data <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (data instanceof Array) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = buffer.createUint8ArrayViewFromArrayBuffer(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let len = 0\n while (true) {\n const r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return num >>> 0 // return unsigned number!\n }\n /* istanbul ignore if */\n if (len > 35) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if unmber is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let len = 6\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n while (true) {\n r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return sign * (num >>> 0)\n }\n /* istanbul ignore if */\n if (len > 41) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\nexport const readVarString = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0)\n\n/**\n * @type {Array}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object\n const len = readVarUint(decoder)\n /**\n * @type {Object}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = diff >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template X,Y\n * @param {Map} m\n * @return {Map}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template T,K\n * @param {Map} map\n * @param {K} key\n * @param {function():T} createT\n * @return {T}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map} m\n * @param {function(V,K):R} f\n * @return {Array}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* istanbul ignore next */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* istanbul ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* istanbul ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _deepmerge = require('deepmerge');\n\nvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\nvar _Options = require('./Options');\n\nvar _Options2 = _interopRequireDefault(_Options);\n\nvar _Action = require('./actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\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 dontMerge = function dontMerge(destination, source) {\n return source;\n};\n\nvar BlotFormatter = function () {\n function BlotFormatter(quill) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BlotFormatter);\n\n this.onClick = function () {\n _this.hide();\n };\n\n this.quill = quill;\n this.options = (0, _deepmerge2.default)(_Options2.default, options, { arrayMerge: dontMerge });\n this.currentSpec = null;\n this.actions = [];\n this.overlay = document.createElement('div');\n this.overlay.classList.add(this.options.overlay.className);\n if (this.options.overlay.style) {\n Object.assign(this.overlay.style, this.options.overlay.style);\n }\n\n // disable native image resizing on firefox\n document.execCommand('enableObjectResizing', false, 'false'); // eslint-disable-line no-undef\n this.quill.root.parentNode.style.position = this.quill.root.parentNode.style.position || 'relative';\n\n this.quill.root.addEventListener('click', this.onClick);\n this.specs = this.options.specs.map(function (SpecClass) {\n return new SpecClass(_this);\n });\n this.specs.forEach(function (spec) {\n return spec.init();\n });\n }\n\n _createClass(BlotFormatter, [{\n key: 'show',\n value: function show(spec) {\n this.currentSpec = spec;\n this.currentSpec.setSelection();\n this.setUserSelect('none');\n this.quill.root.parentNode.appendChild(this.overlay);\n this.repositionOverlay();\n this.createActions(spec);\n }\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.currentSpec) {\n return;\n }\n\n this.currentSpec.onHide();\n this.currentSpec = null;\n this.quill.root.parentNode.removeChild(this.overlay);\n this.overlay.style.setProperty('display', 'none');\n this.setUserSelect('');\n this.destroyActions();\n }\n }, {\n key: 'update',\n value: function update() {\n this.repositionOverlay();\n this.actions.forEach(function (action) {\n return action.onUpdate();\n });\n }\n }, {\n key: 'createActions',\n value: function createActions(spec) {\n var _this2 = this;\n\n this.actions = spec.getActions().map(function (ActionClass) {\n var action = new ActionClass(_this2);\n action.onCreate();\n return action;\n });\n }\n }, {\n key: 'destroyActions',\n value: function destroyActions() {\n this.actions.forEach(function (action) {\n return action.onDestroy();\n });\n this.actions = [];\n }\n }, {\n key: 'repositionOverlay',\n value: function repositionOverlay() {\n if (!this.currentSpec) {\n return;\n }\n\n var overlayTarget = this.currentSpec.getOverlayElement();\n if (!overlayTarget) {\n return;\n }\n\n var parent = this.quill.root.parentNode;\n var specRect = overlayTarget.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n\n Object.assign(this.overlay.style, {\n display: 'block',\n left: specRect.left - parentRect.left - 1 + parent.scrollLeft + 'px',\n top: specRect.top - parentRect.top + parent.scrollTop + 'px',\n width: specRect.width + 'px',\n height: specRect.height + 'px'\n });\n }\n }, {\n key: 'setUserSelect',\n value: function setUserSelect(value) {\n var _this3 = this;\n\n var props = ['userSelect', 'mozUserSelect', 'webkitUserSelect', 'msUserSelect'];\n\n props.forEach(function (prop) {\n // set on contenteditable element and \n _this3.quill.root.style.setProperty(prop, value);\n if (document.documentElement) {\n document.documentElement.style.setProperty(prop, value);\n }\n });\n }\n }]);\n\n return BlotFormatter;\n}();\n\nexports.default = BlotFormatter;","/*!\n * Quill Editor v2.0.0-dev.3\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\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\\nvar code = \\\" \\\";\\n// Exports\\nmodule.exports = code;\\n\\n//# sourceURL=webpack://Quill/./assets/icons/video.svg?\");\n\n/***/ }),\n\n/***/ \"./blots/block.js\":\n/*!************************!*\\\n !*** ./blots/block.js ***!\n \\************************/\n/*! exports provided: blockDelta, bubbleFormats, BlockEmbed, 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__, \\\"blockDelta\\\", function() { return blockDelta; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bubbleFormats\\\", function() { return bubbleFormats; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BlockEmbed\\\", function() { return BlockEmbed; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Block; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\nconst NEWLINE_LENGTH = 1;\\n\\nclass Block extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n this.cache = {};\\n }\\n\\n insertAt(index, value, def) {\\n if (def != null) {\\n super.insertAt(index, value, def);\\n this.cache = {};\\n return;\\n }\\n\\n if (value.length === 0) return;\\n const lines = value.split('\\\\n');\\n const text = lines.shift();\\n\\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\\n this.cache = {};\\n }\\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 {\\n head\\n } = this.children;\\n super.insertBefore(blot, ref);\\n\\n if (head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]) {\\n head.remove();\\n }\\n\\n this.cache = {};\\n }\\n\\n length() {\\n if (this.cache.length == null) {\\n this.cache.length = super.length() + NEWLINE_LENGTH;\\n }\\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\\n if (index === 0) {\\n this.parent.insertBefore(clone, this);\\n return this;\\n }\\n\\n this.parent.insertBefore(clone, this.next);\\n return clone;\\n }\\n\\n const next = super.split(index, force);\\n this.cache = {};\\n return next;\\n }\\n\\n}\\n\\nBlock.blotName = 'block';\\nBlock.tagName = 'P';\\nBlock.defaultChild = _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"];\\nBlock.allowedChildren = [_break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], _inline__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]];\\n\\nclass BlockEmbed extends parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"] {\\n attach() {\\n super.attach();\\n this.attributes = new parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"AttributorStore\\\"](this.domNode);\\n }\\n\\n delta() {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(this.value(), extend__WEBPACK_IMPORTED_MODULE_0___default()(this.formats(), this.attributes.values()));\\n }\\n\\n format(name, value) {\\n const attribute = this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_ATTRIBUTE);\\n\\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\\n}\\n\\nBlockEmbed.scope = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\\n\\nfunction blockDelta(blot, filter = true) {\\n return blot.descendants(parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"LeafBlot\\\"]).reduce((delta, leaf) => {\\n if (leaf.length() === 0) {\\n return delta;\\n }\\n\\n return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a()).insert('\\\\n', bubbleFormats(blot));\\n}\\n\\nfunction bubbleFormats(blot, formats = {}, filter = true) {\\n if (blot == null) return formats;\\n\\n if (typeof blot.formats === 'function') {\\n formats = extend__WEBPACK_IMPORTED_MODULE_0___default()(formats, blot.formats());\\n\\n if (filter) {\\n // exclude syntax highlighting from deltas and getFormat()\\n delete formats['code-token'];\\n }\\n }\\n\\n if (blot.parent == null || blot.parent.statics.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\\n return formats;\\n }\\n\\n return bubbleFormats(blot.parent, formats, filter);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/block.js?\");\n\n/***/ }),\n\n/***/ \"./blots/break.js\":\n/*!************************!*\\\n !*** ./blots/break.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Break extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n}\\n\\nBreak.blotName = 'break';\\nBreak.tagName = 'BR';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Break);\\n\\n//# sourceURL=webpack://Quill/./blots/break.js?\");\n\n/***/ }),\n\n/***/ \"./blots/container.js\":\n/*!****************************!*\\\n !*** ./blots/container.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Container extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"] {}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Container);\\n\\n//# sourceURL=webpack://Quill/./blots/container.js?\");\n\n/***/ }),\n\n/***/ \"./blots/cursor.js\":\n/*!*************************!*\\\n !*** ./blots/cursor.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\nclass Cursor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n let target = this;\\n let index = 0;\\n\\n while (target != null && target.statics.scope !== parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK_BLOT) {\\n index += target.offset(target.parent);\\n target = target.parent;\\n }\\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(); // Link format will insert text outside of anchor tag\\n\\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\\n }\\n\\n const prevTextBlot = this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.prev : null;\\n const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\\n const nextTextBlot = this.next instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] ? this.next : null;\\n const nextText = nextTextBlot ? nextTextBlot.text : '';\\n const {\\n textNode\\n } = this; // take text from inside this blot and reset it\\n\\n const newText = textNode.data.split(Cursor.CONTENTS).join('');\\n textNode.data = Cursor.CONTENTS; // proactively merge TextBlots around cursor so that optimization\\n // doesn't lose the cursor. the reason we are here in cursor.restore\\n // could be that the user clicked in prevTextBlot or nextTextBlot, or\\n // the user typed something.\\n\\n let mergedTextBlot;\\n\\n if (prevTextBlot) {\\n mergedTextBlot = prevTextBlot;\\n\\n if (newText || nextTextBlot) {\\n prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\\n\\n if (nextTextBlot) {\\n nextTextBlot.remove();\\n }\\n }\\n } else if (nextTextBlot) {\\n mergedTextBlot = nextTextBlot;\\n nextTextBlot.insertAt(0, newText);\\n } else {\\n const newTextNode = document.createTextNode(newText);\\n mergedTextBlot = this.scroll.create(newTextNode);\\n this.parent.insertBefore(mergedTextBlot, this);\\n }\\n\\n this.remove();\\n\\n if (range) {\\n // calculate selection to restore\\n const remapOffset = (node, offset) => {\\n if (prevTextBlot && node === prevTextBlot.domNode) {\\n return offset;\\n }\\n\\n if (node === textNode) {\\n return prevTextLength + offset - 1;\\n }\\n\\n if (nextTextBlot && node === nextTextBlot.domNode) {\\n return prevTextLength + newText.length + offset;\\n }\\n\\n return null;\\n };\\n\\n const start = remapOffset(range.start.node, range.start.offset);\\n const end = remapOffset(range.end.node, range.end.offset);\\n\\n if (start !== null && end !== null) {\\n return {\\n startNode: mergedTextBlot.domNode,\\n startOffset: start,\\n endNode: mergedTextBlot.domNode,\\n endOffset: end\\n };\\n }\\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\\n}\\n\\nCursor.blotName = 'cursor';\\nCursor.className = 'ql-cursor';\\nCursor.tagName = 'span';\\nCursor.CONTENTS = '\\\\uFEFF'; // Zero width no break space\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Cursor);\\n\\n//# sourceURL=webpack://Quill/./blots/cursor.js?\");\n\n/***/ }),\n\n/***/ \"./blots/embed.js\":\n/*!************************!*\\\n !*** ./blots/embed.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\nconst GUARD_TEXT = '\\\\uFEFF';\\n\\nclass Embed extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (node === this.leftGuard) {\\n if (this.prev instanceof _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _text__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Embed);\\n\\n//# sourceURL=webpack://Quill/./blots/embed.js?\");\n\n/***/ }),\n\n/***/ \"./blots/inline.js\":\n/*!*************************!*\\\n !*** ./blots/inline.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\nclass Inline extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"InlineBlot\\\"] {\\n static compare(self, other) {\\n const selfIndex = Inline.order.indexOf(self);\\n const otherIndex = Inline.order.indexOf(other);\\n\\n if (selfIndex >= 0 || otherIndex >= 0) {\\n return selfIndex - otherIndex;\\n }\\n\\n if (self === other) {\\n return 0;\\n }\\n\\n if (self < other) {\\n return -1;\\n }\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOT)) {\\n const blot = this.isolate(index, length);\\n\\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\\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\\n}\\n\\nInline.allowedChildren = [Inline, _break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"], _text__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\\n\\nInline.order = ['cursor', 'inline', // Must be lower\\n'link', // Chrome wants to be lower\\n'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\\n];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Inline);\\n\\n//# sourceURL=webpack://Quill/./blots/inline.js?\");\n\n/***/ }),\n\n/***/ \"./blots/scroll.js\":\n/*!*************************!*\\\n !*** ./blots/scroll.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _break__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./container */ \\\"./blots/container.js\\\");\\n\\n\\n\\n\\n\\n\\nfunction isLine(blot) {\\n return blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] || blot instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"];\\n}\\n\\nclass Scroll extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ScrollBlot\\\"] {\\n constructor(registry, domNode, {\\n emitter\\n }) {\\n super(registry, domNode);\\n this.emitter = emitter;\\n this.batch = false;\\n this.optimize();\\n this.enable();\\n this.domNode.addEventListener('dragstart', e => this.handleDragStart(e));\\n }\\n\\n batchStart() {\\n if (!Array.isArray(this.batch)) {\\n this.batch = [];\\n }\\n }\\n\\n batchEnd() {\\n const mutations = this.batch;\\n this.batch = false;\\n this.update(mutations);\\n }\\n\\n emitMount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_MOUNT, blot);\\n }\\n\\n emitUnmount(blot) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BLOT_UNMOUNT, blot);\\n }\\n\\n deleteAt(index, length) {\\n const [first, offset] = this.line(index);\\n const [last] = this.line(index + length);\\n super.deleteAt(index, length);\\n\\n if (last != null && first !== last && offset > 0) {\\n if (first instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"] || last instanceof _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"]) {\\n this.optimize();\\n return;\\n }\\n\\n const ref = last.children.head instanceof _break__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] ? null : last.children.head;\\n first.moveChildren(last, ref);\\n first.remove();\\n }\\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 handleDragStart(event) {\\n event.preventDefault();\\n }\\n\\n insertAt(index, value, def) {\\n if (index >= this.length()) {\\n if (def == null || this.scroll.query(value, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) == null) {\\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\\n this.appendChild(blot);\\n\\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\\n this.optimize();\\n }\\n\\n insertBefore(blot, ref) {\\n if (blot.statics.scope === parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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 isEnabled() {\\n return this.domNode.getAttribute('contenteditable') === 'true';\\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\\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__WEBPACK_IMPORTED_MODULE_0__[\\\"ContainerBlot\\\"]) {\\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\\n }\\n\\n lengthLeft -= childLength;\\n });\\n return lines;\\n };\\n\\n return getLines(this, index, length);\\n }\\n\\n optimize(mutations = [], context = {}) {\\n if (this.batch) return;\\n super.optimize(mutations, context);\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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() {// Never remove self\\n }\\n\\n update(mutations) {\\n if (this.batch) {\\n if (Array.isArray(mutations)) {\\n this.batch = this.batch.concat(mutations);\\n }\\n\\n return;\\n }\\n\\n let source = _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER;\\n\\n if (typeof mutations === 'string') {\\n source = mutations;\\n }\\n\\n if (!Array.isArray(mutations)) {\\n mutations = this.observer.takeRecords();\\n }\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_BEFORE_UPDATE, source, mutations);\\n }\\n\\n super.update(mutations.concat([])); // pass copy\\n\\n if (mutations.length > 0) {\\n this.emitter.emit(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_UPDATE, source, mutations);\\n }\\n }\\n\\n}\\n\\nScroll.blotName = 'scroll';\\nScroll.className = 'ql-editor';\\nScroll.tagName = 'DIV';\\nScroll.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"];\\nScroll.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"], _block__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockEmbed\\\"], _container__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Scroll);\\n\\n//# sourceURL=webpack://Quill/./blots/scroll.js?\");\n\n/***/ }),\n\n/***/ \"./blots/text.js\":\n/*!***********************!*\\\n !*** ./blots/text.js ***!\n \\***********************/\n/*! exports provided: default, escapeText */\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 Text; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"escapeText\\\", function() { return escapeText; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass Text extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"TextBlot\\\"] {}\\n\\nfunction escapeText(text) {\\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 });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./blots/text.js?\");\n\n/***/ }),\n\n/***/ \"./core.js\":\n/*!*****************!*\\\n !*** ./core.js ***!\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 _core_quill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_embed__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blots/embed */ \\\"./blots/embed.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_scroll__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blots/scroll */ \\\"./blots/scroll.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/clipboard */ \\\"./modules/clipboard.js\\\");\\n/* harmony import */ var _modules_history__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/history */ \\\"./modules/history.js\\\");\\n/* harmony import */ var _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/keyboard */ \\\"./modules/keyboard.js\\\");\\n/* harmony import */ var _modules_uploader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/uploader */ \\\"./modules/uploader.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'blots/block': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"],\\n 'blots/block/embed': _blots_block__WEBPACK_IMPORTED_MODULE_1__[\\\"BlockEmbed\\\"],\\n 'blots/break': _blots_break__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"],\\n 'blots/container': _blots_container__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'blots/cursor': _blots_cursor__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'blots/embed': _blots_embed__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'blots/inline': _blots_inline__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'blots/scroll': _blots_scroll__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"],\\n 'blots/text': _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"],\\n 'modules/clipboard': _modules_clipboard__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"],\\n 'modules/history': _modules_history__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"],\\n 'modules/keyboard': _modules_keyboard__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'modules/uploader': _modules_uploader__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core_quill__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./core.js?\");\n\n/***/ }),\n\n/***/ \"./core/editor.js\":\n/*!************************!*\\\n !*** ./core/editor.js ***!\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 clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\\n if (op.insert != null) {\\n if (typeof op.insert === 'string') {\\n let text = op.insert;\\n\\n if (text.endsWith('\\\\n') && consumeNextNewline) {\\n consumeNextNewline = false;\\n text = text.slice(0, -1);\\n }\\n\\n if ((index >= scrollLength || this.scroll.descendant(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"BlockEmbed\\\"], index)[0]) && !text.endsWith('\\\\n')) {\\n consumeNextNewline = true;\\n }\\n\\n this.scroll.insertAt(index, text);\\n const [line, offset] = this.scroll.line(index);\\n let formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(line));\\n\\n if (line instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n const [leaf] = line.descendant(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], offset);\\n formats = extend__WEBPACK_IMPORTED_MODULE_2___default()(formats, Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(leaf));\\n }\\n\\n attributes = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].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\\n if (key == null) return index;\\n this.scroll.insertAt(index, key, op.insert[key]);\\n }\\n\\n scrollLength += length;\\n }\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).retain(length, clone__WEBPACK_IMPORTED_MODULE_0___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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n }\\n\\n getFormat(index, length = 0) {\\n let lines = [];\\n let leaves = [];\\n\\n if (length === 0) {\\n this.scroll.path(index).forEach(path => {\\n const [blot] = path;\\n\\n if (blot instanceof _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]) {\\n lines.push(blot);\\n } else if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"]) {\\n leaves.push(blot);\\n }\\n });\\n } else {\\n lines = this.scroll.lines(index, length);\\n leaves = this.scroll.descendants(parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"LeafBlot\\\"], index, length);\\n }\\n\\n const formatsArr = [lines, leaves].map(blots => {\\n if (blots.length === 0) return {};\\n let formats = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blots.shift());\\n\\n while (Object.keys(formats).length > 0) {\\n const blot = blots.shift();\\n if (blot == null) return formats;\\n formats = combineFormats(Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(blot), formats);\\n }\\n\\n return formats;\\n });\\n return extend__WEBPACK_IMPORTED_MODULE_2___default.a.apply(extend__WEBPACK_IMPORTED_MODULE_2___default.a, formatsArr);\\n }\\n\\n getHTML(index, length) {\\n const [line, lineOffset] = this.scroll.line(index);\\n\\n if (line.length() >= lineOffset + length) {\\n return convertHTML(line, lineOffset, length, true);\\n }\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert({\\n [embed]: value\\n }));\\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 quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert(text, clone__WEBPACK_IMPORTED_MODULE_0___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 !== _blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].blotName) return false;\\n if (block.children.length > 1) return false;\\n return block.children.head instanceof _blots_break__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"];\\n }\\n\\n removeFormat(index, length) {\\n const text = this.getText(index, length);\\n const [line, offset] = this.scroll.line(index + length);\\n let suffixLength = 0;\\n let suffix = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a();\\n\\n if (line != null) {\\n suffixLength = line.length() - offset;\\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\\\n');\\n }\\n\\n const contents = this.getContents(index, length + suffixLength);\\n const diff = contents.diff(new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(text).concat(suffix));\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(diff);\\n return this.applyDelta(delta);\\n }\\n\\n update(change, mutations = [], selectionInfo = undefined) {\\n const oldDelta = this.delta;\\n\\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 = Object(_blots_block__WEBPACK_IMPORTED_MODULE_7__[\\\"bubbleFormats\\\"])(textBlot);\\n const index = textBlot.offset(this.scroll);\\n const oldValue = mutations[0].oldValue.replace(_blots_cursor__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].CONTENTS, '');\\n const oldText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(oldValue);\\n const newText = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().insert(textBlot.value());\\n const relativeSelectionInfo = selectionInfo && {\\n oldRange: shiftRange(selectionInfo.oldRange, -index),\\n newRange: shiftRange(selectionInfo.newRange, -index)\\n };\\n const diffDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\\n change = diffDelta.reduce((delta, op) => {\\n if (op.insert) {\\n return delta.insert(op.insert, formats);\\n }\\n\\n return delta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n this.delta = oldDelta.compose(change);\\n } else {\\n this.delta = this.getDelta();\\n\\n if (!change || !deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(oldDelta.compose(change), this.delta)) {\\n change = oldDelta.diff(this.delta, selectionInfo);\\n }\\n }\\n\\n return change;\\n }\\n\\n}\\n\\nfunction convertListHTML(items, lastIndent, types) {\\n if (items.length === 0) {\\n const [endTag] = getListType(types.pop());\\n\\n if (lastIndent <= 0) {\\n return \\\"\\\");\\n }\\n\\n return \\\"\\\").concat(convertListHTML([], lastIndent - 1, types));\\n }\\n\\n const [{\\n child,\\n offset,\\n length,\\n indent,\\n type\\n }, ...rest] = items;\\n const [tag, attribute] = getListType(type);\\n\\n if (indent > lastIndent) {\\n types.push(type);\\n\\n if (indent === lastIndent + 1) {\\n return \\\"<\\\".concat(tag, \\\">\\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n return \\\"<\\\".concat(tag, \\\">
  • \\\").concat(convertListHTML(items, lastIndent + 1, types));\\n }\\n\\n const previousType = types[types.length - 1];\\n\\n if (indent === lastIndent && type === previousType) {\\n return \\\"
  • \\\").concat(convertHTML(child, offset, length)).concat(convertListHTML(rest, indent, types));\\n }\\n\\n const [endTag] = getListType(types.pop());\\n return \\\"\\\").concat(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 }\\n\\n if (blot instanceof _blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]) {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_9__[\\\"escapeText\\\"])(blot.value().slice(index, index + length));\\n }\\n\\n 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\\n const parts = [];\\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\\n parts.push(convertHTML(child, offset, childLength));\\n });\\n\\n if (isRoot || blot.statics.blotName === 'list') {\\n return parts.join('');\\n }\\n\\n const {\\n outerHTML,\\n innerHTML\\n } = blot.domNode;\\n const [start, end] = outerHTML.split(\\\">\\\".concat(innerHTML, \\\"<\\\")); // TODO cleanup\\n\\n if (start === '\\\".concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\n\\n return \\\"\\\".concat(start, \\\">\\\").concat(parts.join(''), \\\"<\\\").concat(end);\\n }\\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\\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\\n return merged;\\n }, {});\\n}\\n\\nfunction getListType(type) {\\n const tag = type === 'ordered' ? 'ol' : 'ul';\\n\\n switch (type) {\\n case 'checked':\\n return [tag, ' data-list=\\\"checked\\\"'];\\n\\n case 'unchecked':\\n return [tag, ' data-list=\\\"unchecked\\\"'];\\n\\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\\n return normalizedDelta.push(op);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a());\\n}\\n\\nfunction shiftRange({\\n index,\\n length\\n}, amount) {\\n return new _selection__WEBPACK_IMPORTED_MODULE_5__[\\\"Range\\\"](index + amount, length);\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Editor);\\n\\n//# sourceURL=webpack://Quill/./core/editor.js?\");\n\n/***/ }),\n\n/***/ \"./core/emitter.js\":\n/*!*************************!*\\\n !*** ./core/emitter.js ***!\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 eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \\\"./node_modules/eventemitter3/index.js\\\");\\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"])('quill:events');\\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\\nEVENTS.forEach(eventName => {\\n document.addEventListener(eventName, (...args) => {\\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\\n const quill = _instances__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].get(node);\\n\\n if (quill && quill.emitter) {\\n quill.emitter.handleDOM(...args);\\n }\\n });\\n });\\n});\\n\\nclass Emitter extends eventemitter3__WEBPACK_IMPORTED_MODULE_0___default.a {\\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(({\\n node,\\n handler\\n }) => {\\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\\n this.listeners[eventName].push({\\n node,\\n handler\\n });\\n }\\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/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Emitter);\\n\\n//# sourceURL=webpack://Quill/./core/emitter.js?\");\n\n/***/ }),\n\n/***/ \"./core/instances.js\":\n/*!***************************!*\\\n !*** ./core/instances.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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};\\n\\ndebug.level = namespace.level;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (namespace);\\n\\n//# sourceURL=webpack://Quill/./core/logger.js?\");\n\n/***/ }),\n\n/***/ \"./core/module.js\":\n/*!************************!*\\\n !*** ./core/module.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\nclass Module {\\n constructor(quill, options = {}) {\\n this.quill = quill;\\n this.options = options;\\n }\\n\\n}\\n\\nModule.DEFAULTS = {};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Module);\\n\\n//# sourceURL=webpack://Quill/./core/module.js?\");\n\n/***/ }),\n\n/***/ \"./core/quill.js\":\n/*!***********************!*\\\n !*** ./core/quill.js ***!\n \\***********************/\n/*! exports provided: globalRegistry, expandConfig, overload, 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__, \\\"globalRegistry\\\", function() { return globalRegistry; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"expandConfig\\\", function() { return expandConfig; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"overload\\\", function() { return overload; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Quill; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editor */ \\\"./core/editor.js\\\");\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _instances__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./theme */ \\\"./core/theme.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"])('quill');\\nconst globalRegistry = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Registry\\\"]();\\nparchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ParentBlot\\\"].uiClass = 'ql-ui';\\n\\nclass Quill {\\n static debug(limit) {\\n if (limit === true) {\\n limit = 'log';\\n }\\n\\n _logger__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"].level(limit);\\n }\\n\\n static find(node) {\\n return _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].get(node) || globalRegistry.find(node);\\n }\\n\\n static import(name) {\\n if (this.imports[name] == null) {\\n debug.error(\\\"Cannot import \\\".concat(name, \\\". Are you sure it was registered?\\\"));\\n }\\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\\n if (typeof name === 'string') {\\n // register(Blot | Attributor, overwrite)\\n this.register(\\\"formats/\\\".concat(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 \\\".concat(path, \\\" with\\\"), target);\\n }\\n\\n this.imports[path] = target;\\n\\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\\n globalRegistry.register(target);\\n }\\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\\n if (this.container == null) {\\n return debug.error('Invalid Quill container', container);\\n }\\n\\n if (this.options.debug) {\\n Quill.debug(this.options.debug);\\n }\\n\\n const html = this.container.innerHTML.trim();\\n this.container.classList.add('ql-container');\\n this.container.innerHTML = '';\\n _instances__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"].set(this.container, this);\\n this.root = this.addContainer('ql-editor');\\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 _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]();\\n const ScrollBlot = this.options.registry.query(parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ScrollBlot\\\"].blotName);\\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\\n emitter: this.emitter\\n });\\n this.editor = new _editor__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](this.scroll);\\n this.selection = new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"](this.scroll, this.emitter);\\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, type => {\\n if (type === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE) {\\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.SCROLL_UPDATE, (source, mutations) => {\\n const oldRange = this.selection.lastRange;\\n const [newRange] = this.selection.getRange();\\n const selectionInfo = oldRange && newRange ? {\\n oldRange,\\n newRange\\n } : undefined;\\n modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\\n });\\n const contents = this.clipboard.convert({\\n html: \\\"\\\".concat(html, \\\"


    \\\"),\\n text: '\\\\n'\\n });\\n this.setContents(contents);\\n this.history.clear();\\n\\n if (this.options.placeholder) {\\n this.root.setAttribute('data-placeholder', this.options.placeholder);\\n }\\n\\n if (this.options.readOnly) {\\n this.disable();\\n }\\n\\n this.allowReadOnlyEdits = false;\\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\\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 [index, length,, source] = overload(index, length, source);\\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 editReadOnly(modifier) {\\n this.allowReadOnlyEdits = true;\\n const value = modifier();\\n this.allowReadOnlyEdits = false;\\n return value;\\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 {\\n scrollTop\\n } = this.scrollingContainer;\\n this.selection.focus();\\n this.scrollingContainer.scrollTop = scrollTop;\\n this.scrollIntoView();\\n }\\n\\n format(name, value, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n const range = this.getSelection(true);\\n let change = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n if (range == null) return change;\\n\\n if (this.scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n return change;\\n }, source);\\n }\\n\\n formatLine(index, length, name, value, source) {\\n let formats; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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; // eslint-disable-next-line prefer-const\\n\\n [index, length, formats, source] = overload(index, length, name, value, source);\\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\\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\\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 [index, length] = overload(index, length);\\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\\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\\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\\n return this.selection.getRange()[0];\\n }\\n\\n getSemanticHTML(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\n return this.editor.getHTML(index, length);\\n }\\n\\n getText(index = 0, length = this.getLength() - index) {\\n [index, length] = overload(index, length);\\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; // eslint-disable-next-line prefer-const\\n\\n [index,, formats, source] = overload(index, 0, name, value, source);\\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.scroll.isEnabled();\\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 [index, length,, source] = overload(index, length, source);\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(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\\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\\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 [index, length,, source] = overload(index, length, source);\\n this.selection.setRange(new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](Math.max(0, index), length), source);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.selection.scrollIntoView(this.scrollingContainer);\\n }\\n }\\n }\\n\\n setText(text, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().insert(text);\\n return this.setContents(delta, source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) {\\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\\n\\n this.selection.update(source); // TODO this is usually undefined\\n\\n return change;\\n }\\n\\n updateContents(delta, source = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n return modify.call(this, () => {\\n delta = new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a(delta);\\n return this.editor.applyDelta(delta, source);\\n }, source, true);\\n }\\n\\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 = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events;\\nQuill.sources = _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources; // eslint-disable-next-line no-undef\\n\\nQuill.version = false ? undefined : \\\"2.0.0-dev.3\\\";\\nQuill.imports = {\\n delta: quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a,\\n parchment: parchment__WEBPACK_IMPORTED_MODULE_1__,\\n 'core/module': _module__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'core/theme': _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]\\n};\\n\\nfunction expandConfig(container, userConfig) {\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {\\n container,\\n modules: {\\n clipboard: true,\\n keyboard: true,\\n history: true,\\n uploader: true\\n }\\n }, userConfig);\\n\\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\\n userConfig.theme = _theme__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"];\\n } else {\\n userConfig.theme = Quill.import(\\\"themes/\\\".concat(userConfig.theme));\\n\\n if (userConfig.theme == null) {\\n throw new Error(\\\"Invalid theme \\\".concat(userConfig.theme, \\\". Did you register it?\\\"));\\n }\\n }\\n\\n const themeConfig = extend__WEBPACK_IMPORTED_MODULE_2___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/\\\".concat(name));\\n\\n if (moduleClass == null) {\\n debug.error(\\\"Cannot load \\\".concat(name, \\\" module. Are you sure you registered it?\\\"));\\n } else {\\n config[name] = moduleClass.DEFAULTS || {};\\n }\\n\\n return config;\\n }, {}); // Special case toolbar shorthand\\n\\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\\n userConfig = extend__WEBPACK_IMPORTED_MODULE_2___default()(true, {}, Quill.DEFAULTS, {\\n modules: moduleConfig\\n }, 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\\n return config;\\n }, {});\\n return userConfig;\\n} // Handle selection preservation and TEXT_CHANGE emission\\n// common to modification APIs\\n\\n\\nfunction modify(modifier, source, index, shift) {\\n if (!this.isEnabled() && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER && !this.allowReadOnlyEdits) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a();\\n }\\n\\n let range = index == null ? null : this.getSelection();\\n const oldDelta = this.editor.delta;\\n const change = modifier();\\n\\n if (range != null) {\\n if (index === true) {\\n index = range.index; // eslint-disable-line prefer-destructuring\\n }\\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\\n this.setSelection(range, _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n if (change.length() > 0) {\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.TEXT_CHANGE, change, oldDelta, source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\n }\\n\\n return change;\\n}\\n\\nfunction overload(index, length, name, value, source) {\\n let formats = {};\\n\\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\\n index = index.index; // eslint-disable-line prefer-destructuring\\n } else {\\n length = index.length; // eslint-disable-line prefer-destructuring\\n\\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 } // Handle format being object, two format name/value strings or excluded\\n\\n\\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 } // Handle optional source\\n\\n\\n source = source || _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (index instanceof quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a) {\\n [start, end] = [range.index, range.index + range.length].map(pos => index.transformPosition(pos, source !== _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER));\\n } else {\\n [start, end] = [range.index, range.index + range.length].map(pos => {\\n if (pos < index || pos === index && source === _emitter__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER) return pos;\\n\\n if (length >= 0) {\\n return pos + length;\\n }\\n\\n return Math.max(index, pos + length);\\n });\\n }\\n\\n return new _selection__WEBPACK_IMPORTED_MODULE_6__[\\\"Range\\\"](start, end - start);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/quill.js?\");\n\n/***/ }),\n\n/***/ \"./core/selection.js\":\n/*!***************************!*\\\n !*** ./core/selection.js ***!\n \\***************************/\n/*! exports provided: Range, 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__, \\\"Range\\\", function() { return Range; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Selection; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_logger__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"])('quill:selection');\\n\\nclass Range {\\n constructor(index, length = 0) {\\n this.index = index;\\n this.length = length;\\n }\\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); // savedRange is last non-null range\\n\\n this.savedRange = new Range(0, 0);\\n this.lastRange = this.savedRange;\\n this.lastNative = null;\\n this.handleComposition();\\n this.handleDragging();\\n this.emitter.listenDOM('selectionchange', document, () => {\\n if (!this.mouseDown && !this.composing) {\\n setTimeout(this.update.bind(this, _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER), 1);\\n }\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.emitter.once(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_UPDATE, () => {\\n try {\\n if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\\n }\\n\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n } catch (ignored) {// ignore\\n }\\n });\\n });\\n this.emitter.on(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SCROLL_OPTIMIZE, (mutations, context) => {\\n if (context.range) {\\n const {\\n startNode,\\n startOffset,\\n endNode,\\n endOffset\\n } = context.range;\\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n });\\n this.update(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n handleComposition() {\\n this.root.addEventListener('compositionstart', () => {\\n this.composing = true;\\n this.scroll.batchStart();\\n });\\n this.root.addEventListener('compositionend', () => {\\n this.scroll.batchEnd();\\n this.composing = false;\\n\\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(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"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__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK)) return;\\n\\n if (nativeRange.start.node !== this.cursor.textNode) {\\n const blot = this.scroll.find(nativeRange.start.node, false);\\n if (blot == null) return; // TODO Give blot ability to not split\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n this.cursor.attach();\\n }\\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 let [leaf, offset] = this.scroll.leaf(index);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n const range = document.createRange();\\n\\n if (length > 0) {\\n range.setStart(node, offset);\\n [leaf, offset] = this.scroll.leaf(index + length);\\n if (leaf == null) return null;\\n [node, offset] = leaf.position(offset, true);\\n range.setEnd(node, offset);\\n return range.getBoundingClientRect();\\n }\\n\\n let side = 'left';\\n let rect;\\n\\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\\n rect = range.getBoundingClientRect();\\n } else {\\n rect = leaf.domNode.getBoundingClientRect();\\n if (offset > 0) side = 'right';\\n }\\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\\n if (!range.native.collapsed) {\\n positions.push([range.end.node, range.end.offset]);\\n }\\n\\n const indexes = positions.map(position => {\\n const [node, offset] = position;\\n const blot = this.scroll.find(node, true);\\n const index = blot.offset(this.scroll);\\n\\n if (offset === 0) {\\n return index;\\n }\\n\\n if (blot instanceof parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"LeafBlot\\\"]) {\\n return index + blot.index(node, offset);\\n }\\n\\n return index + blot.length();\\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\\n const range = {\\n start: {\\n node: nativeRange.startContainer,\\n offset: nativeRange.startOffset\\n },\\n end: {\\n node: nativeRange.endContainer,\\n offset: nativeRange.endOffset\\n },\\n native: nativeRange\\n };\\n [range.start, range.end].forEach(position => {\\n let {\\n node,\\n offset\\n } = position;\\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\\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\\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 const [leaf, leafOffset] = this.scroll.leaf(index);\\n const [node, offset] = leaf.position(leafOffset, i !== 0);\\n args.push(node, offset);\\n });\\n\\n if (args.length < 2) {\\n return args.concat(args);\\n }\\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 const [first] = this.scroll.line(Math.min(range.index, limit));\\n let last = first;\\n\\n if (range.length > 0) {\\n [last] = this.scroll.line(Math.min(range.index + range.length, limit));\\n }\\n\\n if (first == null || last == null) return;\\n const scrollBounds = scrollingContainer.getBoundingClientRect();\\n\\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\\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\\n return;\\n }\\n\\n const selection = document.getSelection();\\n if (selection == null) return;\\n\\n if (startNode != null) {\\n if (!this.hasFocus()) this.root.focus();\\n const {\\n native\\n } = this.getNativeRange() || {};\\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\\n if (endNode.tagName === 'BR') {\\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\\n endNode = endNode.parentNode;\\n }\\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 = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.API) {\\n if (typeof force === 'string') {\\n source = force;\\n force = false;\\n }\\n\\n debug.info('setRange', range);\\n\\n if (range != null) {\\n const args = this.rangeToNative(range);\\n this.setNativeRange(...args, force);\\n } else {\\n this.setNativeRange(null);\\n }\\n\\n this.update(source);\\n }\\n\\n update(source = _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.USER) {\\n const oldRange = this.lastRange;\\n const [lastRange, nativeRange] = this.getRange();\\n this.lastRange = lastRange;\\n this.lastNative = nativeRange;\\n\\n if (this.lastRange != null) {\\n this.savedRange = this.lastRange;\\n }\\n\\n if (!deep_equal__WEBPACK_IMPORTED_MODULE_2___default()(oldRange, this.lastRange)) {\\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\\n const range = this.cursor.restore();\\n\\n if (range) {\\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\\n }\\n }\\n\\n const args = [_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.SELECTION_CHANGE, clone__WEBPACK_IMPORTED_MODULE_1___default()(this.lastRange), clone__WEBPACK_IMPORTED_MODULE_1___default()(oldRange), source];\\n this.emitter.emit(_emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].events.EDITOR_CHANGE, ...args);\\n\\n if (source !== _emitter__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\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\\n return parent.contains(descendant);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./core/selection.js?\");\n\n/***/ }),\n\n/***/ \"./core/theme.js\":\n/*!***********************!*\\\n !*** ./core/theme.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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/\\\".concat(name));\\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\\n return this.modules[name];\\n }\\n\\n}\\n\\nTheme.DEFAULTS = {\\n modules: {}\\n};\\nTheme.themes = {\\n default: Theme\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Theme);\\n\\n//# sourceURL=webpack://Quill/./core/theme.js?\");\n\n/***/ }),\n\n/***/ \"./formats/align.js\":\n/*!**************************!*\\\n !*** ./formats/align.js ***!\n \\**************************/\n/*! exports provided: AlignAttribute, AlignClass, AlignStyle */\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__, \\\"AlignAttribute\\\", function() { return AlignAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignClass\\\", function() { return AlignClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"AlignStyle\\\", function() { return AlignStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['right', 'center', 'justify']\\n};\\nconst AlignAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('align', 'align', config);\\nconst AlignClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('align', 'ql-align', config);\\nconst AlignStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('align', 'text-align', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/align.js?\");\n\n/***/ }),\n\n/***/ \"./formats/background.js\":\n/*!*******************************!*\\\n !*** ./formats/background.js ***!\n \\*******************************/\n/*! exports provided: BackgroundClass, BackgroundStyle */\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__, \\\"BackgroundClass\\\", function() { return BackgroundClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"BackgroundStyle\\\", function() { return BackgroundStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \\\"./formats/color.js\\\");\\n\\n\\nconst BackgroundClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('background', 'ql-bg', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst BackgroundStyle = new _color__WEBPACK_IMPORTED_MODULE_1__[\\\"ColorAttributor\\\"]('background', 'background-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/background.js?\");\n\n/***/ }),\n\n/***/ \"./formats/blockquote.js\":\n/*!*******************************!*\\\n !*** ./formats/blockquote.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Blockquote extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nBlockquote.blotName = 'blockquote';\\nBlockquote.tagName = 'blockquote';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Blockquote);\\n\\n//# sourceURL=webpack://Quill/./formats/blockquote.js?\");\n\n/***/ }),\n\n/***/ \"./formats/bold.js\":\n/*!*************************!*\\\n !*** ./formats/bold.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Bold extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (this.domNode.tagName !== this.statics.tagName[0]) {\\n this.replaceWith(this.statics.blotName);\\n }\\n }\\n\\n}\\n\\nBold.blotName = 'bold';\\nBold.tagName = ['STRONG', 'B'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Bold);\\n\\n//# sourceURL=webpack://Quill/./formats/bold.js?\");\n\n/***/ }),\n\n/***/ \"./formats/code.js\":\n/*!*************************!*\\\n !*** ./formats/code.js ***!\n \\*************************/\n/*! exports provided: Code, CodeBlockContainer, 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__, \\\"Code\\\", function() { return Code; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeBlockContainer\\\", function() { return CodeBlockContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return CodeBlock; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nclass CodeBlockContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_5__[\\\"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 text = this.children.map(child => child.domNode.innerText).join('\\\\n').slice(index, index + length);\\n return \\\"
    \\\".concat(Object(_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"escapeText\\\"])(text), \\\"
    \\\");\\n }\\n\\n}\\n\\nclass CodeBlock extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"].register(CodeBlockContainer);\\n }\\n\\n}\\n\\nclass Code extends _blots_inline__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"] {}\\n\\nCode.blotName = 'code';\\nCode.tagName = 'CODE';\\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';\\nCodeBlockContainer.allowedChildren = [CodeBlock];\\nCodeBlock.allowedChildren = [_blots_text__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"], _blots_cursor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nCodeBlock.requiredContainer = CodeBlockContainer;\\nCodeBlock.TAB = ' ';\\n\\n\\n//# sourceURL=webpack://Quill/./formats/code.js?\");\n\n/***/ }),\n\n/***/ \"./formats/color.js\":\n/*!**************************!*\\\n !*** ./formats/color.js ***!\n \\**************************/\n/*! exports provided: ColorAttributor, ColorClass, ColorStyle */\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__, \\\"ColorAttributor\\\", function() { return ColorAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorClass\\\", function() { return ColorClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ColorStyle\\\", function() { return ColorStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass ColorAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\\".concat(parseInt(component, 10).toString(16)).slice(-2)).join('');\\n return \\\"#\\\".concat(hex);\\n }\\n\\n}\\n\\nconst ColorClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('color', 'ql-color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\nconst ColorStyle = new ColorAttributor('color', 'color', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/color.js?\");\n\n/***/ }),\n\n/***/ \"./formats/direction.js\":\n/*!******************************!*\\\n !*** ./formats/direction.js ***!\n \\******************************/\n/*! exports provided: DirectionAttribute, DirectionClass, DirectionStyle */\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__, \\\"DirectionAttribute\\\", function() { return DirectionAttribute; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionClass\\\", function() { return DirectionClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DirectionStyle\\\", function() { return DirectionStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: ['rtl']\\n};\\nconst DirectionAttribute = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Attributor\\\"]('direction', 'dir', config);\\nconst DirectionClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('direction', 'ql-direction', config);\\nconst DirectionStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('direction', 'direction', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/direction.js?\");\n\n/***/ }),\n\n/***/ \"./formats/font.js\":\n/*!*************************!*\\\n !*** ./formats/font.js ***!\n \\*************************/\n/*! exports provided: FontStyle, FontClass */\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__, \\\"FontStyle\\\", function() { return FontStyle; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"FontClass\\\", function() { return FontClass; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['serif', 'monospace']\\n};\\nconst FontClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('font', 'ql-font', config);\\n\\nclass FontStyleAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"] {\\n value(node) {\\n return super.value(node).replace(/[\\\"']/g, '');\\n }\\n\\n}\\n\\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\\n\\n\\n//# sourceURL=webpack://Quill/./formats/font.js?\");\n\n/***/ }),\n\n/***/ \"./formats/formula.js\":\n/*!****************************!*\\\n !*** ./formats/formula.js ***!\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 _blots_embed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/embed */ \\\"./blots/embed.js\\\");\\n\\n\\nclass Formula extends _blots_embed__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (window.katex == null) {\\n throw new Error('Formula module requires KaTeX.');\\n }\\n\\n const node = super.create(value);\\n\\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\\n return node;\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('data-value');\\n }\\n\\n html() {\\n const {\\n formula\\n } = this.value();\\n return \\\"\\\".concat(formula, \\\"\\\");\\n }\\n\\n}\\n\\nFormula.blotName = 'formula';\\nFormula.className = 'ql-formula';\\nFormula.tagName = 'SPAN';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Formula);\\n\\n//# sourceURL=webpack://Quill/./formats/formula.js?\");\n\n/***/ }),\n\n/***/ \"./formats/header.js\":\n/*!***************************!*\\\n !*** ./formats/header.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\n\\nclass Header extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static formats(domNode) {\\n return this.tagName.indexOf(domNode.tagName) + 1;\\n }\\n\\n}\\n\\nHeader.blotName = 'header';\\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Header);\\n\\n//# sourceURL=webpack://Quill/./formats/header.js?\");\n\n/***/ }),\n\n/***/ \"./formats/image.js\":\n/*!**************************!*\\\n !*** ./formats/image.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['alt', 'height', 'width'];\\n\\nclass Image extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"EmbedBlot\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n\\n if (typeof value === 'string') {\\n node.setAttribute('src', this.sanitize(value));\\n }\\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\\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 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 Object(_link__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n}\\n\\nImage.blotName = 'image';\\nImage.tagName = 'IMG';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Image);\\n\\n//# sourceURL=webpack://Quill/./formats/image.js?\");\n\n/***/ }),\n\n/***/ \"./formats/indent.js\":\n/*!***************************!*\\\n !*** ./formats/indent.js ***!\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 parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\n\\nclass IndentAttributor extends parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n if (value === 0) {\\n this.remove(node);\\n return true;\\n }\\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}\\n\\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK,\\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\\n});\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (IndentClass);\\n\\n//# sourceURL=webpack://Quill/./formats/indent.js?\");\n\n/***/ }),\n\n/***/ \"./formats/italic.js\":\n/*!***************************!*\\\n !*** ./formats/italic.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Italic extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nItalic.blotName = 'italic';\\nItalic.tagName = ['EM', 'I'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Italic);\\n\\n//# sourceURL=webpack://Quill/./formats/italic.js?\");\n\n/***/ }),\n\n/***/ \"./formats/link.js\":\n/*!*************************!*\\\n !*** ./formats/link.js ***!\n \\*************************/\n/*! exports provided: default, sanitize */\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 Link; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"sanitize\\\", function() { return sanitize; });\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Link extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create(value);\\n node.setAttribute('href', this.sanitize(value));\\n node.setAttribute('rel', 'noopener noreferrer');\\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\\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\\n\\n\\n//# sourceURL=webpack://Quill/./formats/link.js?\");\n\n/***/ }),\n\n/***/ \"./formats/list.js\":\n/*!*************************!*\\\n !*** ./formats/list.js ***!\n \\*************************/\n/*! exports provided: ListContainer, 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__, \\\"ListContainer\\\", function() { return ListContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return ListItem; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\n\\n\\n\\nclass ListContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nListContainer.blotName = 'list-container';\\nListContainer.tagName = 'OL';\\n\\nclass ListItem extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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 _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].register(ListContainer);\\n }\\n\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n const ui = domNode.ownerDocument.createElement('span');\\n\\n const listEventHandler = e => {\\n if (!scroll.isEnabled()) return;\\n const format = this.statics.formats(domNode, scroll);\\n\\n if (format === 'checked') {\\n this.format('list', 'unchecked');\\n e.preventDefault();\\n } else if (format === 'unchecked') {\\n this.format('list', 'checked');\\n e.preventDefault();\\n }\\n };\\n\\n ui.addEventListener('mousedown', listEventHandler);\\n ui.addEventListener('touchstart', listEventHandler);\\n this.attachUI(ui);\\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\\n}\\n\\nListItem.blotName = 'list';\\nListItem.tagName = 'LI';\\nListContainer.allowedChildren = [ListItem];\\nListItem.requiredContainer = ListContainer;\\n\\n\\n//# sourceURL=webpack://Quill/./formats/list.js?\");\n\n/***/ }),\n\n/***/ \"./formats/script.js\":\n/*!***************************!*\\\n !*** ./formats/script.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Script extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n if (value === 'super') {\\n return document.createElement('sup');\\n }\\n\\n if (value === 'sub') {\\n return document.createElement('sub');\\n }\\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\\n}\\n\\nScript.blotName = 'script';\\nScript.tagName = ['SUB', 'SUP'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Script);\\n\\n//# sourceURL=webpack://Quill/./formats/script.js?\");\n\n/***/ }),\n\n/***/ \"./formats/size.js\":\n/*!*************************!*\\\n !*** ./formats/size.js ***!\n \\*************************/\n/*! exports provided: SizeClass, SizeStyle */\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__, \\\"SizeClass\\\", function() { return SizeClass; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SizeStyle\\\", function() { return SizeStyle; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst SizeClass = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"ClassAttributor\\\"]('size', 'ql-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['small', 'large', 'huge']\\n});\\nconst SizeStyle = new parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"StyleAttributor\\\"]('size', 'font-size', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].INLINE,\\n whitelist: ['10px', '18px', '32px']\\n});\\n\\n\\n//# sourceURL=webpack://Quill/./formats/size.js?\");\n\n/***/ }),\n\n/***/ \"./formats/strike.js\":\n/*!***************************!*\\\n !*** ./formats/strike.js ***!\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 _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\n\\nclass Strike extends _bold__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nStrike.blotName = 'strike';\\nStrike.tagName = ['S', 'STRIKE'];\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Strike);\\n\\n//# sourceURL=webpack://Quill/./formats/strike.js?\");\n\n/***/ }),\n\n/***/ \"./formats/table.js\":\n/*!**************************!*\\\n !*** ./formats/table.js ***!\n \\**************************/\n/*! exports provided: TableCell, TableRow, TableBody, TableContainer, tableId */\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__, \\\"TableCell\\\", function() { return TableCell; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableRow\\\", function() { return TableRow; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableBody\\\", function() { return TableBody; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"TableContainer\\\", function() { return TableContainer; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"tableId\\\", function() { return tableId; });\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\n\\n\\nclass TableCell extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static create(value) {\\n const node = super.create();\\n\\n if (value) {\\n node.setAttribute('data-row', value);\\n } else {\\n node.setAttribute('data-row', tableId());\\n }\\n\\n return node;\\n }\\n\\n static formats(domNode) {\\n if (domNode.hasAttribute('data-row')) {\\n return domNode.getAttribute('data-row');\\n }\\n\\n return undefined;\\n }\\n\\n cellOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\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 row() {\\n return this.parent;\\n }\\n\\n rowOffset() {\\n if (this.row()) {\\n return this.row().rowOffset();\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.row() && this.row().table();\\n }\\n\\n}\\n\\nTableCell.blotName = 'table';\\nTableCell.tagName = 'TD';\\n\\nclass TableRow extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (childFormats.table !== nextFormats.table) {\\n const next = this.splitAfter(child);\\n\\n if (next) {\\n next.optimize();\\n } // We might be able to merge with prev now\\n\\n\\n if (this.prev) {\\n this.prev.optimize();\\n }\\n }\\n });\\n }\\n\\n rowOffset() {\\n if (this.parent) {\\n return this.parent.children.indexOf(this);\\n }\\n\\n return -1;\\n }\\n\\n table() {\\n return this.parent && this.parent.parent;\\n }\\n\\n}\\n\\nTableRow.blotName = 'table-row';\\nTableRow.tagName = 'TR';\\n\\nclass TableBody extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {}\\n\\nTableBody.blotName = 'table-body';\\nTableBody.tagName = 'TBODY';\\n\\nclass TableContainer extends _blots_container__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\n if (row.children.head != null) {\\n value = TableCell.formats(row.children.head.domNode);\\n }\\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 cells(column) {\\n return this.rows().map(row => row.children.at(column));\\n }\\n\\n deleteColumn(index) {\\n const [body] = this.descendant(TableBody);\\n if (body == null || body.children.head == null) return;\\n body.children.forEach(row => {\\n const cell = row.children.at(index);\\n\\n if (cell != null) {\\n cell.remove();\\n }\\n });\\n }\\n\\n insertColumn(index) {\\n const [body] = this.descendant(TableBody);\\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 const [body] = this.descendant(TableBody);\\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\\n rows() {\\n const body = this.children.head;\\n if (body == null) return [];\\n return body.children.map(row => row);\\n }\\n\\n}\\n\\nTableContainer.blotName = 'table-container';\\nTableContainer.tagName = 'TABLE';\\nTableContainer.allowedChildren = [TableBody];\\nTableBody.requiredContainer = TableContainer;\\nTableBody.allowedChildren = [TableRow];\\nTableRow.requiredContainer = TableBody;\\nTableRow.allowedChildren = [TableCell];\\nTableCell.requiredContainer = TableRow;\\n\\nfunction tableId() {\\n const id = Math.random().toString(36).slice(2, 6);\\n return \\\"row-\\\".concat(id);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./formats/table.js?\");\n\n/***/ }),\n\n/***/ \"./formats/underline.js\":\n/*!******************************!*\\\n !*** ./formats/underline.js ***!\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 _blots_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\n\\nclass Underline extends _blots_inline__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {}\\n\\nUnderline.blotName = 'underline';\\nUnderline.tagName = 'U';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Underline);\\n\\n//# sourceURL=webpack://Quill/./formats/underline.js?\");\n\n/***/ }),\n\n/***/ \"./formats/video.js\":\n/*!**************************!*\\\n !*** ./formats/video.js ***!\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 _blots_block__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./link */ \\\"./formats/link.js\\\");\\n\\n\\nconst ATTRIBUTES = ['height', 'width'];\\n\\nclass Video extends _blots_block__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\n return formats;\\n }, {});\\n }\\n\\n static sanitize(url) {\\n return _link__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const {\\n video\\n } = this.value();\\n return \\\"
    \\\").concat(video, \\\"\\\");\\n }\\n\\n}\\n\\nVideo.blotName = 'video';\\nVideo.className = 'ql-video';\\nVideo.tagName = 'IFRAME';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Video);\\n\\n//# sourceURL=webpack://Quill/./formats/video.js?\");\n\n/***/ }),\n\n/***/ \"./modules/clipboard.js\":\n/*!******************************!*\\\n !*** ./modules/clipboard.js ***!\n \\******************************/\n/*! exports provided: default, matchAttributor, matchBlot, matchNewline, matchText, traverse */\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 Clipboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchAttributor\\\", function() { return matchAttributor; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchBlot\\\", function() { return matchBlot; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchNewline\\\", function() { return matchNewline; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"matchText\\\", function() { return matchText; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"traverse\\\", function() { return traverse; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../formats/size */ \\\"./formats/size.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"])('quill:clipboard');\\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')], ['strike', matchAlias.bind(matchAlias, 'strike')], ['style', matchIgnore]];\\nconst ATTRIBUTE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignAttribute\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionAttribute\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\nconst STYLE_ATTRIBUTORS = [_formats_align__WEBPACK_IMPORTED_MODULE_7__[\\\"AlignStyle\\\"], _formats_background__WEBPACK_IMPORTED_MODULE_8__[\\\"BackgroundStyle\\\"], _formats_color__WEBPACK_IMPORTED_MODULE_10__[\\\"ColorStyle\\\"], _formats_direction__WEBPACK_IMPORTED_MODULE_11__[\\\"DirectionStyle\\\"], _formats_font__WEBPACK_IMPORTED_MODULE_12__[\\\"FontStyle\\\"], _formats_size__WEBPACK_IMPORTED_MODULE_13__[\\\"SizeStyle\\\"]].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\n\\nclass Clipboard extends _core_module__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.quill.root.addEventListener('copy', e => this.onCaptureCopy(e, false));\\n this.quill.root.addEventListener('cut', e => this.onCaptureCopy(e, true));\\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({\\n html,\\n text\\n }, formats = {}) {\\n if (formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text, {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: formats[_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]\\n });\\n }\\n\\n if (!html) {\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(text || '');\\n }\\n\\n const doc = new DOMParser().parseFromString(html, 'text/html');\\n const container = doc.body;\\n const nodeMatches = new WeakMap();\\n const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\\n const delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches); // Remove trailing newline\\n\\n if (deltaEndsWith(delta, '\\\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(delta.length() - 1).delete(1));\\n }\\n\\n return delta;\\n }\\n\\n dangerouslyPasteHTML(index, html, source = _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.API) {\\n if (typeof index === 'string') {\\n const delta = this.convert({\\n html: index,\\n text: ''\\n });\\n this.quill.setContents(delta, html);\\n this.quill.setSelection(0, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n } else {\\n const paste = this.convert({\\n html,\\n text: ''\\n });\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(index).concat(paste), source);\\n this.quill.setSelection(index + paste.length(), _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n onCaptureCopy(e, isCut = false) {\\n if (e.defaultPrevented) return;\\n e.preventDefault();\\n const [range] = this.quill.selection.getRange();\\n if (range == null) return;\\n const {\\n html,\\n text\\n } = this.onCopy(range, isCut);\\n e.clipboardData.setData('text/plain', text);\\n e.clipboardData.setData('text/html', html);\\n\\n if (isCut) {\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n onCapturePaste(e) {\\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\\n e.preventDefault();\\n const range = this.quill.getSelection(true);\\n if (range == null) return;\\n const html = e.clipboardData.getData('text/html');\\n const text = e.clipboardData.getData('text/plain');\\n const files = Array.from(e.clipboardData.files || []);\\n\\n if (!html && files.length > 0) {\\n this.quill.uploader.upload(range, files);\\n } else {\\n this.onPaste(range, {\\n html,\\n text\\n });\\n }\\n }\\n\\n onCopy(range) {\\n const text = this.quill.getText(range);\\n const html = this.quill.getSemanticHTML(range);\\n return {\\n html,\\n text\\n };\\n }\\n\\n onPaste(range, {\\n text,\\n html\\n }) {\\n const formats = this.quill.getFormat(range.index);\\n const pastedDelta = this.convert({\\n text,\\n html\\n }, formats);\\n debug.log('onPaste', pastedDelta, {\\n text,\\n html\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().retain(range.index).delete(range.length).concat(pastedDelta);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].sources.USER); // range.length contributes to delta.length()\\n\\n this.quill.setSelection(delta.length() - range.length, _core_quill__WEBPACK_IMPORTED_MODULE_4__[\\\"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 const [selector, matcher] = pair;\\n\\n switch (selector) {\\n case Node.TEXT_NODE:\\n textMatchers.push(matcher);\\n break;\\n\\n case Node.ELEMENT_NODE:\\n elementMatchers.push(matcher);\\n break;\\n\\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\\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\\n return delta.reduce((newDelta, op) => {\\n if (op.attributes && op.attributes[format]) {\\n return newDelta.push(op);\\n }\\n\\n return newDelta.insert(op.insert, extend__WEBPACK_IMPORTED_MODULE_0___default()({}, {\\n [format]: value\\n }, op.attributes));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n}\\n\\nfunction deltaEndsWith(delta, text) {\\n let endText = '';\\n\\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\\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\\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();\\n\\nfunction isPre(node) {\\n if (node == null) return false;\\n\\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\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n 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\\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\\n return delta.concat(childrenDelta);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\n }\\n\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchAlias(format, node, delta) {\\n return applyFormat(delta, format, true);\\n}\\n\\nfunction matchAttributor(node, delta, scroll) {\\n const attributes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Attributor\\\"].keys(node);\\n const classes = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"ClassAttributor\\\"].keys(node);\\n const styles = parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"StyleAttributor\\\"].keys(node);\\n const formats = {};\\n attributes.concat(classes).concat(styles).forEach(name => {\\n let attr = scroll.query(name, parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"Scope\\\"].ATTRIBUTE);\\n\\n if (attr != null) {\\n formats[attr.attrName] = attr.value(node);\\n if (formats[attr.attrName]) return;\\n }\\n\\n attr = ATTRIBUTE_ATTRIBUTORS[name];\\n\\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\\n formats[attr.attrName] = attr.value(node) || undefined;\\n }\\n\\n attr = STYLE_ATTRIBUTORS[name];\\n\\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\\n if (Object.keys(formats).length > 0) {\\n return applyFormat(delta, formats);\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBlot(node, delta, scroll) {\\n const match = scroll.query(node);\\n if (match == null) return delta;\\n\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"EmbedBlot\\\"]) {\\n const embed = {};\\n const value = match.value(node);\\n\\n if (value != null) {\\n embed[match.blotName] = value;\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert(embed, match.formats(node, scroll));\\n }\\n } else {\\n if (match.prototype instanceof parchment__WEBPACK_IMPORTED_MODULE_2__[\\\"BlockBlot\\\"] && !deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\n }\\n\\n if (typeof match.formats === 'function') {\\n return applyFormat(delta, match.blotName, match.formats(node, scroll));\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchBreak(node, delta) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\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 quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a();\\n}\\n\\nfunction matchIndent(node, delta, scroll) {\\n const match = scroll.query(node);\\n\\n if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\\\n')) {\\n return delta;\\n }\\n\\n let indent = -1;\\n let parent = node.parentNode;\\n\\n while (parent != null) {\\n if (['OL', 'UL'].includes(parent.tagName)) {\\n indent += 1;\\n }\\n\\n parent = parent.parentNode;\\n }\\n\\n if (indent <= 0) return delta;\\n return delta.reduce((composed, op) => {\\n if (op.attributes && op.attributes.list) {\\n return composed.push(op);\\n }\\n\\n return composed.insert(op.insert, {\\n indent,\\n ...(op.attributes || {})\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a());\\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, scroll) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n if (isLine(node)) {\\n return delta.insert('\\\\n');\\n }\\n\\n if (delta.length() > 0 && node.nextSibling) {\\n let {\\n nextSibling\\n } = node;\\n\\n while (nextSibling != null) {\\n if (isLine(nextSibling)) {\\n return delta.insert('\\\\n');\\n }\\n\\n const match = scroll.query(nextSibling);\\n\\n if (match && match.prototype instanceof _blots_block__WEBPACK_IMPORTED_MODULE_3__[\\\"BlockEmbed\\\"]) {\\n return delta.insert('\\\\n');\\n }\\n\\n nextSibling = nextSibling.firstChild;\\n }\\n }\\n }\\n\\n return delta;\\n}\\n\\nfunction matchStyles(node, delta) {\\n const formats = {};\\n const style = node.style || {};\\n\\n if (style.fontStyle === 'italic') {\\n formats.italic = true;\\n }\\n\\n if (style.textDecoration === 'underline') {\\n formats.underline = true;\\n }\\n\\n if (style.textDecoration === 'line-through') {\\n formats.strike = true;\\n }\\n\\n if (style.fontWeight.startsWith('bold') || parseInt(style.fontWeight, 10) >= 700) {\\n formats.bold = true;\\n }\\n\\n if (Object.keys(formats).length > 0) {\\n delta = applyFormat(delta, formats);\\n }\\n\\n if (parseFloat(style.textIndent || 0) > 0) {\\n // Could be 0.5in\\n return new quill_delta__WEBPACK_IMPORTED_MODULE_1___default.a().insert('\\\\t').concat(delta);\\n }\\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; // Word represents empty line with  \\n\\n if (node.parentNode.tagName === 'O:P') {\\n return delta.insert(text.trim());\\n }\\n\\n if (text.trim().length === 0 && text.includes('\\\\n')) {\\n return delta;\\n }\\n\\n if (!isPre(node)) {\\n const replacer = (collapse, match) => {\\n const replaced = match.replace(/[^\\\\u00a0]/g, ''); // \\\\u00a0 is nbsp;\\n\\n return replaced.length < 1 && collapse ? ' ' : replaced;\\n };\\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\\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\\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\\n return delta.insert(text);\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/clipboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/history.js\":\n/*!****************************!*\\\n !*** ./modules/history.js ***!\n \\****************************/\n/*! exports provided: default, getLastChangeIndex */\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 History; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getLastChangeIndex\\\", function() { return getLastChangeIndex; });\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass History extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n this.lastRecorded = 0;\\n this.ignoreChange = false;\\n this.clear();\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\\n if (eventName !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE || this.ignoreChange) return;\\n\\n if (!this.options.userOnly || source === _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.record(delta, oldDelta);\\n } else {\\n this.transform(delta);\\n }\\n });\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true\\n }, this.undo.bind(this));\\n this.quill.keyboard.addBinding({\\n key: 'z',\\n shortKey: true,\\n shiftKey: true\\n }, this.redo.bind(this));\\n\\n if (/Win/i.test(navigator.platform)) {\\n this.quill.keyboard.addBinding({\\n key: 'y',\\n shortKey: true\\n }, 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 const base = this.quill.getContents();\\n const inverseDelta = delta.invert(base);\\n this.stack[dest].push(inverseDelta);\\n this.lastRecorded = 0;\\n this.ignoreChange = true;\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.ignoreChange = false;\\n const index = getLastChangeIndex(this.quill.scroll, delta);\\n this.quill.setSelection(index);\\n }\\n\\n clear() {\\n this.stack = {\\n undo: [],\\n redo: []\\n };\\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 = changeDelta.invert(oldDelta);\\n const timestamp = Date.now();\\n\\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);\\n } else {\\n this.lastRecorded = timestamp;\\n }\\n\\n if (undoDelta.length() === 0) return;\\n this.stack.undo.push(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 transformStack(this.stack.undo, delta);\\n transformStack(this.stack.redo, delta);\\n }\\n\\n undo() {\\n this.change('undo', 'redo');\\n }\\n\\n}\\n\\nHistory.DEFAULTS = {\\n delay: 1000,\\n maxStack: 100,\\n userOnly: false\\n};\\n\\nfunction transformStack(stack, delta) {\\n let remoteDelta = delta;\\n\\n for (let i = stack.length - 1; i >= 0; i -= 1) {\\n const oldDelta = stack[i];\\n stack[i] = remoteDelta.transform(oldDelta, true);\\n remoteDelta = oldDelta.transform(remoteDelta);\\n\\n if (stack[i].length() === 0) {\\n stack.splice(i, 1);\\n }\\n }\\n}\\n\\nfunction endsWithNewlineChange(scroll, delta) {\\n const lastOp = delta.ops[delta.ops.length - 1];\\n if (lastOp == null) return false;\\n\\n if (lastOp.insert != null) {\\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\\\n');\\n }\\n\\n if (lastOp.attributes != null) {\\n return Object.keys(lastOp.attributes).some(attr => {\\n return scroll.query(attr, parchment__WEBPACK_IMPORTED_MODULE_0__[\\\"Scope\\\"].BLOCK) != null;\\n });\\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\\n if (endsWithNewlineChange(scroll, delta)) {\\n changeIndex -= 1;\\n }\\n\\n return changeIndex;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/history.js?\");\n\n/***/ }),\n\n/***/ \"./modules/keyboard.js\":\n/*!*****************************!*\\\n !*** ./modules/keyboard.js ***!\n \\*****************************/\n/*! exports provided: default, SHORTKEY, normalize */\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 Keyboard; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"SHORTKEY\\\", function() { return SHORTKEY; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"normalize\\\", function() { return normalize; });\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n/* harmony import */ var deep_equal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(deep_equal__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"])('quill:keyboard');\\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\\n\\nclass Keyboard extends _core_module__WEBPACK_IMPORTED_MODULE_7__[\\\"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\\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({\\n key: 'Enter',\\n shiftKey: null\\n }, this.handleEnter);\\n this.addBinding({\\n key: 'Enter',\\n metaKey: null,\\n ctrlKey: null,\\n altKey: null\\n }, () => {});\\n\\n if (/Firefox/i.test(navigator.userAgent)) {\\n // Need to handle delete and backspace for Firefox in the general case #1171\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true\\n }, this.handleDelete);\\n } else {\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: true,\\n prefix: /^.?$/\\n }, this.handleBackspace);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: true,\\n suffix: /^.?$/\\n }, this.handleDelete);\\n }\\n\\n this.addBinding({\\n key: 'Backspace'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Delete'\\n }, {\\n collapsed: false\\n }, this.handleDeleteRange);\\n this.addBinding({\\n key: 'Backspace',\\n altKey: null,\\n ctrlKey: null,\\n metaKey: null,\\n shiftKey: null\\n }, {\\n collapsed: true,\\n offset: 0\\n }, this.handleBackspace);\\n this.listen();\\n }\\n\\n addBinding(keyBinding, context = {}, handler = {}) {\\n const binding = normalize(keyBinding);\\n\\n if (binding == null) {\\n debug.warn('Attempted to add invalid keyboard binding', binding);\\n return;\\n }\\n\\n if (typeof context === 'function') {\\n context = {\\n handler: context\\n };\\n }\\n\\n if (typeof handler === 'function') {\\n handler = {\\n handler\\n };\\n }\\n\\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\\n keys.forEach(key => {\\n const singleBinding = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, binding, {\\n key\\n }, 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 || evt.isComposing) 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 const [line, offset] = this.quill.getLine(range.index);\\n const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\\n const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\\n const prefixText = leafStart instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"TextBlot\\\"] ? leafStart.value().slice(0, offsetStart) : '';\\n const suffixText = leafEnd instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"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\\n if (binding.empty != null && binding.empty !== curContext.empty) {\\n return false;\\n }\\n\\n if (binding.offset != null && binding.offset !== curContext.offset) {\\n return false;\\n }\\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 deep_equal__WEBPACK_IMPORTED_MODULE_1___default()(binding.format[name], curContext.format[name]);\\n })) {\\n return false;\\n }\\n }\\n\\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\\n return false;\\n }\\n\\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\\n return false;\\n }\\n\\n return binding.handler.call(this, range, curContext, binding) !== true;\\n });\\n\\n if (prevented) {\\n evt.preventDefault();\\n }\\n });\\n }\\n\\n handleBackspace(range, context) {\\n // Check for astral symbols\\n const length = /[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]$/.test(context.prefix) ? 2 : 1;\\n if (range.index === 0 || this.quill.getLength() <= 1) return;\\n let formats = {};\\n const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - length).delete(length);\\n\\n if (context.offset === 0) {\\n // Always deleting newline here, length always 1\\n const [prev] = this.quill.getLine(range.index - 1);\\n\\n if (prev) {\\n const curFormats = line.formats();\\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, prevFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n // line.length() - 1 targets \\\\n in line, another -1 for newline being deleted\\n const formatDelta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - 2).retain(1, formats);\\n delta = delta.compose(formatDelta);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n 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 const [line] = this.quill.getLine(range.index);\\n let delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(length);\\n\\n if (context.offset >= line.length() - 1) {\\n const [next] = this.quill.getLine(range.index + 1);\\n\\n if (next) {\\n const curFormats = line.formats();\\n const nextFormats = this.quill.getFormat(range.index, 1);\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(curFormats, nextFormats) || {};\\n\\n if (Object.keys(formats).length > 0) {\\n delta = delta.retain(next.length() - 1).retain(1, formats);\\n }\\n }\\n }\\n\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.focus();\\n }\\n\\n handleDeleteRange(range) {\\n const lines = this.quill.getLines(range);\\n let formats = {};\\n\\n if (lines.length > 1) {\\n const firstFormats = lines[0].formats();\\n const lastFormats = lines[lines.length - 1].formats();\\n formats = quill_delta__WEBPACK_IMPORTED_MODULE_3__[\\\"AttributeMap\\\"].diff(lastFormats, firstFormats) || {};\\n }\\n\\n this.quill.deleteText(range, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index, 1, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.focus();\\n }\\n\\n handleEnter(range, context) {\\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\\n if (this.quill.scroll.query(format, parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"Scope\\\"].BLOCK) && !Array.isArray(context.format[format])) {\\n formats[format] = context.format[format];\\n }\\n\\n return formats;\\n }, {});\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\n', lineFormats);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"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 === 'code' || name === 'link') return;\\n this.quill.format(name, context.format[name], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\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\\n handler(range, context) {\\n if (context.collapsed && context.offset !== 0) return true;\\n this.quill.format('indent', '+1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\n\\n },\\n outdent: {\\n key: 'Tab',\\n shiftKey: true,\\n format: ['blockquote', 'indent', 'list'],\\n\\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', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n return false;\\n }\\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\\n handler(range, context) {\\n if (context.format.indent != null) {\\n this.quill.format('indent', '-1', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else if (context.format.list != null) {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\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\\n handler(range) {\\n this.quill.deleteText(range.index - 1, 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n tab: {\\n key: 'Tab',\\n\\n handler(range, context) {\\n if (context.format.table) return true;\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).delete(range.length).insert('\\\\t');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'blockquote empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['blockquote'],\\n empty: true,\\n\\n handler() {\\n this.quill.format('blockquote', false, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'list empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['list'],\\n empty: true,\\n\\n handler(range, context) {\\n const formats = {\\n list: false\\n };\\n\\n if (context.format.indent) {\\n formats.indent = false;\\n }\\n\\n this.quill.formatLine(range.index, range.length, formats, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n },\\n 'checklist enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: {\\n list: 'checked'\\n },\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const formats = extend__WEBPACK_IMPORTED_MODULE_2___default()({}, line.formats(), {\\n list: 'checked'\\n });\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', formats).retain(line.length() - offset - 1).retain(1, {\\n list: 'unchecked'\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'header enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['header'],\\n suffix: /^$/,\\n\\n handler(range, context) {\\n const [line, offset] = this.quill.getLine(range.index);\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index).insert('\\\\n', context.format).retain(line.length() - offset - 1).retain(1, {\\n header: null\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n },\\n 'table backspace': {\\n key: 'Backspace',\\n format: ['table'],\\n collapsed: true,\\n offset: 0,\\n\\n handler() {}\\n\\n },\\n 'table delete': {\\n key: 'Delete',\\n format: ['table'],\\n collapsed: true,\\n suffix: /^$/,\\n\\n handler() {}\\n\\n },\\n 'table enter': {\\n key: 'Enter',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range) {\\n const module = this.quill.getModule('table');\\n\\n if (module) {\\n const [table, row, cell, offset] = module.getTable(range);\\n const shift = tableSide(table, row, cell, offset);\\n if (shift == null) return;\\n let index = table.offset();\\n\\n if (shift < 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + 1, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n } else if (shift > 0) {\\n index += table.length();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n },\\n 'table tab': {\\n key: 'Tab',\\n shiftKey: null,\\n format: ['table'],\\n\\n handler(range, context) {\\n const {\\n event,\\n line: cell\\n } = context;\\n const offset = cell.offset(this.quill.scroll);\\n\\n if (event.shiftKey) {\\n this.quill.setSelection(offset - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(offset + cell.length(), _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n },\\n 'list autofill': {\\n key: ' ',\\n shiftKey: null,\\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\\n handler(range, context) {\\n if (this.quill.scroll.query('list') == null) return true;\\n const {\\n length\\n } = context.prefix;\\n const [line, offset] = this.quill.getLine(range.index);\\n if (offset > length) return true;\\n let value;\\n\\n switch (context.prefix.trim()) {\\n case '[]':\\n case '[ ]':\\n value = 'unchecked';\\n break;\\n\\n case '[x]':\\n value = 'checked';\\n break;\\n\\n case '-':\\n case '*':\\n value = 'bullet';\\n break;\\n\\n default:\\n value = 'ordered';\\n }\\n\\n this.quill.insertText(range.index, ' ', _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\\n list: value\\n });\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index - length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n\\n },\\n 'code exit': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['code-block'],\\n prefix: /^$/,\\n suffix: /^\\\\s*$/,\\n\\n handler(range) {\\n const [line, offset] = this.quill.getLine(range.index);\\n let numLines = 2;\\n let cur = line;\\n\\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\\n cur = cur.prev;\\n numLines -= 1; // Requisite prev lines are empty\\n\\n if (numLines <= 0) {\\n const delta = new quill_delta__WEBPACK_IMPORTED_MODULE_3___default.a().retain(range.index + line.length() - offset - 2).retain(1, {\\n 'code-block': null\\n }).delete(1);\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n return false;\\n }\\n }\\n\\n return true;\\n }\\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 makeCodeBlockHandler(indent) {\\n return {\\n key: 'Tab',\\n shiftKey: !indent,\\n format: {\\n 'code-block': true\\n },\\n\\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 {\\n index,\\n length\\n } = range;\\n lines.forEach((line, i) => {\\n if (indent) {\\n line.insertAt(0, CodeBlock.TAB);\\n\\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\\n if (i === 0) {\\n index -= CodeBlock.TAB.length;\\n } else {\\n length -= CodeBlock.TAB.length;\\n }\\n }\\n });\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(index, length, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.SILENT);\\n }\\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\\n handler(range) {\\n let {\\n index\\n } = range;\\n\\n if (key === 'ArrowRight') {\\n index += range.length + 1;\\n }\\n\\n const [leaf] = this.quill.getLeaf(index);\\n if (!(leaf instanceof parchment__WEBPACK_IMPORTED_MODULE_4__[\\\"EmbedBlot\\\"])) return true;\\n\\n if (key === 'ArrowLeft') {\\n if (shiftKey) {\\n this.quill.setSelection(range.index - 1, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index - 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else if (shiftKey) {\\n this.quill.setSelection(range.index, range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(range.index + range.length + 1, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction makeFormatHandler(format) {\\n return {\\n key: format[0],\\n shortKey: true,\\n\\n handler(range, context) {\\n this.quill.format(format, !context.format[format], _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n\\n };\\n}\\n\\nfunction makeTableArrowHandler(up) {\\n return {\\n key: up ? 'ArrowUp' : 'ArrowDown',\\n collapsed: true,\\n format: ['table'],\\n\\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\\n if (targetRow != null) {\\n if (targetRow.statics.blotName === 'table-row') {\\n let targetCell = targetRow.children.head;\\n let cur = cell;\\n\\n while (cur.prev != null) {\\n cur = cur.prev;\\n targetCell = targetCell.next;\\n }\\n\\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\\n this.quill.setSelection(index, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n const targetLine = cell.table()[key];\\n\\n if (targetLine != null) {\\n if (up) {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _core_quill__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].sources.USER);\\n }\\n }\\n }\\n\\n return false;\\n }\\n\\n };\\n}\\n\\nfunction normalize(binding) {\\n if (typeof binding === 'string' || typeof binding === 'number') {\\n binding = {\\n key: binding\\n };\\n } else if (typeof binding === 'object') {\\n binding = clone__WEBPACK_IMPORTED_MODULE_0___default()(binding, false);\\n } else {\\n return null;\\n }\\n\\n if (binding.shortKey) {\\n binding[SHORTKEY] = binding.shortKey;\\n delete binding.shortKey;\\n }\\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\\n return cell.prev == null ? -1 : 1;\\n }\\n\\n if (row.prev == null) {\\n return -1;\\n }\\n\\n if (row.next == null) {\\n return 1;\\n }\\n\\n return null;\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./modules/keyboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/syntax.js\":\n/*!***************************!*\\\n !*** ./modules/syntax.js ***!\n \\***************************/\n/*! exports provided: CodeBlock, CodeToken, 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__, \\\"CodeBlock\\\", function() { return SyntaxCodeBlock; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"CodeToken\\\", function() { return CodeToken; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Syntax; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _blots_inline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _blots_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n/* harmony import */ var _blots_break__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n/* harmony import */ var _blots_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n/* harmony import */ var _blots_text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clipboard */ \\\"./modules/clipboard.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst TokenAttributor = new parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"ClassAttributor\\\"]('code-token', 'hljs', {\\n scope: parchment__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE\\n});\\n\\nclass CodeToken extends _blots_inline__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static formats(node, scroll) {\\n while (node != null && node !== scroll.domNode) {\\n if (node.classList && node.classList.contains(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className)) {\\n return super.formats(node, scroll);\\n }\\n\\n node = node.parentNode;\\n }\\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\\n if (!TokenAttributor.value(this.domNode)) {\\n this.unwrap();\\n }\\n }\\n\\n}\\n\\nCodeToken.blotName = 'code-token';\\nCodeToken.className = 'ql-token';\\n\\nclass SyntaxCodeBlock extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"] {\\n static create(value) {\\n const domNode = super.create(value);\\n\\n if (typeof value === 'string') {\\n domNode.setAttribute('data-language', value);\\n }\\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\\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}\\n\\nclass SyntaxCodeBlockContainer extends _formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"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\\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 = \\\"\\\".concat(nodes.map(node => node.textContent).join('\\\\n'), \\\"\\\\n\\\");\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\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(Object(_blots_block__WEBPACK_IMPORTED_MODULE_5__[\\\"blockDelta\\\"])(child, false));\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n const delta = highlight(text, language);\\n oldDelta.diff(delta).reduce((index, {\\n retain,\\n attributes\\n }) => {\\n // Should be all retains\\n if (!retain) return index;\\n\\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\\n return index + retain;\\n }, 0);\\n }\\n\\n this.cachedText = text;\\n this.forceNext = false;\\n }\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n\\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n\\n if (language !== this.uiNode.value) {\\n this.uiNode.value = language;\\n }\\n }\\n }\\n\\n}\\n\\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\\nSyntaxCodeBlock.allowedChildren = [CodeToken, _blots_cursor__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"], _blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"], _blots_break__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"]];\\n\\nclass Syntax extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(CodeToken, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlock, true);\\n _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].register(SyntaxCodeBlockContainer, true);\\n }\\n\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n this.languages = this.options.languages.reduce((memo, {\\n key\\n }) => {\\n memo[key] = true;\\n return memo;\\n }, {});\\n this.highlightBlot = this.highlightBlot.bind(this);\\n this.initListener();\\n this.initTimer();\\n }\\n\\n initListener() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(({\\n key,\\n label\\n }) => {\\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\\n this.highlight(blot, true);\\n });\\n\\n if (blot.uiNode == null) {\\n blot.attachUI(select);\\n\\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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n\\n if (range != null) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].sources.SILENT);\\n }\\n }\\n\\n highlightBlot(text, language = 'plain') {\\n language = this.languages[language] ? language : 'plain';\\n\\n if (language === 'plain') {\\n return Object(_blots_text__WEBPACK_IMPORTED_MODULE_8__[\\\"escapeText\\\"])(text).split('\\\\n').reduce((delta, line, i) => {\\n if (i !== 0) {\\n delta.insert('\\\\n', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n }\\n\\n return delta.insert(line);\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a());\\n }\\n\\n const container = this.quill.root.ownerDocument.createElement('div');\\n container.classList.add(_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].className);\\n container.innerHTML = this.options.hljs.highlight(language, text).value;\\n return Object(_clipboard__WEBPACK_IMPORTED_MODULE_10__[\\\"traverse\\\"])(this.quill.scroll, container, [(node, delta) => {\\n const value = TokenAttributor.value(node);\\n\\n if (value) {\\n return delta.compose(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(delta.length(), {\\n [CodeToken.blotName]: value\\n }));\\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', {\\n [_formats_code__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"].blotName]: language\\n });\\n return memo.insert(nodeText);\\n }, delta);\\n }], new WeakMap());\\n }\\n\\n}\\n\\nSyntax.DEFAULTS = {\\n hljs: (() => {\\n return window.hljs;\\n })(),\\n interval: 1000,\\n languages: [{\\n key: 'plain',\\n label: 'Plain'\\n }, {\\n key: 'bash',\\n label: 'Bash'\\n }, {\\n key: 'cpp',\\n label: 'C++'\\n }, {\\n key: 'cs',\\n label: 'C#'\\n }, {\\n key: 'css',\\n label: 'CSS'\\n }, {\\n key: 'diff',\\n label: 'Diff'\\n }, {\\n key: 'xml',\\n label: 'HTML/XML'\\n }, {\\n key: 'java',\\n label: 'Java'\\n }, {\\n key: 'javascript',\\n label: 'Javascript'\\n }, {\\n key: 'markdown',\\n label: 'Markdown'\\n }, {\\n key: 'php',\\n label: 'PHP'\\n }, {\\n key: 'python',\\n label: 'Python'\\n }, {\\n key: 'ruby',\\n label: 'Ruby'\\n }, {\\n key: 'sql',\\n label: 'SQL'\\n }]\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/syntax.js?\");\n\n/***/ }),\n\n/***/ \"./modules/table.js\":\n/*!**************************!*\\\n !*** ./modules/table.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n/* harmony import */ var _formats_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/table */ \\\"./formats/table.js\\\");\\n\\n\\n\\n\\n\\nclass Table extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n static register() {\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableRow\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableBody\\\"]);\\n _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].register(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]);\\n }\\n\\n constructor(...args) {\\n super(...args);\\n this.listenBalanceCells();\\n }\\n\\n balanceTables() {\\n this.quill.scroll.descendants(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableContainer\\\"]).forEach(table => {\\n table.balanceCells();\\n });\\n }\\n\\n deleteColumn() {\\n const [table,, cell] = this.getTable();\\n if (cell == null) return;\\n table.deleteColumn(cell.cellOffset());\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteRow() {\\n const [, row] = this.getTable();\\n if (row == null) return;\\n row.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n deleteTable() {\\n const [table] = this.getTable();\\n if (table == null) return;\\n const offset = table.offset();\\n table.remove();\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(offset, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n }\\n\\n getTable(range = this.quill.getSelection()) {\\n if (range == null) return [null, null, null, -1];\\n const [cell, offset] = this.quill.getLine(range.index);\\n\\n if (cell == null || cell.statics.blotName !== _formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"TableCell\\\"].blotName) {\\n return [null, null, null, -1];\\n }\\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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const column = cell.cellOffset();\\n table.insertColumn(column + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n let shift = row.rowOffset();\\n\\n if (offset === 0) {\\n shift += 1;\\n }\\n\\n this.quill.setSelection(range.index + shift, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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 const [table, row, cell] = this.getTable(range);\\n if (cell == null) return;\\n const index = row.rowOffset();\\n table.insertRow(index + offset);\\n this.quill.update(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (offset > 0) {\\n this.quill.setSelection(range, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n } else {\\n this.quill.setSelection(range.index + row.children.length, range.length, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"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, {\\n table: Object(_formats_table__WEBPACK_IMPORTED_MODULE_3__[\\\"tableId\\\"])()\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index));\\n this.quill.updateContents(delta, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index, _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n this.balanceTables();\\n }\\n\\n listenBalanceCells() {\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SCROLL_OPTIMIZE, mutations => {\\n mutations.some(mutation => {\\n if (['TD', 'TR', 'TBODY', 'TABLE'].includes(mutation.target.tagName)) {\\n this.quill.once(_core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.TEXT_CHANGE, (delta, old, source) => {\\n if (source !== _core_quill__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) return;\\n this.balanceTables();\\n });\\n return true;\\n }\\n\\n return false;\\n });\\n });\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Table);\\n\\n//# sourceURL=webpack://Quill/./modules/table.js?\");\n\n/***/ }),\n\n/***/ \"./modules/toolbar.js\":\n/*!****************************!*\\\n !*** ./modules/toolbar.js ***!\n \\****************************/\n/*! exports provided: default, addControls */\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 Toolbar; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"addControls\\\", function() { return addControls; });\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var parchment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n/* harmony import */ var _core_quill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n/* harmony import */ var _core_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\n\\nconst debug = Object(_core_logger__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"])('quill:toolbar');\\n\\nclass Toolbar extends _core_module__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\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\\n if (!(this.container instanceof HTMLElement)) {\\n return debug.error('Container required for toolbar', this.options);\\n }\\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(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range) => {\\n if (type === _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SELECTION_CHANGE) {\\n this.update(range);\\n }\\n });\\n this.quill.on(_core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].events.SCROLL_OPTIMIZE, () => {\\n const [range] = this.quill.selection.getRange(); // 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\\n if (input.tagName === 'BUTTON') {\\n input.setAttribute('type', 'button');\\n }\\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\\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\\n input.addEventListener(eventName, e => {\\n let value;\\n\\n if (input.tagName === 'SELECT') {\\n if (input.selectedIndex < 0) return;\\n const selected = input.options[input.selectedIndex];\\n\\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\\n e.preventDefault();\\n }\\n\\n this.quill.focus();\\n const [range] = this.quill.selection.getRange();\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"EmbedBlot\\\"]) {\\n value = prompt(\\\"Enter \\\".concat(format)); // eslint-disable-line no-alert\\n\\n if (!value) return;\\n this.quill.updateContents(new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length).insert({\\n [format]: value\\n }), _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format(format, value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\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 const [format, input] = pair;\\n\\n if (input.tagName === 'SELECT') {\\n let option;\\n\\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\\n if (typeof value === 'string') {\\n value = value.replace(/\\\"/g, '\\\\\\\\\\\"');\\n }\\n\\n option = input.querySelector(\\\"option[value=\\\\\\\"\\\".concat(value, \\\"\\\\\\\"]\\\"));\\n }\\n\\n if (option == null) {\\n input.value = ''; // TODO make configurable?\\n\\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\\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-\\\".concat(format));\\n\\n if (value != null) {\\n input.value = value;\\n }\\n\\n container.appendChild(input);\\n}\\n\\nfunction addControls(container, groups) {\\n if (!Array.isArray(groups[0])) {\\n groups = [groups];\\n }\\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\\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-\\\".concat(format));\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value !== false) {\\n option.setAttribute('value', value);\\n } else {\\n option.setAttribute('selected', 'selected');\\n }\\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\\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__WEBPACK_IMPORTED_MODULE_1__[\\\"Scope\\\"].INLINE) != null) {\\n this.quill.format(name, false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n });\\n } else {\\n this.quill.removeFormat(range, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n direction(value) {\\n const {\\n align\\n } = this.quill.getFormat();\\n\\n if (value === 'rtl' && align == null) {\\n this.quill.format('align', 'right', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else if (!value && align === 'right') {\\n this.quill.format('align', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.format('direction', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\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\\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, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n },\\n\\n link(value) {\\n if (value === true) {\\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\\n }\\n\\n this.quill.format('link', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n },\\n\\n list(value) {\\n const range = this.quill.getSelection();\\n const formats = this.quill.getFormat(range);\\n\\n if (value === 'check') {\\n if (formats.list === 'checked' || formats.list === 'unchecked') {\\n this.quill.format('list', false, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n } else {\\n this.quill.format('list', 'unchecked', _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n } else {\\n this.quill.format('list', value, _core_quill__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].sources.USER);\\n }\\n }\\n\\n }\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./modules/toolbar.js?\");\n\n/***/ }),\n\n/***/ \"./modules/uploader.js\":\n/*!*****************************!*\\\n !*** ./modules/uploader.js ***!\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 quill_delta__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/dist/Delta.js\\\");\\n/* harmony import */ var quill_delta__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(quill_delta__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\n\\n\\n\\nclass Uploader extends _core_module__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n quill.root.addEventListener('drop', e => {\\n e.preventDefault();\\n let native;\\n\\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\\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\\n if (uploads.length > 0) {\\n this.options.handler.call(this, range, uploads);\\n }\\n }\\n\\n}\\n\\nUploader.DEFAULTS = {\\n mimetypes: ['image/png', 'image/jpeg'],\\n\\n handler(range, files) {\\n const promises = files.map(file => {\\n return new Promise(resolve => {\\n const reader = new FileReader();\\n\\n reader.onload = e => {\\n resolve(e.target.result);\\n };\\n\\n reader.readAsDataURL(file);\\n });\\n });\\n Promise.all(promises).then(images => {\\n const update = images.reduce((delta, image) => {\\n return delta.insert({\\n image\\n });\\n }, new quill_delta__WEBPACK_IMPORTED_MODULE_0___default.a().retain(range.index).delete(range.length));\\n this.quill.updateContents(update, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n this.quill.setSelection(range.index + images.length, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.SILENT);\\n });\\n }\\n\\n};\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Uploader);\\n\\n//# sourceURL=webpack://Quill/./modules/uploader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/array-filter/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/array-filter/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\n/**\\n * Array#filter.\\n *\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object=} self\\n * @return {Array}\\n * @throw TypeError\\n */\\n\\nmodule.exports = function (arr, fn, self) {\\n if (arr.filter) return arr.filter(fn, self);\\n if (void 0 === arr || null === arr) throw new TypeError;\\n if ('function' != typeof fn) throw new TypeError;\\n var ret = [];\\n for (var i = 0; i < arr.length; i++) {\\n if (!hasOwn.call(arr, i)) continue;\\n var val = arr[i];\\n if (fn.call(self, val, i, arr)) ret.push(val);\\n }\\n return ret;\\n};\\n\\nvar hasOwn = Object.prototype.hasOwnProperty;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/array-filter/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/available-typed-arrays/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/available-typed-arrays/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar filter = __webpack_require__(/*! array-filter */ \\\"./node_modules/array-filter/index.js\\\");\\n\\nmodule.exports = function availableTypedArrays() {\\n\\treturn filter([\\n\\t\\t'BigInt64Array',\\n\\t\\t'BigUint64Array',\\n\\t\\t'Float32Array',\\n\\t\\t'Float64Array',\\n\\t\\t'Int16Array',\\n\\t\\t'Int32Array',\\n\\t\\t'Int8Array',\\n\\t\\t'Uint16Array',\\n\\t\\t'Uint32Array',\\n\\t\\t'Uint8Array',\\n\\t\\t'Uint8ClampedArray'\\n\\t], function (typedArray) {\\n\\t\\treturn typeof global[typedArray] === 'function';\\n\\t});\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/available-typed-arrays/index.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\n\"use strict\";\neval(\"\\n\\nvar objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/deep-equal/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/deep-equal/node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/deep-equal/node_modules/isarray/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/deep-equal/node_modules/is-date-object/index.js\\\");\\nvar whichBoxedPrimitive = __webpack_require__(/*! which-boxed-primitive */ \\\"./node_modules/which-boxed-primitive/index.js\\\");\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar whichCollection = __webpack_require__(/*! which-collection */ \\\"./node_modules/which-collection/index.js\\\");\\nvar getIterator = __webpack_require__(/*! es-get-iterator */ \\\"./node_modules/es-get-iterator/index.js\\\");\\nvar getSideChannel = __webpack_require__(/*! side-channel */ \\\"./node_modules/side-channel/index.js\\\");\\nvar whichTypedArray = __webpack_require__(/*! which-typed-array */ \\\"./node_modules/which-typed-array/index.js\\\");\\nvar assign = __webpack_require__(/*! object.assign */ \\\"./node_modules/object.assign/index.js\\\");\\n\\nvar $getTime = callBound('Date.prototype.getTime');\\nvar gPO = Object.getPrototypeOf;\\nvar $objToString = callBound('Object.prototype.toString');\\n\\nvar $Set = GetIntrinsic('%Set%', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSize = callBound('Map.prototype.size', true);\\nvar $setAdd = callBound('Set.prototype.add', true);\\nvar $setDelete = callBound('Set.prototype.delete', true);\\nvar $setHas = callBound('Set.prototype.has', true);\\nvar $setSize = callBound('Set.prototype.size', true);\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\\nfunction setHasEqualElement(set, val1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n while ((result = i.next()) && !result.done) {\\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\\n // Remove the matching element to make sure we do not check that again.\\n $setDelete(set, result.value);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\\nfunction findLooseMatchingPrimitives(prim) {\\n if (typeof prim === 'undefined') {\\n return null;\\n }\\n if (typeof prim === 'object') { // Only pass in null as object!\\n return void 0;\\n }\\n if (typeof prim === 'symbol') {\\n return false;\\n }\\n if (typeof prim === 'string' || typeof prim === 'number') {\\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\\n }\\n return true;\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n var curB = $mapGet(b, altValue);\\n var looseOpts = assign({}, opts, { strict: false });\\n if (\\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\\n // eslint-disable-next-line no-use-before-define\\n || !internalDeepEqual(item, curB, looseOpts, channel)\\n ) {\\n return false;\\n }\\n // eslint-disable-next-line no-use-before-define\\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\\nfunction setMightHaveLoosePrim(a, b, prim) {\\n var altValue = findLooseMatchingPrimitives(prim);\\n if (altValue != null) {\\n return altValue;\\n }\\n\\n return $setHas(b, altValue) && !$setHas(a, altValue);\\n}\\n\\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\\n var i = getIterator(set);\\n var result;\\n var key2;\\n while ((result = i.next()) && !result.done) {\\n key2 = result.value;\\n if (\\n // eslint-disable-next-line no-use-before-define\\n internalDeepEqual(key1, key2, opts, channel)\\n // eslint-disable-next-line no-use-before-define\\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\\n ) {\\n $setDelete(set, key2);\\n return true;\\n }\\n }\\n\\n return false;\\n}\\n\\nfunction internalDeepEqual(actual, expected, options, channel) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n var actualBoxed = whichBoxedPrimitive(actual);\\n var expectedBoxed = whichBoxedPrimitive(expected);\\n if (actualBoxed !== expectedBoxed) {\\n return false;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\\n }\\n\\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 */\\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\\n\\n var hasActual = channel.has(actual);\\n var hasExpected = channel.has(expected);\\n var sentinel;\\n if (hasActual && hasExpected) {\\n if (channel.get(actual) === channel.get(expected)) {\\n return true;\\n }\\n } else {\\n sentinel = {};\\n }\\n if (!hasActual) { channel.set(actual, sentinel); }\\n if (!hasExpected) { channel.set(expected, sentinel); }\\n\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts, channel);\\n}\\n\\nfunction isBuffer(x) {\\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n\\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\\n}\\n\\nfunction setEquiv(a, b, opts, channel) {\\n if ($setSize(a) !== $setSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n while ((resultA = iA.next()) && !resultA.done) {\\n if (resultA.value && typeof resultA.value === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n } else if (!$setHas(b, resultA.value)) {\\n if (opts.strict) { return false; }\\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, resultA.value);\\n }\\n }\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\\n if (resultB.value && typeof resultB.value === 'object') {\\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && !$setHas(a, resultB.value)\\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction mapEquiv(a, b, opts, channel) {\\n if ($mapSize(a) !== $mapSize(b)) {\\n return false;\\n }\\n var iA = getIterator(a);\\n var iB = getIterator(b);\\n var resultA;\\n var resultB;\\n var set;\\n var key;\\n var item1;\\n var item2;\\n while ((resultA = iA.next()) && !resultA.done) {\\n key = resultA.value[0];\\n item1 = resultA.value[1];\\n if (key && typeof key === 'object') {\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n } else {\\n item2 = $mapGet(b, key);\\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\\n if (opts.strict) {\\n return false;\\n }\\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\\n return false;\\n }\\n if (!set) { set = new $Set(); }\\n $setAdd(set, key);\\n }\\n }\\n }\\n\\n if (set) {\\n while ((resultB = iB.next()) && !resultB.done) {\\n key = resultB.value[0];\\n item2 = resultB.value[1];\\n if (key && typeof key === 'object') {\\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\\n return false;\\n }\\n } else if (\\n !opts.strict\\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\\n ) {\\n return false;\\n }\\n }\\n return $setSize(set) === 0;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts, channel) {\\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\\n var i, key;\\n\\n if (typeof a !== typeof b) { return false; }\\n if (a == null || b == null) { return false; }\\n\\n if ($objToString(a) !== $objToString(b)) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsArray = isArray(a);\\n var bIsArray = isArray(b);\\n if (aIsArray !== bIsArray) { return false; }\\n\\n // TODO: replace when a cross-realm brand check is available\\n var aIsError = a instanceof Error;\\n var bIsError = b instanceof Error;\\n if (aIsError !== bIsError) { return false; }\\n if (aIsError || bIsError) {\\n if (a.name !== b.name || a.message !== b.message) { return false; }\\n }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\\n return false;\\n }\\n\\n var aIsDate = isDate(a);\\n var bIsDate = isDate(b);\\n if (aIsDate !== bIsDate) { return false; }\\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\\n if ($getTime(a) !== $getTime(b)) { return false; }\\n }\\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\\n\\n if (whichTypedArray(a) !== whichTypedArray(b)) {\\n return false;\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n var ka = objectKeys(a);\\n var kb = objectKeys(b);\\n // having the same number of owned properties (keys incorporates hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; } // eslint-disable-line eqeqeq\\n }\\n\\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\\n for (i = ka.length - 1; i >= 0; i--) {\\n key = ka[i];\\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\\n }\\n\\n var aCollection = whichCollection(a);\\n var bCollection = whichCollection(b);\\n if (aCollection !== bCollection) {\\n return false;\\n }\\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\\n return setEquiv(a, b, opts, channel);\\n }\\n if (aCollection === 'Map') { // aCollection === bCollection\\n return mapEquiv(a, b, opts, channel);\\n }\\n\\n return true;\\n}\\n\\nmodule.exports = function deepEqual(a, b, opts) {\\n return internalDeepEqual(a, b, opts, getSideChannel());\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/deep-equal/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/deep-equal/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-date-object/index.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-date-object/index.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateGetDayCall(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/is-regex/index.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/is-regex/index.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0; // eslint-disable-line no-param-reassign\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex; // eslint-disable-line no-param-reassign\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/isarray/index.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/isarray/index.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/isarray/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/implementation.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/implementation.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/deep-equal/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/node_modules/object-keys/isArguments.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/deep-equal/node_modules/object-keys/isArguments.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/define-properties/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/define-properties/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\\n\\nvar toStr = Object.prototype.toString;\\nvar concat = Array.prototype.concat;\\nvar origDefineProperty = Object.defineProperty;\\n\\nvar isFunction = function (fn) {\\n\\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\\n};\\n\\nvar arePropertyDescriptorsSupported = function () {\\n\\tvar obj = {};\\n\\ttry {\\n\\t\\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\\n\\t\\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\\n\\t\\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn obj.x === obj;\\n\\t} catch (e) { /* this is IE 8. */\\n\\t\\treturn false;\\n\\t}\\n};\\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\\n\\nvar defineProperty = function (object, name, value, predicate) {\\n\\tif (name in object && (!isFunction(predicate) || !predicate())) {\\n\\t\\treturn;\\n\\t}\\n\\tif (supportsDescriptors) {\\n\\t\\torigDefineProperty(object, name, {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tvalue: value,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\tobject[name] = value;\\n\\t}\\n};\\n\\nvar defineProperties = function (object, map) {\\n\\tvar predicates = arguments.length > 2 ? arguments[2] : {};\\n\\tvar props = keys(map);\\n\\tif (hasSymbols) {\\n\\t\\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\\n\\t}\\n\\tfor (var i = 0; i < props.length; i += 1) {\\n\\t\\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\\n\\t}\\n};\\n\\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\\n\\nmodule.exports = defineProperties;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/define-properties/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/es-get-iterator/index.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {\\n\\n/* eslint global-require: 0 */\\n// the code is structured this way so that bundlers can\\n// alias out `has-symbols` to `() => true` or `() => false` if your target\\n// environments' Symbol capabilities are known, and then use\\n// dead code elimination on the rest of this module.\\n//\\n// Similarly, `isarray` can be aliased to `Array.isArray` if\\n// available in all target environments.\\n\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\n\\nif (__webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")() || __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")()) {\\n\\tvar $iterator = Symbol.iterator;\\n\\t// Symbol is available natively or shammed\\n\\t// natively:\\n\\t// - Chrome >= 38\\n\\t// - Edge 12-14?, Edge >= 15 for sure\\n\\t// - FF >= 36\\n\\t// - Safari >= 9\\n\\t// - node >= 0.12\\n\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t// alternatively, `iterable[$iterator]?.()`\\n\\t\\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\\n\\t\\t\\treturn iterable[$iterator]();\\n\\t\\t}\\n\\t\\tif (isArguments(iterable)) {\\n\\t\\t\\t// arguments objects lack Symbol.iterator\\n\\t\\t\\t// - node 0.12\\n\\t\\t\\treturn Array.prototype[$iterator].call(iterable);\\n\\t\\t}\\n\\t};\\n} else {\\n\\t// Symbol is not available, native or shammed\\n\\tvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/es-get-iterator/node_modules/isarray/index.js\\\");\\n\\tvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\n\\tvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\tvar $Map = GetIntrinsic('%Map%', true);\\n\\tvar $Set = GetIntrinsic('%Set%', true);\\n\\tvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\tvar $arrayPush = callBound('Array.prototype.push');\\n\\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\\n\\tvar $stringSlice = callBound('String.prototype.slice');\\n\\n\\tvar advanceStringIndex = function advanceStringIndex(S, index) {\\n\\t\\tvar length = S.length;\\n\\t\\tif ((index + 1) >= length) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar first = $charCodeAt(S, index);\\n\\t\\tif (first < 0xD800 || first > 0xDBFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\tvar second = $charCodeAt(S, index + 1);\\n\\t\\tif (second < 0xDC00 || second > 0xDFFF) {\\n\\t\\t\\treturn index + 1;\\n\\t\\t}\\n\\n\\t\\treturn index + 2;\\n\\t};\\n\\n\\tvar getArrayIterator = function getArrayIterator(arraylike) {\\n\\t\\tvar i = 0;\\n\\t\\treturn {\\n\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\tvar done = i >= arraylike.length;\\n\\t\\t\\t\\tvar value;\\n\\t\\t\\t\\tif (!done) {\\n\\t\\t\\t\\t\\tvalue = arraylike[i];\\n\\t\\t\\t\\t\\ti += 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t};\\n\\t};\\n\\n\\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable) {\\n\\t\\tif (isArray(iterable) || isArguments(iterable)) {\\n\\t\\t\\treturn getArrayIterator(iterable);\\n\\t\\t}\\n\\t\\tif (isString(iterable)) {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\tvar nextIndex = advanceStringIndex(iterable, i);\\n\\t\\t\\t\\t\\tvar value = $stringSlice(iterable, i, nextIndex);\\n\\t\\t\\t\\t\\ti = nextIndex;\\n\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\tdone: nextIndex > iterable.length,\\n\\t\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t};\\n\\n\\tif (!$Map && !$Set) {\\n\\t\\t// the only language iterables are Array, String, arguments\\n\\t\\t// - Safari <= 6.0\\n\\t\\t// - Chrome < 38\\n\\t\\t// - node < 0.12\\n\\t\\t// - FF < 13\\n\\t\\t// - IE < 11\\n\\t\\t// - Edge < 11\\n\\n\\t\\tmodule.exports = getNonCollectionIterator;\\n\\t} else {\\n\\t\\t// either Map or Set are available, but Symbol is not\\n\\t\\t// - es6-shim on an ES5 browser\\n\\t\\t// - Safari 6.2 (maybe 6.1?)\\n\\t\\t// - FF v[13, 36)\\n\\t\\t// - IE 11\\n\\t\\t// - Edge 11\\n\\t\\t// - Safari v[6, 9)\\n\\n\\t\\tvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\n\\t\\tvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\n\\n\\t\\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\\n\\t\\tvar $mapForEach = callBound('Map.prototype.forEach', true);\\n\\t\\tvar $setForEach = callBound('Set.prototype.forEach', true);\\n\\t\\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \\\"if is not node\\\"\\n\\n\\t\\t\\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\\n\\t\\t\\t// returns a value, or throws a StopIteration object. These browsers\\n\\t\\t\\t// do not have any other mechanism for iteration.\\n\\t\\t\\tvar $mapIterator = callBound('Map.prototype.iterator', true);\\n\\t\\t\\tvar $setIterator = callBound('Set.prototype.iterator', true);\\n\\t\\t\\tvar getStopIterationIterator = function (iterator) {\\n\\t\\t\\t\\tvar done = false;\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tnext: function next() {\\n\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: done,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: done ? undefined : iterator.next()\\n\\t\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\t\\tdone = true;\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tdone: true,\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue: undefined\\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};\\n\\t\\t}\\n\\t\\t// Firefox 27-35, and some older es6-shim versions, use a string \\\"@@iterator\\\" property\\n\\t\\t// this returns a proper iterator object, so we should use it instead of forEach.\\n\\t\\t// newer es6-shim versions use a string \\\"_es6-shim iterator_\\\" property.\\n\\t\\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\\n\\t\\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\\n\\n\\t\\tvar getCollectionIterator = function getCollectionIterator(iterable) {\\n\\t\\t\\tif (isMap(iterable)) {\\n\\t\\t\\t\\tif ($mapIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($mapIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $mapAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($mapForEach) {\\n\\t\\t\\t\\t\\tvar entries = [];\\n\\t\\t\\t\\t\\t$mapForEach(iterable, function (v, k) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(entries, [k, v]);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(entries);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (isSet(iterable)) {\\n\\t\\t\\t\\tif ($setIterator) {\\n\\t\\t\\t\\t\\treturn getStopIterationIterator($setIterator(iterable));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setAtAtIterator) {\\n\\t\\t\\t\\t\\treturn $setAtAtIterator(iterable);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($setForEach) {\\n\\t\\t\\t\\t\\tvar values = [];\\n\\t\\t\\t\\t\\t$setForEach(iterable, function (v) {\\n\\t\\t\\t\\t\\t\\t$arrayPush(values, v);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\treturn getArrayIterator(values);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\t\\tmodule.exports = function getIterator(iterable) {\\n\\t\\t\\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\\n\\t\\t};\\n\\t}\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js ***!\n \\************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/es-get-iterator/node_modules/isarray/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/es-get-iterator/node_modules/isarray/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/es-get-iterator/node_modules/isarray/index.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;\\nvar defineProperty = Object.defineProperty;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\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\\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\\nvar setProperty = function setProperty(target, options) {\\n\\tif (defineProperty && options.name === '__proto__') {\\n\\t\\tdefineProperty(target, options.name, {\\n\\t\\t\\tenumerable: true,\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tvalue: options.newValue,\\n\\t\\t\\twritable: true\\n\\t\\t});\\n\\t} else {\\n\\t\\ttarget[options.name] = options.newValue;\\n\\t}\\n};\\n\\n// Return undefined instead of __proto__ if '__proto__' is not an own property\\nvar getProperty = function getProperty(obj, name) {\\n\\tif (name === '__proto__') {\\n\\t\\tif (!hasOwn.call(obj, name)) {\\n\\t\\t\\treturn void 0;\\n\\t\\t} else if (gOPD) {\\n\\t\\t\\t// In early versions of node, obj['__proto__'] is buggy when obj has\\n\\t\\t\\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\\n\\t\\t\\treturn gOPD(obj, name).value;\\n\\t\\t}\\n\\t}\\n\\n\\treturn obj[name];\\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 = getProperty(target, name);\\n\\t\\t\\t\\tcopy = getProperty(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\\tsetProperty(target, { name: name, newValue: 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\\tsetProperty(target, { name: name, newValue: 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|Object} [cursor_pos] Edit position in text1 or object with more info\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\\n // Check for equality\\n if (text1 === text2) {\\n if (text1) {\\n return [[DIFF_EQUAL, text1]];\\n }\\n return [];\\n }\\n\\n if (cursor_pos != null) {\\n var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\\n if (editdiff) {\\n return editdiff;\\n }\\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, _fix_unicode);\\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 = [\\n [DIFF_INSERT, longtext.substring(0, i)],\\n [DIFF_EQUAL, shorttext],\\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\\n ];\\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 (\\n x1 < text1_length && y1 < text2_length &&\\n text1.charAt(x1) === text2.charAt(y1)\\n ) {\\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 (\\n x2 < text1_length && y2 < text2_length &&\\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\\n ) {\\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 (\\n text1.substring(pointerstart, pointermid) ==\\n text2.substring(pointerstart, pointermid)\\n ) {\\n pointermin = pointermid;\\n pointerstart = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\\n pointermid--;\\n }\\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 || text1.slice(-1) !== text2.slice(-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 (\\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\\n text2.substring(text2.length - pointermid, text2.length - pointerend)\\n ) {\\n pointermin = pointermid;\\n pointerend = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n\\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\\n pointermid--;\\n }\\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(\\n longtext.substring(i), shorttext.substring(j));\\n var suffixLength = diff_commonSuffix(\\n longtext.substring(0, i), shorttext.substring(0, j));\\n if (best_common.length < suffixLength + prefixLength) {\\n best_common = shorttext.substring(\\n j - suffixLength, j) + 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 [\\n best_longtext_a, best_longtext_b,\\n best_shorttext_a, best_shorttext_b, best_common\\n ];\\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, Math.ceil(longtext.length / 4));\\n // Check again based on the third quarter.\\n var hm2 = diff_halfMatchI_(longtext, shorttext, 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 * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\\n */\\nfunction diff_cleanupMerge(diffs, fix_unicode) {\\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 if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n diffs.splice(pointer, 1);\\n continue;\\n }\\n switch (diffs[pointer][0]) {\\n case DIFF_INSERT:\\n\\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 var previous_equality = pointer - count_insert - count_delete - 1;\\n if (fix_unicode) {\\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\\n // we assume that the old and new text in the diff are complete and correct\\n // unicode-encoded JS strings, but the tuple boundaries may fall between\\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\\n // of the previous equality and the beginning of this equality. this may create\\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\\n // particular case, both equalities go away, we absorb any previous inequalities,\\n // and we keep scanning for the next equality before rewriting the tuples.\\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\\n var stray = diffs[previous_equality][1].slice(-1);\\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\\n text_delete = stray + text_delete;\\n text_insert = stray + text_insert;\\n if (!diffs[previous_equality][1]) {\\n // emptied out previous equality, so delete it and include previous delete/insert\\n diffs.splice(previous_equality, 1);\\n pointer--;\\n var k = previous_equality - 1;\\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\\n count_insert++;\\n text_insert = diffs[k][1] + text_insert;\\n k--;\\n }\\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\\n count_delete++;\\n text_delete = diffs[k][1] + text_delete;\\n k--;\\n }\\n previous_equality = k;\\n }\\n }\\n if (starts_with_pair_end(diffs[pointer][1])) {\\n var stray = diffs[pointer][1].charAt(0);\\n diffs[pointer][1] = diffs[pointer][1].slice(1);\\n text_delete += stray;\\n text_insert += stray;\\n }\\n }\\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\\n // for empty equality not at end, wait for next equality\\n diffs.splice(pointer, 1);\\n break;\\n }\\n if (text_delete.length > 0 || text_insert.length > 0) {\\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\\n if (text_delete.length > 0 && text_insert.length > 0) {\\n // Factor out any common prefixes.\\n commonlength = diff_commonPrefix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n if (previous_equality >= 0) {\\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\\n } else {\\n diffs.splice(0, 0, [DIFF_EQUAL, 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 suffixes.\\n commonlength = diff_commonSuffix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n diffs[pointer][1] =\\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\\n }\\n }\\n // Delete the offending records and add the merged ones.\\n var n = count_insert + count_delete;\\n if (text_delete.length === 0 && text_insert.length === 0) {\\n diffs.splice(pointer - n, n);\\n pointer = pointer - n;\\n } else if (text_delete.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 1;\\n } else if (text_insert.length === 0) {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\\n pointer = pointer - n + 1;\\n } else {\\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\\n pointer = pointer - n + 2;\\n }\\n }\\n 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, fix_unicode);\\n }\\n};\\n\\nfunction is_surrogate_pair_start(charCode) {\\n return charCode >= 0xD800 && charCode <= 0xDBFF;\\n}\\n\\nfunction is_surrogate_pair_end(charCode) {\\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\\n}\\n\\nfunction starts_with_pair_end(str) {\\n return is_surrogate_pair_end(str.charCodeAt(0));\\n}\\n\\nfunction ends_with_pair_start(str) {\\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\\n}\\n\\nfunction remove_empty_tuples(tuples) {\\n var ret = [];\\n for (var i = 0; i < tuples.length; i++) {\\n if (tuples[i][1].length > 0) {\\n ret.push(tuples[i]);\\n }\\n }\\n return ret;\\n}\\n\\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\\n return null;\\n }\\n return remove_empty_tuples([\\n [DIFF_EQUAL, before],\\n [DIFF_DELETE, oldMiddle],\\n [DIFF_INSERT, newMiddle],\\n [DIFF_EQUAL, after]\\n ]);\\n}\\n\\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\\n // note: this runs after equality check has ruled out exact equality\\n var oldRange = typeof cursor_pos === 'number' ?\\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\\n var newRange = typeof cursor_pos === 'number' ?\\n null : cursor_pos.newRange;\\n // take into account the old and new selection to generate the best diff\\n // possible for a text edit. for example, a text change from \\\"xxx\\\" to \\\"xx\\\"\\n // could be a delete or forwards-delete of any one of the x's, or the\\n // result of selecting two of the x's and typing \\\"x\\\".\\n var oldLength = oldText.length;\\n var newLength = newText.length;\\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\\n // see if we have an insert or delete before or after cursor\\n var oldCursor = oldRange.index;\\n var oldBefore = oldText.slice(0, oldCursor);\\n var oldAfter = oldText.slice(oldCursor);\\n var maybeNewCursor = newRange ? newRange.index : null;\\n editBefore: {\\n // is this an insert or delete right before oldCursor?\\n var newCursor = oldCursor + newLength - oldLength;\\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\\n break editBefore;\\n }\\n if (newCursor < 0 || newCursor > newLength) {\\n break editBefore;\\n }\\n var newBefore = newText.slice(0, newCursor);\\n var newAfter = newText.slice(newCursor);\\n if (newAfter !== oldAfter) {\\n break editBefore;\\n }\\n var prefixLength = Math.min(oldCursor, newCursor);\\n var oldPrefix = oldBefore.slice(0, prefixLength);\\n var newPrefix = newBefore.slice(0, prefixLength);\\n if (oldPrefix !== newPrefix) {\\n break editBefore;\\n }\\n var oldMiddle = oldBefore.slice(prefixLength);\\n var newMiddle = newBefore.slice(prefixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\\n }\\n editAfter: {\\n // is this an insert or delete right after oldCursor?\\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\\n break editAfter;\\n }\\n var cursor = oldCursor;\\n var newBefore = newText.slice(0, cursor);\\n var newAfter = newText.slice(cursor);\\n if (newBefore !== oldBefore) {\\n break editAfter;\\n }\\n var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\\n var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\\n var newSuffix = newAfter.slice(newAfter.length - suffixLength);\\n if (oldSuffix !== newSuffix) {\\n break editAfter;\\n }\\n var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\\n var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\\n replaceRange: {\\n // see if diff could be a splice of the old selection range\\n var oldPrefix = oldText.slice(0, oldRange.index);\\n var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\\n var prefixLength = oldPrefix.length;\\n var suffixLength = oldSuffix.length;\\n if (newLength < prefixLength + suffixLength) {\\n break replaceRange;\\n }\\n var newPrefix = newText.slice(0, prefixLength);\\n var newSuffix = newText.slice(newLength - suffixLength);\\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\\n break replaceRange;\\n }\\n var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\\n var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\\n }\\n }\\n\\n return null;\\n}\\n\\nfunction diff(text1, text2, cursor_pos) {\\n // only pass fix_unicode=true at the top level, not when diff_main is\\n // recursively invoked\\n return diff_main(text1, text2, cursor_pos, true);\\n}\\n\\ndiff.INSERT = DIFF_INSERT;\\ndiff.DELETE = DIFF_DELETE;\\ndiff.EQUAL = DIFF_EQUAL;\\n\\nmodule.exports = diff;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/fast-diff/diff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/foreach/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/foreach/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"\\nvar hasOwn = Object.prototype.hasOwnProperty;\\nvar toString = Object.prototype.toString;\\n\\nmodule.exports = function forEach (obj, fn, ctx) {\\n if (toString.call(fn) !== '[object Function]') {\\n throw new TypeError('iterator must be a function');\\n }\\n var l = obj.length;\\n if (l === +l) {\\n for (var i = 0; i < l; i++) {\\n fn.call(ctx, obj[i], i, obj);\\n }\\n } else {\\n for (var k in obj) {\\n if (hasOwn.call(obj, k)) {\\n fn.call(ctx, obj[k], k, obj);\\n }\\n }\\n }\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/foreach/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/function-bind/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint no-invalid-this: 1 */\\n\\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\\nvar slice = Array.prototype.slice;\\nvar toStr = Object.prototype.toString;\\nvar funcType = '[object Function]';\\n\\nmodule.exports = function bind(that) {\\n var target = this;\\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\\n throw new TypeError(ERROR_MESSAGE + target);\\n }\\n var args = slice.call(arguments, 1);\\n\\n var bound;\\n var binder = function () {\\n if (this instanceof bound) {\\n var result = target.apply(\\n this,\\n args.concat(slice.call(arguments))\\n );\\n if (Object(result) === result) {\\n return result;\\n }\\n return this;\\n } else {\\n return target.apply(\\n that,\\n args.concat(slice.call(arguments))\\n );\\n }\\n };\\n\\n var boundLength = Math.max(0, target.length - args.length);\\n var boundArgs = [];\\n for (var i = 0; i < boundLength; i++) {\\n boundArgs.push('$' + i);\\n }\\n\\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\\n\\n if (target.prototype) {\\n var Empty = function Empty() {};\\n Empty.prototype = target.prototype;\\n bound.prototype = new Empty();\\n Empty.prototype = null;\\n }\\n\\n return bound;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/function-bind/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/function-bind/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/function-bind/implementation.js\\\");\\n\\nmodule.exports = Function.prototype.bind || implementation;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/function-bind/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar origSymbol = global.Symbol;\\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \\\"./node_modules/has-symbols/shams.js\\\");\\n\\nmodule.exports = function hasNativeSymbols() {\\n\\tif (typeof origSymbol !== 'function') { return false; }\\n\\tif (typeof Symbol !== 'function') { return false; }\\n\\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\\n\\tif (typeof Symbol('bar') !== 'symbol') { return false; }\\n\\n\\treturn hasSymbolSham();\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-symbols/shams.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/has-symbols/shams.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\\nmodule.exports = function hasSymbols() {\\n\\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\\n\\tif (typeof Symbol.iterator === 'symbol') { return true; }\\n\\n\\tvar obj = {};\\n\\tvar sym = Symbol('test');\\n\\tvar symObj = Object(sym);\\n\\tif (typeof sym === 'string') { return false; }\\n\\n\\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\\n\\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\\n\\n\\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\\n\\t// if (sym instanceof Symbol) { return false; }\\n\\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\\n\\t// if (!(symObj instanceof Symbol)) { return false; }\\n\\n\\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\\n\\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\\n\\n\\tvar symVal = 42;\\n\\tobj[sym] = symVal;\\n\\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\\n\\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\\n\\n\\tvar syms = Object.getOwnPropertySymbols(obj);\\n\\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\\n\\n\\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\\n\\n\\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\\n\\t\\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\\n\\t\\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\\n\\t}\\n\\n\\treturn true;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has-symbols/shams.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/has/src/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/has/src/index.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/has/src/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-arguments/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/is-arguments/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\nvar toStr = Object.prototype.toString;\\n\\nvar isStandardArguments = function isArguments(value) {\\n\\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\\n\\t\\treturn false;\\n\\t}\\n\\treturn toStr.call(value) === '[object Arguments]';\\n};\\n\\nvar isLegacyArguments = function isArguments(value) {\\n\\tif (isStandardArguments(value)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn value !== null &&\\n\\t\\ttypeof value === 'object' &&\\n\\t\\ttypeof value.length === 'number' &&\\n\\t\\tvalue.length >= 0 &&\\n\\t\\ttoStr.call(value) !== '[object Array]' &&\\n\\t\\ttoStr.call(value.callee) === '[object Function]';\\n};\\n\\nvar supportsStandardArguments = (function () {\\n\\treturn isStandardArguments(arguments);\\n}());\\n\\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\\n\\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-arguments/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-bigint/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-bigint/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nif (typeof BigInt === 'function') {\\n\\tvar bigIntValueOf = BigInt.prototype.valueOf;\\n\\tvar tryBigInt = function tryBigIntObject(value) {\\n\\t\\ttry {\\n\\t\\t\\tbigIntValueOf.call(value);\\n\\t\\t\\treturn true;\\n\\t\\t} catch (e) {\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\tif (\\n\\t\\t\\tvalue === null\\n\\t\\t\\t|| typeof value === 'undefined'\\n\\t\\t\\t|| typeof value === 'boolean'\\n\\t\\t\\t|| typeof value === 'string'\\n\\t\\t\\t|| typeof value === 'number'\\n\\t\\t\\t|| typeof value === 'symbol'\\n\\t\\t\\t|| typeof value === 'function'\\n\\t\\t) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\tif (typeof value === 'bigint') { // eslint-disable-line valid-typeof\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\treturn tryBigInt(value);\\n\\t};\\n} else {\\n\\tmodule.exports = function isBigInt(value) {\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-bigint/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-boolean-object/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/is-boolean-object/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar boolToStr = Boolean.prototype.toString;\\n\\nvar tryBooleanObject = function booleanBrandCheck(value) {\\n\\ttry {\\n\\t\\tboolToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar boolClass = '[object Boolean]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isBoolean(value) {\\n\\tif (typeof value === 'boolean') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (value === null || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : toStr.call(value) === boolClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-boolean-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-date-object/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-date-object/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar getDay = Date.prototype.getDay;\\nvar tryDateObject = function tryDateObject(value) {\\n\\ttry {\\n\\t\\tgetDay.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar toStr = Object.prototype.toString;\\nvar dateClass = '[object Date]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isDateObject(value) {\\n\\tif (typeof value !== 'object' || value === null) { return false; }\\n\\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-date-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-map/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-map/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Map) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isMap(x) {\\n\\t\\t// `Map` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-map/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-number-object/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/is-number-object/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar numToStr = Number.prototype.toString;\\nvar tryNumberObject = function tryNumberObject(value) {\\n\\ttry {\\n\\t\\tnumToStr.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar numClass = '[object Number]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isNumberObject(value) {\\n\\tif (typeof value === 'number') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-number-object/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-regex/index.js\":\n/*!****************************************!*\\\n !*** ./node_modules/is-regex/index.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar has = __webpack_require__(/*! has */ \\\"./node_modules/has/src/index.js\\\");\\nvar regexExec = RegExp.prototype.exec;\\nvar gOPD = Object.getOwnPropertyDescriptor;\\n\\nvar tryRegexExecCall = function tryRegexExec(value) {\\n\\ttry {\\n\\t\\tvar lastIndex = value.lastIndex;\\n\\t\\tvalue.lastIndex = 0;\\n\\n\\t\\tregexExec.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\t\\tvalue.lastIndex = lastIndex;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar regexClass = '[object RegExp]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isRegex(value) {\\n\\tif (!value || typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\tif (!hasToStringTag) {\\n\\t\\treturn toStr.call(value) === regexClass;\\n\\t}\\n\\n\\tvar descriptor = gOPD(value, 'lastIndex');\\n\\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\\n\\tif (!hasLastIndexDataProperty) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn tryRegexExecCall(value);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-regex/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-set/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/is-set/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\\n\\nvar exported;\\n\\nif (!$Set) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $Map ? Map.prototype.has : null;\\nvar $setHas = $Set ? Set.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isSet(x) {\\n\\t\\t// `Set` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-set/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-string/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/is-string/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar strValue = String.prototype.valueOf;\\nvar tryStringObject = function tryStringObject(value) {\\n\\ttry {\\n\\t\\tstrValue.call(value);\\n\\t\\treturn true;\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\nvar toStr = Object.prototype.toString;\\nvar strClass = '[object String]';\\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\\n\\nmodule.exports = function isString(value) {\\n\\tif (typeof value === 'string') {\\n\\t\\treturn true;\\n\\t}\\n\\tif (typeof value !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-string/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/is-typed-array/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\\n\\tfor (var i = 0; i < array.length; i += 1) {\\n\\t\\tif (array[i] === value) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tvar arr = new global[typedArray]();\\n\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t}\\n\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\tif (!descriptor) {\\n\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t}\\n\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar anyTrue = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!anyTrue) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tanyTrue = getter.call(value) === typedArray;\\n\\t\\t\\t} catch (e) { /**/ }\\n\\t\\t}\\n\\t});\\n\\treturn anyTrue;\\n};\\n\\nmodule.exports = function isTypedArray(value) {\\n\\tif (!value || typeof value !== 'object') { return false; }\\n\\tif (!hasToStringTag) {\\n\\t\\tvar tag = $slice($toString(value), 8, -1);\\n\\t\\treturn $indexOf(typedArrays, tag) > -1;\\n\\t}\\n\\tif (!gOPD) { return false; }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\**********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\**************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/is-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakmap/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakmap/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$mapHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakMap(x) {\\n\\t\\t// `WeakMap` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakMap(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\tif ($setHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$setHas.call(x, $setHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakmap/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/is-weakset/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/is-weakset/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\\n\\nvar exported;\\n\\nif (!$WeakMap) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\texported = function isWeakSet(x) {\\n\\t\\t// `WeakSet` is not present in this environment.\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\\nif (!exported && !$setHas) {\\n\\t// eslint-disable-next-line no-unused-vars\\n\\tmodule.exports = function isWeakSet(x) {\\n\\t\\t// `WeakSet` does not have a `has` method\\n\\t\\treturn false;\\n\\t};\\n}\\n\\nmodule.exports = exported || function isWeakSet(x) {\\n\\tif (!x || typeof x !== 'object') {\\n\\t\\treturn false;\\n\\t}\\n\\ttry {\\n\\t\\t$setHas.call(x, $setHas);\\n\\t\\tif ($mapHas) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t$mapHas.call(x, $mapHas);\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\\n\\t} catch (e) {}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/is-weakset/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-inspect/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/object-inspect/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var hasMap = typeof Map === 'function' && Map.prototype;\\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\\nvar mapForEach = hasMap && Map.prototype.forEach;\\nvar hasSet = typeof Set === 'function' && Set.prototype;\\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\\nvar setForEach = hasSet && Set.prototype.forEach;\\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\\nvar booleanValueOf = Boolean.prototype.valueOf;\\nvar objectToString = Object.prototype.toString;\\nvar match = String.prototype.match;\\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\\n\\nvar inspectCustom = __webpack_require__(/*! ./util.inspect */ 1).custom;\\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\\n\\nmodule.exports = function inspect_(obj, options, depth, seen) {\\n var opts = options || {};\\n\\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\\n throw new TypeError('option \\\"quoteStyle\\\" must be \\\"single\\\" or \\\"double\\\"');\\n }\\n\\n if (typeof obj === 'undefined') {\\n return 'undefined';\\n }\\n if (obj === null) {\\n return 'null';\\n }\\n if (typeof obj === 'boolean') {\\n return obj ? 'true' : 'false';\\n }\\n\\n if (typeof obj === 'string') {\\n return inspectString(obj, opts);\\n }\\n if (typeof obj === 'number') {\\n if (obj === 0) {\\n return Infinity / obj > 0 ? '0' : '-0';\\n }\\n return String(obj);\\n }\\n if (typeof obj === 'bigint') { // eslint-disable-line valid-typeof\\n return String(obj) + 'n';\\n }\\n\\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\\n if (typeof depth === 'undefined') { depth = 0; }\\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\\n return '[Object]';\\n }\\n\\n if (typeof seen === 'undefined') {\\n seen = [];\\n } else if (indexOf(seen, obj) >= 0) {\\n return '[Circular]';\\n }\\n\\n function inspect(value, from) {\\n if (from) {\\n seen = seen.slice();\\n seen.push(from);\\n }\\n return inspect_(value, opts, depth + 1, seen);\\n }\\n\\n if (typeof obj === 'function') {\\n var name = nameOf(obj);\\n return '[Function' + (name ? ': ' + name : '') + ']';\\n }\\n if (isSymbol(obj)) {\\n var symString = Symbol.prototype.toString.call(obj);\\n return typeof obj === 'object' ? markBoxed(symString) : symString;\\n }\\n if (isElement(obj)) {\\n var s = '<' + String(obj.nodeName).toLowerCase();\\n var attrs = obj.attributes || [];\\n for (var i = 0; i < attrs.length; i++) {\\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\\n }\\n s += '>';\\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\\n s += '';\\n return s;\\n }\\n if (isArray(obj)) {\\n if (obj.length === 0) { return '[]'; }\\n return '[ ' + arrObjKeys(obj, inspect).join(', ') + ' ]';\\n }\\n if (isError(obj)) {\\n var parts = arrObjKeys(obj, inspect);\\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\\n }\\n if (typeof obj === 'object') {\\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\\n return obj[inspectSymbol]();\\n } else if (typeof obj.inspect === 'function') {\\n return obj.inspect();\\n }\\n }\\n if (isMap(obj)) {\\n var mapParts = [];\\n mapForEach.call(obj, function (value, key) {\\n mapParts.push(inspect(key, obj) + ' => ' + inspect(value, obj));\\n });\\n return collectionOf('Map', mapSize.call(obj), mapParts);\\n }\\n if (isSet(obj)) {\\n var setParts = [];\\n setForEach.call(obj, function (value) {\\n setParts.push(inspect(value, obj));\\n });\\n return collectionOf('Set', setSize.call(obj), setParts);\\n }\\n if (isWeakMap(obj)) {\\n return weakCollectionOf('WeakMap');\\n }\\n if (isWeakSet(obj)) {\\n return weakCollectionOf('WeakSet');\\n }\\n if (isNumber(obj)) {\\n return markBoxed(inspect(Number(obj)));\\n }\\n if (isBigInt(obj)) {\\n return markBoxed(inspect(bigIntValueOf.call(obj)));\\n }\\n if (isBoolean(obj)) {\\n return markBoxed(booleanValueOf.call(obj));\\n }\\n if (isString(obj)) {\\n return markBoxed(inspect(String(obj)));\\n }\\n if (!isDate(obj) && !isRegExp(obj)) {\\n var xs = arrObjKeys(obj, inspect);\\n if (xs.length === 0) { return '{}'; }\\n return '{ ' + xs.join(', ') + ' }';\\n }\\n return String(obj);\\n};\\n\\nfunction wrapQuotes(s, defaultStyle, opts) {\\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\\\"' : \\\"'\\\";\\n return quoteChar + s + quoteChar;\\n}\\n\\nfunction quote(s) {\\n return String(s).replace(/\\\"/g, '"');\\n}\\n\\nfunction isArray(obj) { return toStr(obj) === '[object Array]'; }\\nfunction isDate(obj) { return toStr(obj) === '[object Date]'; }\\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]'; }\\nfunction isError(obj) { return toStr(obj) === '[object Error]'; }\\nfunction isSymbol(obj) { return toStr(obj) === '[object Symbol]'; }\\nfunction isString(obj) { return toStr(obj) === '[object String]'; }\\nfunction isNumber(obj) { return toStr(obj) === '[object Number]'; }\\nfunction isBigInt(obj) { return toStr(obj) === '[object BigInt]'; }\\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]'; }\\n\\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\\nfunction has(obj, key) {\\n return hasOwn.call(obj, key);\\n}\\n\\nfunction toStr(obj) {\\n return objectToString.call(obj);\\n}\\n\\nfunction nameOf(f) {\\n if (f.name) { return f.name; }\\n var m = match.call(f, /^function\\\\s*([\\\\w$]+)/);\\n if (m) { return m[1]; }\\n return null;\\n}\\n\\nfunction indexOf(xs, x) {\\n if (xs.indexOf) { return xs.indexOf(x); }\\n for (var i = 0, l = xs.length; i < l; i++) {\\n if (xs[i] === x) { return i; }\\n }\\n return -1;\\n}\\n\\nfunction isMap(x) {\\n if (!mapSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n mapSize.call(x);\\n try {\\n setSize.call(x);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof Map; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakMap(x) {\\n if (!weakMapHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakMapHas.call(x, weakMapHas);\\n try {\\n weakSetHas.call(x, weakSetHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isSet(x) {\\n if (!setSize || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n setSize.call(x);\\n try {\\n mapSize.call(x);\\n } catch (m) {\\n return true;\\n }\\n return x instanceof Set; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isWeakSet(x) {\\n if (!weakSetHas || !x || typeof x !== 'object') {\\n return false;\\n }\\n try {\\n weakSetHas.call(x, weakSetHas);\\n try {\\n weakMapHas.call(x, weakMapHas);\\n } catch (s) {\\n return true;\\n }\\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\\n } catch (e) {}\\n return false;\\n}\\n\\nfunction isElement(x) {\\n if (!x || typeof x !== 'object') { return false; }\\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\\n return true;\\n }\\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\\n}\\n\\nfunction inspectString(str, opts) {\\n // eslint-disable-next-line no-control-regex\\n var s = str.replace(/(['\\\\\\\\])/g, '\\\\\\\\$1').replace(/[\\\\x00-\\\\x1f]/g, lowbyte);\\n return wrapQuotes(s, 'single', opts);\\n}\\n\\nfunction lowbyte(c) {\\n var n = c.charCodeAt(0);\\n var x = {\\n 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r'\\n }[n];\\n if (x) { return '\\\\\\\\' + x; }\\n return '\\\\\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16);\\n}\\n\\nfunction markBoxed(str) {\\n return 'Object(' + str + ')';\\n}\\n\\nfunction weakCollectionOf(type) {\\n return type + ' { ? }';\\n}\\n\\nfunction collectionOf(type, size, entries) {\\n return type + ' (' + size + ') {' + entries.join(', ') + '}';\\n}\\n\\nfunction arrObjKeys(obj, inspect) {\\n var isArr = isArray(obj);\\n var xs = [];\\n if (isArr) {\\n xs.length = obj.length;\\n for (var i = 0; i < obj.length; i++) {\\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\\n }\\n }\\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\\n if ((/[^\\\\w$]/).test(key)) {\\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\\n } else {\\n xs.push(key + ': ' + inspect(obj[key], obj));\\n }\\n }\\n return xs;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-inspect/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-is/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/object-is/index.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// http://www.ecma-international.org/ecma-262/6.0/#sec-object.is\\n\\nvar numberIsNaN = function (value) {\\n\\treturn value !== value;\\n};\\n\\nmodule.exports = function is(a, b) {\\n\\tif (a === 0 && b === 0) {\\n\\t\\treturn 1 / a === 1 / b;\\n\\t}\\n\\tif (a === b) {\\n\\t\\treturn true;\\n\\t}\\n\\tif (numberIsNaN(a) && numberIsNaN(b)) {\\n\\t\\treturn true;\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-is/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/object-keys/index.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es5-shim\\nvar has = Object.prototype.hasOwnProperty;\\nvar toStr = Object.prototype.toString;\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/object-keys/isArguments.js\\\");\\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\nvar dontEnums = [\\n\\t'toString',\\n\\t'toLocaleString',\\n\\t'valueOf',\\n\\t'hasOwnProperty',\\n\\t'isPrototypeOf',\\n\\t'propertyIsEnumerable',\\n\\t'constructor'\\n];\\nvar equalsConstructorPrototype = function (o) {\\n\\tvar ctor = o.constructor;\\n\\treturn ctor && ctor.prototype === o;\\n};\\nvar excludedKeys = {\\n\\t$applicationCache: true,\\n\\t$console: true,\\n\\t$external: true,\\n\\t$frame: true,\\n\\t$frameElement: true,\\n\\t$frames: true,\\n\\t$innerHeight: true,\\n\\t$innerWidth: true,\\n\\t$outerHeight: true,\\n\\t$outerWidth: true,\\n\\t$pageXOffset: true,\\n\\t$pageYOffset: true,\\n\\t$parent: true,\\n\\t$scrollLeft: true,\\n\\t$scrollTop: true,\\n\\t$scrollX: true,\\n\\t$scrollY: true,\\n\\t$self: true,\\n\\t$webkitIndexedDB: true,\\n\\t$webkitStorageInfo: true,\\n\\t$window: true\\n};\\nvar hasAutomationEqualityBug = (function () {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined') { return false; }\\n\\tfor (var k in window) {\\n\\t\\ttry {\\n\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n}());\\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t/* global window */\\n\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t}\\n\\ttry {\\n\\t\\treturn equalsConstructorPrototype(o);\\n\\t} catch (e) {\\n\\t\\treturn false;\\n\\t}\\n};\\n\\nvar keysShim = function keys(object) {\\n\\tvar isObject = object !== null && typeof object === 'object';\\n\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\tvar isArguments = isArgs(object);\\n\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\tvar theKeys = [];\\n\\n\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t}\\n\\n\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t}\\n\\t}\\n\\n\\tif (isArguments && object.length > 0) {\\n\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t}\\n\\t} else {\\n\\t\\tfor (var name in object) {\\n\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif (hasDontEnumBug) {\\n\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn theKeys;\\n};\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\treturn (Object.keys(arguments) || '').length === 2;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tvar originalKeys = Object.keys;\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object-keys/isArguments.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/object-keys/isArguments.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/implementation.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/object.assign/implementation.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n// modified from https://github.com/es-shims/es6-shim\\nvar keys = __webpack_require__(/*! object-keys */ \\\"./node_modules/object-keys/index.js\\\");\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar canBeObject = function (obj) {\\n\\treturn typeof obj !== 'undefined' && obj !== null;\\n};\\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ \\\"./node_modules/has-symbols/shams.js\\\")();\\nvar toObject = Object;\\nvar push = bind.call(Function.call, Array.prototype.push);\\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\\n\\nmodule.exports = function assign(target, source1) {\\n\\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\\n\\tvar objTarget = toObject(target);\\n\\tvar s, source, i, props, syms, value, key;\\n\\tfor (s = 1; s < arguments.length; ++s) {\\n\\t\\tsource = toObject(arguments[s]);\\n\\t\\tprops = keys(source);\\n\\t\\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\\n\\t\\tif (getSymbols) {\\n\\t\\t\\tsyms = getSymbols(source);\\n\\t\\t\\tfor (i = 0; i < syms.length; ++i) {\\n\\t\\t\\t\\tkey = syms[i];\\n\\t\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\t\\tpush(props, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (i = 0; i < props.length; ++i) {\\n\\t\\t\\tkey = props[i];\\n\\t\\t\\tvalue = source[key];\\n\\t\\t\\tif (propIsEnumerable(source, key)) {\\n\\t\\t\\t\\tobjTarget[key] = value;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn objTarget;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/object.assign/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar defineProperties = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/object.assign/shim.js\\\");\\n\\nvar polyfill = getPolyfill();\\n\\ndefineProperties(polyfill, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = polyfill;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/polyfill.js\":\n/*!************************************************!*\\\n !*** ./node_modules/object.assign/polyfill.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/object.assign/implementation.js\\\");\\n\\nvar lacksProperEnumerationOrder = function () {\\n\\tif (!Object.assign) {\\n\\t\\treturn false;\\n\\t}\\n\\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\\n\\t// note: this does not detect the bug unless there's 20 characters\\n\\tvar str = 'abcdefghijklmnopqrst';\\n\\tvar letters = str.split('');\\n\\tvar map = {};\\n\\tfor (var i = 0; i < letters.length; ++i) {\\n\\t\\tmap[letters[i]] = letters[i];\\n\\t}\\n\\tvar obj = Object.assign({}, map);\\n\\tvar actual = '';\\n\\tfor (var k in obj) {\\n\\t\\tactual += k;\\n\\t}\\n\\treturn str !== actual;\\n};\\n\\nvar assignHasPendingExceptions = function () {\\n\\tif (!Object.assign || !Object.preventExtensions) {\\n\\t\\treturn false;\\n\\t}\\n\\t// Firefox 37 still has \\\"pending exception\\\" logic in its Object.assign implementation,\\n\\t// which is 72% slower than our shim, and Firefox 40's native implementation.\\n\\tvar thrower = Object.preventExtensions({ 1: 2 });\\n\\ttry {\\n\\t\\tObject.assign(thrower, 'xy');\\n\\t} catch (e) {\\n\\t\\treturn thrower[1] === 'y';\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!Object.assign) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (lacksProperEnumerationOrder()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\tif (assignHasPendingExceptions()) {\\n\\t\\treturn implementation;\\n\\t}\\n\\treturn Object.assign;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/object.assign/shim.js\":\n/*!********************************************!*\\\n !*** ./node_modules/object.assign/shim.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/object.assign/polyfill.js\\\");\\n\\nmodule.exports = function shimAssign() {\\n\\tvar polyfill = getPolyfill();\\n\\tdefine(\\n\\t\\tObject,\\n\\t\\t{ assign: polyfill },\\n\\t\\t{ assign: function () { return Object.assign !== polyfill; } }\\n\\t);\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/object.assign/shim.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 constructor(attrName, keyName, options = {}) {\\n this.attrName = attrName;\\n this.keyName = keyName;\\n const attributeBit = _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].TYPE & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n this.scope =\\n options.scope != null\\n ? // Ignore type bits, force attribute bit\\n (options.scope & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].LEVEL) | attributeBit\\n : _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n if (options.whitelist != null) {\\n this.whitelist = options.whitelist;\\n }\\n }\\n static keys(node) {\\n return Array.from(node.attributes).map((item) => item.name);\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n node.setAttribute(this.keyName, value);\\n return true;\\n }\\n canAdd(_node, value) {\\n if (this.whitelist == null) {\\n return true;\\n }\\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 const 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 const className = node.getAttribute('class') || '';\\n return className\\n .split(/\\\\s+/)\\n .filter((name) => name.indexOf(`${prefix}-`) === 0);\\n}\\nclass ClassAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static keys(node) {\\n return (node.getAttribute('class') || '')\\n .split(/\\\\s+/)\\n .map((name) => name.split('-').slice(0, -1).join('-'));\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\n this.remove(node);\\n node.classList.add(`${this.keyName}-${value}`);\\n return true;\\n }\\n remove(node) {\\n const matches = match(node, this.keyName);\\n matches.forEach((name) => {\\n node.classList.remove(name);\\n });\\n if (node.classList.length === 0) {\\n node.removeAttribute('class');\\n }\\n }\\n value(node) {\\n const result = match(node, this.keyName)[0] || '';\\n const 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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _class__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./class */ \\\"./node_modules/parchment/src/attributor/class.ts\\\");\\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ \\\"./node_modules/parchment/src/attributor/style.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_0__[\\\"default\\\"].find(this.domNode);\\n if (blot == null) {\\n return;\\n }\\n const attributes = _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].keys(this.domNode);\\n const classes = _class__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].keys(this.domNode);\\n const styles = _style__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].keys(this.domNode);\\n attributes\\n .concat(classes)\\n .concat(styles)\\n .forEach((name) => {\\n const attr = blot.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].ATTRIBUTE);\\n if (attr instanceof _attributor__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]) {\\n this.attributes[attr.attrName] = attr;\\n }\\n });\\n }\\n copy(target) {\\n Object.keys(this.attributes).forEach((key) => {\\n const 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 const parts = name.split('-');\\n const rest = parts\\n .slice(1)\\n .map((part) => part[0].toUpperCase() + part.slice(1))\\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((value) => {\\n const arr = value.split(':');\\n return arr[0].trim();\\n });\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value)) {\\n return false;\\n }\\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 const 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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n\\n\\nclass ContainerBlot extends _parent__WEBPACK_IMPORTED_MODULE_1__[\\\"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_0__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\nclass LeafBlot extends _shadow__WEBPACK_IMPORTED_MODULE_1__[\\\"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 }\\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_0__[\\\"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 _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n\\n\\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_2__[\\\"default\\\"].INLINE);\\n Array.from(node.childNodes).forEach((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}\\nclass ParentBlot extends _shadow__WEBPACK_IMPORTED_MODULE_3__[\\\"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 if (ParentBlot.uiClass) {\\n this.uiNode.classList.add(ParentBlot.uiClass);\\n }\\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 const 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_1__[\\\"default\\\"]) {\\n return;\\n }\\n else {\\n throw err;\\n }\\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, (child, offset, childLength) => {\\n child.deleteAt(offset, childLength);\\n });\\n }\\n descendant(criteria, index = 0) {\\n const [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, (child, childIndex, childLength) => {\\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, childIndex, lengthLeft));\\n }\\n lengthLeft -= childLength;\\n });\\n return descendants;\\n }\\n detach() {\\n this.children.forEach((child) => {\\n child.detach();\\n });\\n super.detach();\\n }\\n enforceAllowedChildren() {\\n let done = false;\\n this.children.forEach((child) => {\\n if (done) {\\n return;\\n }\\n const allowed = this.statics.allowedChildren.some((def) => child instanceof def);\\n if (allowed) {\\n return;\\n }\\n if (child.statics.scope === _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"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, (child, offset, childLength) => {\\n child.formatAt(offset, childLength, name, value);\\n });\\n }\\n insertAt(index, value, def) {\\n const [child, offset] = this.children.find(index);\\n if (child) {\\n child.insertAt(offset, value, def);\\n }\\n else {\\n const 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 childBlot.parent = this;\\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.attach();\\n }\\n length() {\\n return this.children.reduce((memo, child) => {\\n return memo + child.length();\\n }, 0);\\n }\\n moveChildren(targetParent, refNode) {\\n this.children.forEach((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 const 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 const [child, offset] = this.children.find(index, inclusive);\\n const 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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const after = this.clone();\\n if (this.parent) {\\n this.parent.insertBefore(after, this.next || undefined);\\n }\\n this.children.forEachAt(index, this.length(), (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 const 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 const addedNodes = [];\\n const removedNodes = [];\\n mutations.forEach((mutation) => {\\n if (mutation.target === this.domNode && mutation.type === 'childList') {\\n addedNodes.push(...mutation.addedNodes);\\n removedNodes.push(...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 const blot = this.scroll.find(node);\\n if (blot == null) {\\n return;\\n }\\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((a, b) => {\\n if (a === b) {\\n return 0;\\n }\\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 const 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}\\nParentBlot.uiClass = '';\\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 _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\nclass ShadowBlot {\\n constructor(scroll, domNode) {\\n this.scroll = scroll;\\n this.domNode = domNode;\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.set(domNode, this);\\n this.prev = null;\\n this.next = null;\\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, 10).toString() === value) {\\n value = parseInt(value, 10);\\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 // Hack for accessing inherited static methods\\n get statics() {\\n return this.constructor;\\n }\\n attach() {\\n // Nothing to do\\n }\\n clone() {\\n const 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 }\\n _registry__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].blots.delete(this.domNode);\\n }\\n deleteAt(index, length) {\\n const blot = this.isolate(index, length);\\n blot.remove();\\n }\\n formatAt(index, length, name, value) {\\n const blot = this.isolate(index, length);\\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOT) != null && value) {\\n blot.wrap(name, value);\\n }\\n else if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE) != null) {\\n const parent = this.scroll.create(this.statics.scope);\\n blot.wrap(parent);\\n parent.format(name, value);\\n }\\n }\\n insertAt(index, value, def) {\\n const blot = def == null\\n ? this.scroll.create('text', value)\\n : this.scroll.create(value, def);\\n const ref = this.split(index);\\n this.parent.insertBefore(blot, ref || undefined);\\n }\\n isolate(index, length) {\\n const 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 }\\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 const wrapper = typeof name === 'string'\\n ? this.scroll.create(name, value)\\n : name;\\n if (this.parent != null) {\\n this.parent.insertBefore(wrapper, this.next || undefined);\\n }\\n if (typeof wrapper.appendChild !== 'function') {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"](`Cannot wrap ${name}`);\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inline */ \\\"./node_modules/parchment/src/blot/inline.ts\\\");\\n\\n\\n\\n\\n\\n\\nclass BlockBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"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_2__[\\\"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_2__[\\\"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.blotName = 'block';\\nBlockBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].BLOCK_BLOT;\\nBlockBlot.tagName = 'P';\\nBlockBlot.allowedChildren = [\\n _inline__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n BlockBlot,\\n _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n];\\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 _scope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.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 _abstract_parent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.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 }\\n // @ts-ignore\\n for (const prop in obj1) {\\n // @ts-ignore\\n if (obj1[prop] !== obj2[prop]) {\\n return false;\\n }\\n }\\n return true;\\n}\\nclass InlineBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_4__[\\\"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 &&\\n 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_2__[\\\"default\\\"].INLINE);\\n if (format == null) {\\n return;\\n }\\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 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.formats()[name] != null ||\\n this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].ATTRIBUTE)) {\\n const 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 const formats = this.formats();\\n if (Object.keys(formats).length === 0) {\\n return this.unwrap(); // unformatted span\\n }\\n const 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_2__[\\\"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 _registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/container */ \\\"./node_modules/parchment/src/blot/abstract/container.ts\\\");\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./block */ \\\"./node_modules/parchment/src/blot/block.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_3__[\\\"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_1__[\\\"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 }\\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((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 }\\n const mark = (blot, markParent = true) => {\\n if (blot == null || blot === this) {\\n return;\\n }\\n if (blot.domNode.parentNode == null) {\\n return;\\n }\\n if (!mutationsMap.has(blot.domNode)) {\\n mutationsMap.set(blot.domNode, []);\\n }\\n if (markParent) {\\n mark(blot.parent);\\n }\\n };\\n const optimize = (blot) => {\\n // Post-order traversal\\n if (!mutationsMap.has(blot.domNode)) {\\n return;\\n }\\n if (blot instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_3__[\\\"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 const blot = this.find(mutation.target, true);\\n if (blot == null) {\\n return;\\n }\\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_3__[\\\"default\\\"]) {\\n child.children.forEach((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 }\\n update(mutations, context = {}) {\\n mutations = mutations || this.observer.takeRecords();\\n const mutationsMap = new WeakMap();\\n mutations\\n .map((mutation) => {\\n const blot = _registry__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].find(mutation.target, true);\\n if (blot == null) {\\n return null;\\n }\\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_4__[\\\"default\\\"];\\nScrollBlot.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], _abstract_container__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]];\\nScrollBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"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 _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n\\n\\nclass TextBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_1__[\\\"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 return domNode.data;\\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 }\\n if (index === this.length()) {\\n return this.next;\\n }\\n }\\n const 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_0__[\\\"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 = null;\\n this.tail = null;\\n this.length = 0;\\n }\\n append(...nodes) {\\n this.insertBefore(nodes[0], null);\\n if (nodes.length > 1) {\\n const rest = nodes.slice(1);\\n this.append(...rest);\\n }\\n }\\n at(index) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur && index > 0) {\\n index -= 1;\\n cur = next();\\n }\\n return cur;\\n }\\n contains(node) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n if (cur === node) {\\n return true;\\n }\\n cur = next();\\n }\\n return false;\\n }\\n indexOf(node) {\\n const next = this.iterator();\\n let cur = next();\\n let index = 0;\\n while (cur) {\\n if (cur === node) {\\n return index;\\n }\\n index += 1;\\n cur = next();\\n }\\n return -1;\\n }\\n insertBefore(node, refNode) {\\n if (node == null) {\\n return;\\n }\\n this.remove(node);\\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;\\n let cur = this.head;\\n while (cur != null) {\\n if (cur === target) {\\n return index;\\n }\\n index += cur.length();\\n cur = cur.next;\\n }\\n return -1;\\n }\\n remove(node) {\\n if (!this.contains(node)) {\\n return;\\n }\\n if (node.prev != null) {\\n node.prev.next = node.next;\\n }\\n if (node.next != null) {\\n node.next.prev = node.prev;\\n }\\n if (node === this.head) {\\n this.head = node.next;\\n }\\n if (node === this.tail) {\\n this.tail = node.prev;\\n }\\n this.length -= 1;\\n }\\n iterator(curNode = this.head) {\\n // TODO use yield when we can\\n return () => {\\n const ret = curNode;\\n if (curNode != null) {\\n curNode = curNode.next;\\n }\\n return ret;\\n };\\n }\\n find(index, inclusive = false) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n const 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 cur = next();\\n }\\n return [null, 0];\\n }\\n forEach(callback) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n callback(cur);\\n cur = next();\\n }\\n }\\n forEachAt(index, length, callback) {\\n if (length <= 0) {\\n return;\\n }\\n const [startNode, offset] = this.find(index);\\n let curIndex = index - offset;\\n const next = this.iterator(startNode);\\n let cur = next();\\n while (cur && curIndex < index + length) {\\n const 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 cur = next();\\n }\\n }\\n map(callback) {\\n return this.reduce((memo, cur) => {\\n memo.push(callback(cur));\\n return memo;\\n }, []);\\n }\\n reduce(callback, memo) {\\n const next = this.iterator();\\n let cur = next();\\n while (cur) {\\n memo = callback(memo, cur);\\n cur = next();\\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_leaf__WEBPACK_IMPORTED_MODULE_1__ = __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_1__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __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_2__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_block__WEBPACK_IMPORTED_MODULE_3__ = __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_3__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_embed__WEBPACK_IMPORTED_MODULE_4__ = __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_4__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_inline__WEBPACK_IMPORTED_MODULE_5__ = __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_5__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_scroll__WEBPACK_IMPORTED_MODULE_6__ = __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_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_store__WEBPACK_IMPORTED_MODULE_10__ = __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_10__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_style__WEBPACK_IMPORTED_MODULE_11__ = __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_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 }\\n if (this.blots.has(node)) {\\n return this.blots.get(node) || null;\\n }\\n if (bubble) {\\n return this.find(node.parentNode, bubble);\\n }\\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 const names = (query.getAttribute('class') || '').split(/\\\\s+/);\\n names.some((name) => {\\n match = this.classes[name];\\n if (match) {\\n return true;\\n }\\n return false;\\n });\\n match = match || this.tags[query.tagName];\\n }\\n if (match == null) {\\n return null;\\n }\\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 }\\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 const 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((tagName) => {\\n return tagName.toUpperCase();\\n });\\n }\\n else {\\n definition.tagName = definition.tagName.toUpperCase();\\n }\\n const 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/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"// shim for using process in browser\\nvar process = module.exports = {};\\n\\n// cached from whatever global is present so that test runners that stub it\\n// don't break things. But we need to wrap it in a try catch in case it is\\n// wrapped in strict mode code which doesn't define any globals. It's inside a\\n// function because try/catches deoptimize in certain engines.\\n\\nvar cachedSetTimeout;\\nvar cachedClearTimeout;\\n\\nfunction defaultSetTimout() {\\n throw new Error('setTimeout has not been defined');\\n}\\nfunction defaultClearTimeout () {\\n throw new Error('clearTimeout has not been defined');\\n}\\n(function () {\\n try {\\n if (typeof setTimeout === 'function') {\\n cachedSetTimeout = setTimeout;\\n } else {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n } catch (e) {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n try {\\n if (typeof clearTimeout === 'function') {\\n cachedClearTimeout = clearTimeout;\\n } else {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n } catch (e) {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n} ())\\nfunction runTimeout(fun) {\\n if (cachedSetTimeout === setTimeout) {\\n //normal enviroments in sane situations\\n return setTimeout(fun, 0);\\n }\\n // if setTimeout wasn't available but was latter defined\\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\\n cachedSetTimeout = setTimeout;\\n return setTimeout(fun, 0);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedSetTimeout(fun, 0);\\n } catch(e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedSetTimeout.call(null, fun, 0);\\n } catch(e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\\n return cachedSetTimeout.call(this, fun, 0);\\n }\\n }\\n\\n\\n}\\nfunction runClearTimeout(marker) {\\n if (cachedClearTimeout === clearTimeout) {\\n //normal enviroments in sane situations\\n return clearTimeout(marker);\\n }\\n // if clearTimeout wasn't available but was latter defined\\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\\n cachedClearTimeout = clearTimeout;\\n return clearTimeout(marker);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedClearTimeout(marker);\\n } catch (e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedClearTimeout.call(null, marker);\\n } catch (e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\\n return cachedClearTimeout.call(this, marker);\\n }\\n }\\n\\n\\n\\n}\\nvar queue = [];\\nvar draining = false;\\nvar currentQueue;\\nvar queueIndex = -1;\\n\\nfunction cleanUpNextTick() {\\n if (!draining || !currentQueue) {\\n return;\\n }\\n draining = false;\\n if (currentQueue.length) {\\n queue = currentQueue.concat(queue);\\n } else {\\n queueIndex = -1;\\n }\\n if (queue.length) {\\n drainQueue();\\n }\\n}\\n\\nfunction drainQueue() {\\n if (draining) {\\n return;\\n }\\n var timeout = runTimeout(cleanUpNextTick);\\n draining = true;\\n\\n var len = queue.length;\\n while(len) {\\n currentQueue = queue;\\n queue = [];\\n while (++queueIndex < len) {\\n if (currentQueue) {\\n currentQueue[queueIndex].run();\\n }\\n }\\n queueIndex = -1;\\n len = queue.length;\\n }\\n currentQueue = null;\\n draining = false;\\n runClearTimeout(timeout);\\n}\\n\\nprocess.nextTick = function (fun) {\\n var args = new Array(arguments.length - 1);\\n if (arguments.length > 1) {\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n }\\n queue.push(new Item(fun, args));\\n if (queue.length === 1 && !draining) {\\n runTimeout(drainQueue);\\n }\\n};\\n\\n// v8 likes predictible objects\\nfunction Item(fun, array) {\\n this.fun = fun;\\n this.array = array;\\n}\\nItem.prototype.run = function () {\\n this.fun.apply(null, this.array);\\n};\\nprocess.title = 'browser';\\nprocess.browser = true;\\nprocess.env = {};\\nprocess.argv = [];\\nprocess.version = ''; // empty string to avoid regexp issues\\nprocess.versions = {};\\n\\nfunction noop() {}\\n\\nprocess.on = noop;\\nprocess.addListener = noop;\\nprocess.once = noop;\\nprocess.off = noop;\\nprocess.removeListener = noop;\\nprocess.removeAllListeners = noop;\\nprocess.emit = noop;\\nprocess.prependListener = noop;\\nprocess.prependOnceListener = noop;\\n\\nprocess.listeners = function (name) { return [] }\\n\\nprocess.binding = function (name) {\\n throw new Error('process.binding is not supported');\\n};\\n\\nprocess.cwd = function () { return '/' };\\nprocess.chdir = function (dir) {\\n throw new Error('process.chdir is not supported');\\n};\\nprocess.umask = function() { return 0; };\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/process/browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/AttributeMap.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/quill-delta/dist/AttributeMap.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar AttributeMap;\\n(function (AttributeMap) {\\n function compose(a, b, keepNull) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = extend_1.default(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 AttributeMap.compose = compose;\\n function diff(a, b) {\\n if (a === void 0) { a = {}; }\\n if (b === void 0) { b = {}; }\\n if (typeof a !== 'object') {\\n a = {};\\n }\\n if (typeof b !== 'object') {\\n b = {};\\n }\\n var attributes = Object.keys(a)\\n .concat(Object.keys(b))\\n .reduce(function (attrs, key) {\\n if (!deep_equal_1.default(a[key], b[key])) {\\n attrs[key] = b[key] === undefined ? null : b[key];\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.diff = diff;\\n function invert(attr, base) {\\n if (attr === void 0) { attr = {}; }\\n if (base === void 0) { base = {}; }\\n attr = attr || {};\\n var baseInverted = Object.keys(base).reduce(function (memo, key) {\\n if (base[key] !== attr[key] && attr[key] !== undefined) {\\n memo[key] = base[key];\\n }\\n return memo;\\n }, {});\\n return Object.keys(attr).reduce(function (memo, key) {\\n if (attr[key] !== base[key] && base[key] === undefined) {\\n memo[key] = null;\\n }\\n return memo;\\n }, baseInverted);\\n }\\n AttributeMap.invert = invert;\\n function transform(a, b, priority) {\\n if (priority === void 0) { priority = false; }\\n if (typeof a !== 'object') {\\n return b;\\n }\\n if (typeof b !== 'object') {\\n return undefined;\\n }\\n if (!priority) {\\n return b; // b simply overwrites us without priority\\n }\\n var attributes = Object.keys(b).reduce(function (attrs, key) {\\n if (a[key] === undefined) {\\n attrs[key] = b[key]; // null is a valid value\\n }\\n return attrs;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n AttributeMap.transform = transform;\\n})(AttributeMap || (AttributeMap = {}));\\nexports.default = AttributeMap;\\n//# sourceMappingURL=AttributeMap.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/AttributeMap.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Delta.js\":\n/*!************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Delta.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nvar deep_equal_1 = __importDefault(__webpack_require__(/*! deep-equal */ \\\"./node_modules/quill-delta/node_modules/deep-equal/index.js\\\"));\\nvar extend_1 = __importDefault(__webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\"));\\nvar fast_diff_1 = __importDefault(__webpack_require__(/*! fast-diff */ \\\"./node_modules/fast-diff/diff.js\\\"));\\nvar AttributeMap_1 = __importDefault(__webpack_require__(/*! ./AttributeMap */ \\\"./node_modules/quill-delta/dist/AttributeMap.js\\\"));\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\\nvar Delta = /** @class */ (function () {\\n function Delta(ops) {\\n // Assume we are given a well formed ops\\n if (Array.isArray(ops)) {\\n this.ops = ops;\\n }\\n else if (ops != null && Array.isArray(ops.ops)) {\\n this.ops = ops.ops;\\n }\\n else {\\n this.ops = [];\\n }\\n }\\n Delta.prototype.insert = function (arg, attributes) {\\n var newOp = {};\\n if (typeof arg === 'string' && arg.length === 0) {\\n return this;\\n }\\n newOp.insert = arg;\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.delete = function (length) {\\n if (length <= 0) {\\n return this;\\n }\\n return this.push({ delete: length });\\n };\\n Delta.prototype.retain = function (length, attributes) {\\n if (length <= 0) {\\n return this;\\n }\\n var newOp = { retain: length };\\n if (attributes != null &&\\n typeof attributes === 'object' &&\\n Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n };\\n Delta.prototype.push = function (newOp) {\\n var index = this.ops.length;\\n var lastOp = this.ops[index - 1];\\n newOp = extend_1.default(true, {}, newOp);\\n if (typeof lastOp === 'object') {\\n if (typeof newOp.delete === 'number' &&\\n 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 (deep_equal_1.default(newOp.attributes, lastOp.attributes)) {\\n if (typeof newOp.insert === 'string' &&\\n typeof lastOp.insert === 'string') {\\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n else if (typeof newOp.retain === 'number' &&\\n typeof lastOp.retain === 'number') {\\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\\n if (typeof newOp.attributes === 'object') {\\n this.ops[index - 1].attributes = newOp.attributes;\\n }\\n return this;\\n }\\n }\\n }\\n if (index === this.ops.length) {\\n this.ops.push(newOp);\\n }\\n else {\\n this.ops.splice(index, 0, newOp);\\n }\\n return this;\\n };\\n Delta.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 Delta.prototype.filter = function (predicate) {\\n return this.ops.filter(predicate);\\n };\\n Delta.prototype.forEach = function (predicate) {\\n this.ops.forEach(predicate);\\n };\\n Delta.prototype.map = function (predicate) {\\n return this.ops.map(predicate);\\n };\\n Delta.prototype.partition = function (predicate) {\\n var passed = [];\\n var failed = [];\\n this.forEach(function (op) {\\n var target = predicate(op) ? passed : failed;\\n target.push(op);\\n });\\n return [passed, failed];\\n };\\n Delta.prototype.reduce = function (predicate, initialValue) {\\n return this.ops.reduce(predicate, initialValue);\\n };\\n Delta.prototype.changeLength = function () {\\n return this.reduce(function (length, elem) {\\n if (elem.insert) {\\n return length + Op_1.default.length(elem);\\n }\\n else if (elem.delete) {\\n return length - elem.delete;\\n }\\n return length;\\n }, 0);\\n };\\n Delta.prototype.length = function () {\\n return this.reduce(function (length, elem) {\\n return length + Op_1.default.length(elem);\\n }, 0);\\n };\\n Delta.prototype.slice = function (start, end) {\\n if (start === void 0) { start = 0; }\\n if (end === void 0) { end = Infinity; }\\n var ops = [];\\n var iter = Op_1.default.iterator(this.ops);\\n var index = 0;\\n while (index < end && iter.hasNext()) {\\n var nextOp = void 0;\\n if (index < start) {\\n nextOp = iter.next(start - index);\\n }\\n else {\\n nextOp = iter.next(end - index);\\n ops.push(nextOp);\\n }\\n index += Op_1.default.length(nextOp);\\n }\\n return new Delta(ops);\\n };\\n Delta.prototype.compose = function (other) {\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var ops = [];\\n var firstOther = otherIter.peek();\\n if (firstOther != null &&\\n typeof firstOther.retain === 'number' &&\\n firstOther.attributes == null) {\\n var firstLeft = firstOther.retain;\\n while (thisIter.peekType() === 'insert' &&\\n thisIter.peekLength() <= firstLeft) {\\n firstLeft -= thisIter.peekLength();\\n ops.push(thisIter.next());\\n }\\n if (firstOther.retain - firstLeft > 0) {\\n otherIter.next(firstOther.retain - firstLeft);\\n }\\n }\\n var delta = new Delta(ops);\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else if (thisIter.peekType() === 'delete') {\\n delta.push(thisIter.next());\\n }\\n else {\\n var length_1 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_1);\\n var otherOp = otherIter.next(length_1);\\n if (typeof otherOp.retain === 'number') {\\n var newOp = {};\\n if (typeof thisOp.retain === 'number') {\\n newOp.retain = length_1;\\n }\\n else {\\n newOp.insert = thisOp.insert;\\n }\\n // Preserve null when composing with a retain, otherwise remove it for inserts\\n var attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\\n if (attributes) {\\n newOp.attributes = attributes;\\n }\\n delta.push(newOp);\\n // Optimization if rest of other is just retain\\n if (!otherIter.hasNext() &&\\n deep_equal_1.default(delta.ops[delta.ops.length - 1], newOp)) {\\n var rest = new Delta(thisIter.rest());\\n return delta.concat(rest).chop();\\n }\\n // Other op should be delete, we could be an insert or retain\\n // Insert + delete cancels out\\n }\\n else if (typeof otherOp.delete === 'number' &&\\n typeof thisOp.retain === 'number') {\\n delta.push(otherOp);\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.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 Delta.prototype.diff = function (other, cursor) {\\n if (this.ops === other.ops) {\\n return new Delta();\\n }\\n var strings = [this, other].map(function (delta) {\\n return delta\\n .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 })\\n .join('');\\n });\\n var retDelta = new Delta();\\n var diffResult = fast_diff_1.default(strings[0], strings[1], cursor);\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.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 fast_diff_1.default.INSERT:\\n opLength = Math.min(otherIter.peekLength(), length);\\n retDelta.push(otherIter.next(opLength));\\n break;\\n case fast_diff_1.default.DELETE:\\n opLength = Math.min(length, thisIter.peekLength());\\n thisIter.next(opLength);\\n retDelta.delete(opLength);\\n break;\\n case fast_diff_1.default.EQUAL:\\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\\n var thisOp = thisIter.next(opLength);\\n var otherOp = otherIter.next(opLength);\\n if (deep_equal_1.default(thisOp.insert, otherOp.insert)) {\\n retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\\n }\\n else {\\n retDelta.push(otherOp).delete(opLength);\\n }\\n break;\\n }\\n length -= opLength;\\n }\\n });\\n return retDelta.chop();\\n };\\n Delta.prototype.eachLine = function (predicate, newline) {\\n if (newline === void 0) { newline = '\\\\n'; }\\n var iter = Op_1.default.iterator(this.ops);\\n var line = new Delta();\\n var i = 0;\\n while (iter.hasNext()) {\\n if (iter.peekType() !== 'insert') {\\n return;\\n }\\n var thisOp = iter.peek();\\n var start = Op_1.default.length(thisOp) - iter.peekLength();\\n var index = typeof thisOp.insert === 'string'\\n ? thisOp.insert.indexOf(newline, start) - start\\n : -1;\\n if (index < 0) {\\n line.push(iter.next());\\n }\\n else if (index > 0) {\\n line.push(iter.next(index));\\n }\\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 Delta.prototype.invert = function (base) {\\n var inverted = new Delta();\\n this.reduce(function (baseIndex, op) {\\n if (op.insert) {\\n inverted.delete(Op_1.default.length(op));\\n }\\n else if (op.retain && op.attributes == null) {\\n inverted.retain(op.retain);\\n return baseIndex + op.retain;\\n }\\n else if (op.delete || (op.retain && op.attributes)) {\\n var length_2 = (op.delete || op.retain);\\n var slice = base.slice(baseIndex, baseIndex + length_2);\\n slice.forEach(function (baseOp) {\\n if (op.delete) {\\n inverted.push(baseOp);\\n }\\n else if (op.retain && op.attributes) {\\n inverted.retain(Op_1.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\\n }\\n });\\n return baseIndex + length_2;\\n }\\n return baseIndex;\\n }, 0);\\n return inverted.chop();\\n };\\n Delta.prototype.transform = function (arg, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n if (typeof arg === 'number') {\\n return this.transformPosition(arg, priority);\\n }\\n var other = arg;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var otherIter = Op_1.default.iterator(other.ops);\\n var delta = new Delta();\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (thisIter.peekType() === 'insert' &&\\n (priority || otherIter.peekType() !== 'insert')) {\\n delta.retain(Op_1.default.length(thisIter.next()));\\n }\\n else if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n }\\n else {\\n var length_3 = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length_3);\\n var otherOp = otherIter.next(length_3);\\n if (thisOp.delete) {\\n // Our delete either makes their delete redundant or removes their retain\\n continue;\\n }\\n else if (otherOp.delete) {\\n delta.push(otherOp);\\n }\\n else {\\n // We retain either their retain or insert\\n delta.retain(length_3, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\\n }\\n }\\n }\\n return delta.chop();\\n };\\n Delta.prototype.transformPosition = function (index, priority) {\\n if (priority === void 0) { priority = false; }\\n priority = !!priority;\\n var thisIter = Op_1.default.iterator(this.ops);\\n var offset = 0;\\n while (thisIter.hasNext() && offset <= index) {\\n var length_4 = thisIter.peekLength();\\n var nextType = thisIter.peekType();\\n thisIter.next();\\n if (nextType === 'delete') {\\n index -= Math.min(length_4, index - offset);\\n continue;\\n }\\n else if (nextType === 'insert' && (offset < index || !priority)) {\\n index += length_4;\\n }\\n offset += length_4;\\n }\\n return index;\\n };\\n Delta.Op = Op_1.default;\\n Delta.AttributeMap = AttributeMap_1.default;\\n return Delta;\\n}());\\nmodule.exports = Delta;\\n//# sourceMappingURL=Delta.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Delta.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Iterator.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/quill-delta/dist/Iterator.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Op_1 = __importDefault(__webpack_require__(/*! ./Op */ \\\"./node_modules/quill-delta/dist/Op.js\\\"));\\nvar Iterator = /** @class */ (function () {\\n function Iterator(ops) {\\n this.ops = ops;\\n this.index = 0;\\n this.offset = 0;\\n }\\n Iterator.prototype.hasNext = function () {\\n return this.peekLength() < Infinity;\\n };\\n Iterator.prototype.next = function (length) {\\n if (!length) {\\n length = Infinity;\\n }\\n var nextOp = this.ops[this.index];\\n if (nextOp) {\\n var offset = this.offset;\\n var opLength = Op_1.default.length(nextOp);\\n if (length >= opLength - offset) {\\n length = opLength - offset;\\n this.index += 1;\\n this.offset = 0;\\n }\\n else {\\n this.offset += length;\\n }\\n if (typeof nextOp.delete === 'number') {\\n return { delete: length };\\n }\\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 }\\n else if (typeof nextOp.insert === 'string') {\\n retOp.insert = nextOp.insert.substr(offset, length);\\n }\\n else {\\n // offset should === 0, length should === 1\\n retOp.insert = nextOp.insert;\\n }\\n return retOp;\\n }\\n }\\n else {\\n return { retain: Infinity };\\n }\\n };\\n Iterator.prototype.peek = function () {\\n return this.ops[this.index];\\n };\\n Iterator.prototype.peekLength = function () {\\n if (this.ops[this.index]) {\\n // Should never return 0 if our index is being managed correctly\\n return Op_1.default.length(this.ops[this.index]) - this.offset;\\n }\\n else {\\n return Infinity;\\n }\\n };\\n Iterator.prototype.peekType = function () {\\n if (this.ops[this.index]) {\\n if (typeof this.ops[this.index].delete === 'number') {\\n return 'delete';\\n }\\n else if (typeof this.ops[this.index].retain === 'number') {\\n return 'retain';\\n }\\n else {\\n return 'insert';\\n }\\n }\\n return 'retain';\\n };\\n Iterator.prototype.rest = function () {\\n if (!this.hasNext()) {\\n return [];\\n }\\n else if (this.offset === 0) {\\n return this.ops.slice(this.index);\\n }\\n else {\\n var offset = this.offset;\\n var index = this.index;\\n var next = this.next();\\n var rest = this.ops.slice(this.index);\\n this.offset = offset;\\n this.index = index;\\n return [next].concat(rest);\\n }\\n };\\n return Iterator;\\n}());\\nexports.default = Iterator;\\n//# sourceMappingURL=Iterator.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Iterator.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/dist/Op.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/quill-delta/dist/Op.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __importDefault = (this && this.__importDefault) || function (mod) {\\n return (mod && mod.__esModule) ? mod : { \\\"default\\\": mod };\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\nvar Iterator_1 = __importDefault(__webpack_require__(/*! ./Iterator */ \\\"./node_modules/quill-delta/dist/Iterator.js\\\"));\\nvar Op;\\n(function (Op) {\\n function iterator(ops) {\\n return new Iterator_1.default(ops);\\n }\\n Op.iterator = iterator;\\n function length(op) {\\n if (typeof op.delete === 'number') {\\n return op.delete;\\n }\\n else if (typeof op.retain === 'number') {\\n return op.retain;\\n }\\n else {\\n return typeof op.insert === 'string' ? op.insert.length : 1;\\n }\\n }\\n Op.length = length;\\n})(Op || (Op = {}));\\nexports.default = Op;\\n//# sourceMappingURL=Op.js.map\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/dist/Op.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/deep-equal/index.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/deep-equal/index.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var objectKeys = __webpack_require__(/*! object-keys */ \\\"./node_modules/quill-delta/node_modules/object-keys/index.js\\\");\\nvar isArguments = __webpack_require__(/*! is-arguments */ \\\"./node_modules/is-arguments/index.js\\\");\\nvar is = __webpack_require__(/*! object-is */ \\\"./node_modules/object-is/index.js\\\");\\nvar isRegex = __webpack_require__(/*! is-regex */ \\\"./node_modules/is-regex/index.js\\\");\\nvar flags = __webpack_require__(/*! regexp.prototype.flags */ \\\"./node_modules/regexp.prototype.flags/index.js\\\");\\nvar isDate = __webpack_require__(/*! is-date-object */ \\\"./node_modules/is-date-object/index.js\\\");\\n\\nvar getTime = Date.prototype.getTime;\\n\\nfunction deepEqual(actual, expected, options) {\\n var opts = options || {};\\n\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (opts.strict ? is(actual, expected) : actual === expected) {\\n return true;\\n }\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\\n return opts.strict ? is(actual, expected) : actual == expected;\\n }\\n\\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 */\\n // eslint-disable-next-line no-use-before-define\\n return objEquiv(actual, expected, opts);\\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') {\\n return false;\\n }\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') {\\n return false;\\n }\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts) {\\n /* eslint max-statements: [2, 50] */\\n var i, key;\\n if (typeof a !== typeof b) { return false; }\\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\\n\\n // an identical 'prototype' property.\\n if (a.prototype !== b.prototype) { return false; }\\n\\n if (isArguments(a) !== isArguments(b)) { return false; }\\n\\n var aIsRegex = isRegex(a);\\n var bIsRegex = isRegex(b);\\n if (aIsRegex !== bIsRegex) { return false; }\\n if (aIsRegex || bIsRegex) {\\n return a.source === b.source && flags(a) === flags(b);\\n }\\n\\n if (isDate(a) && isDate(b)) {\\n return getTime.call(a) === getTime.call(b);\\n }\\n\\n var aIsBuffer = isBuffer(a);\\n var bIsBuffer = isBuffer(b);\\n if (aIsBuffer !== bIsBuffer) { return false; }\\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\\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\\n if (typeof a !== typeof b) { return false; }\\n\\n try {\\n var ka = objectKeys(a);\\n var 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 hasOwnProperty)\\n if (ka.length !== kb.length) { return false; }\\n\\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]) { return false; }\\n }\\n // equivalent values for every corresponding key, and ~~~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\\n return true;\\n}\\n\\nmodule.exports = deepEqual;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/implementation.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/implementation.js ***!\n \\*****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar keysShim;\\nif (!Object.keys) {\\n\\t// modified from https://github.com/es-shims/es5-shim\\n\\tvar has = Object.prototype.hasOwnProperty;\\n\\tvar toStr = Object.prototype.toString;\\n\\tvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\"); // eslint-disable-line global-require\\n\\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\\n\\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\\n\\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\\n\\tvar dontEnums = [\\n\\t\\t'toString',\\n\\t\\t'toLocaleString',\\n\\t\\t'valueOf',\\n\\t\\t'hasOwnProperty',\\n\\t\\t'isPrototypeOf',\\n\\t\\t'propertyIsEnumerable',\\n\\t\\t'constructor'\\n\\t];\\n\\tvar equalsConstructorPrototype = function (o) {\\n\\t\\tvar ctor = o.constructor;\\n\\t\\treturn ctor && ctor.prototype === o;\\n\\t};\\n\\tvar excludedKeys = {\\n\\t\\t$applicationCache: true,\\n\\t\\t$console: true,\\n\\t\\t$external: true,\\n\\t\\t$frame: true,\\n\\t\\t$frameElement: true,\\n\\t\\t$frames: true,\\n\\t\\t$innerHeight: true,\\n\\t\\t$innerWidth: true,\\n\\t\\t$onmozfullscreenchange: true,\\n\\t\\t$onmozfullscreenerror: true,\\n\\t\\t$outerHeight: true,\\n\\t\\t$outerWidth: true,\\n\\t\\t$pageXOffset: true,\\n\\t\\t$pageYOffset: true,\\n\\t\\t$parent: true,\\n\\t\\t$scrollLeft: true,\\n\\t\\t$scrollTop: true,\\n\\t\\t$scrollX: true,\\n\\t\\t$scrollY: true,\\n\\t\\t$self: true,\\n\\t\\t$webkitIndexedDB: true,\\n\\t\\t$webkitStorageInfo: true,\\n\\t\\t$window: true\\n\\t};\\n\\tvar hasAutomationEqualityBug = (function () {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined') { return false; }\\n\\t\\tfor (var k in window) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tequalsConstructorPrototype(window[k]);\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t}());\\n\\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\\n\\t\\t/* global window */\\n\\t\\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn equalsConstructorPrototype(o);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n\\n\\tkeysShim = function keys(object) {\\n\\t\\tvar isObject = object !== null && typeof object === 'object';\\n\\t\\tvar isFunction = toStr.call(object) === '[object Function]';\\n\\t\\tvar isArguments = isArgs(object);\\n\\t\\tvar isString = isObject && toStr.call(object) === '[object String]';\\n\\t\\tvar theKeys = [];\\n\\n\\t\\tif (!isObject && !isFunction && !isArguments) {\\n\\t\\t\\tthrow new TypeError('Object.keys called on a non-object');\\n\\t\\t}\\n\\n\\t\\tvar skipProto = hasProtoEnumBug && isFunction;\\n\\t\\tif (isString && object.length > 0 && !has.call(object, 0)) {\\n\\t\\t\\tfor (var i = 0; i < object.length; ++i) {\\n\\t\\t\\t\\ttheKeys.push(String(i));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (isArguments && object.length > 0) {\\n\\t\\t\\tfor (var j = 0; j < object.length; ++j) {\\n\\t\\t\\t\\ttheKeys.push(String(j));\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var name in object) {\\n\\t\\t\\t\\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\\n\\t\\t\\t\\t\\ttheKeys.push(String(name));\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (hasDontEnumBug) {\\n\\t\\t\\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\\n\\n\\t\\t\\tfor (var k = 0; k < dontEnums.length; ++k) {\\n\\t\\t\\t\\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\\n\\t\\t\\t\\t\\ttheKeys.push(dontEnums[k]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn theKeys;\\n\\t};\\n}\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar slice = Array.prototype.slice;\\nvar isArgs = __webpack_require__(/*! ./isArguments */ \\\"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\\\");\\n\\nvar origKeys = Object.keys;\\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ \\\"./node_modules/quill-delta/node_modules/object-keys/implementation.js\\\");\\n\\nvar originalKeys = Object.keys;\\n\\nkeysShim.shim = function shimObjectKeys() {\\n\\tif (Object.keys) {\\n\\t\\tvar keysWorksWithArguments = (function () {\\n\\t\\t\\t// Safari 5.0 bug\\n\\t\\t\\tvar args = Object.keys(arguments);\\n\\t\\t\\treturn args && args.length === arguments.length;\\n\\t\\t}(1, 2));\\n\\t\\tif (!keysWorksWithArguments) {\\n\\t\\t\\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\\n\\t\\t\\t\\tif (isArgs(object)) {\\n\\t\\t\\t\\t\\treturn originalKeys(slice.call(object));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn originalKeys(object);\\n\\t\\t\\t};\\n\\t\\t}\\n\\t} else {\\n\\t\\tObject.keys = keysShim;\\n\\t}\\n\\treturn Object.keys || keysShim;\\n};\\n\\nmodule.exports = keysShim;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/node_modules/object-keys/isArguments.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/quill-delta/node_modules/object-keys/isArguments.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\n\\nmodule.exports = function isArguments(value) {\\n\\tvar str = toStr.call(value);\\n\\tvar isArgs = str === '[object Arguments]';\\n\\tif (!isArgs) {\\n\\t\\tisArgs = str !== '[object Array]' &&\\n\\t\\t\\tvalue !== null &&\\n\\t\\t\\ttypeof value === 'object' &&\\n\\t\\t\\ttypeof value.length === 'number' &&\\n\\t\\t\\tvalue.length >= 0 &&\\n\\t\\t\\ttoStr.call(value.callee) === '[object Function]';\\n\\t}\\n\\treturn isArgs;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/node_modules/object-keys/isArguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/implementation.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/implementation.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar $Object = Object;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function flags() {\\n\\tif (this != null && this !== $Object(this)) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\\n\\t}\\n\\tvar result = '';\\n\\tif (this.global) {\\n\\t\\tresult += 'g';\\n\\t}\\n\\tif (this.ignoreCase) {\\n\\t\\tresult += 'i';\\n\\t}\\n\\tif (this.multiline) {\\n\\t\\tresult += 'm';\\n\\t}\\n\\tif (this.dotAll) {\\n\\t\\tresult += 's';\\n\\t}\\n\\tif (this.unicode) {\\n\\t\\tresult += 'u';\\n\\t}\\n\\tif (this.sticky) {\\n\\t\\tresult += 'y';\\n\\t}\\n\\treturn result;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/implementation.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar define = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\");\\nvar callBind = __webpack_require__(/*! es-abstract/helpers/callBind */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar shim = __webpack_require__(/*! ./shim */ \\\"./node_modules/regexp.prototype.flags/shim.js\\\");\\n\\nvar flagsBound = callBind(implementation);\\n\\ndefine(flagsBound, {\\n\\tgetPolyfill: getPolyfill,\\n\\timplementation: implementation,\\n\\tshim: shim\\n});\\n\\nmodule.exports = flagsBound;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js ***!\n \\******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/regexp.prototype.flags/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/polyfill.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/polyfill.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar implementation = __webpack_require__(/*! ./implementation */ \\\"./node_modules/regexp.prototype.flags/implementation.js\\\");\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function getPolyfill() {\\n\\tif (!supportsDescriptors) {\\n\\t\\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tif ((/a/mig).flags === 'gim') {\\n\\t\\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\\n\\t\\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\\n\\t\\t\\treturn descriptor.get;\\n\\t\\t}\\n\\t}\\n\\treturn implementation;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/polyfill.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/regexp.prototype.flags/shim.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/regexp.prototype.flags/shim.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar supportsDescriptors = __webpack_require__(/*! define-properties */ \\\"./node_modules/define-properties/index.js\\\").supportsDescriptors;\\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \\\"./node_modules/regexp.prototype.flags/polyfill.js\\\");\\nvar gOPD = Object.getOwnPropertyDescriptor;\\nvar defineProperty = Object.defineProperty;\\nvar TypeErr = TypeError;\\nvar getProto = Object.getPrototypeOf;\\nvar regex = /a/;\\n\\nmodule.exports = function shimFlags() {\\n\\tif (!supportsDescriptors || !getProto) {\\n\\t\\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\\n\\t}\\n\\tvar polyfill = getPolyfill();\\n\\tvar proto = getProto(regex);\\n\\tvar descriptor = gOPD(proto, 'flags');\\n\\tif (!descriptor || descriptor.get !== polyfill) {\\n\\t\\tdefineProperty(proto, 'flags', {\\n\\t\\t\\tconfigurable: true,\\n\\t\\t\\tenumerable: false,\\n\\t\\t\\tget: polyfill\\n\\t\\t});\\n\\t}\\n\\treturn polyfill;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/regexp.prototype.flags/shim.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/side-channel/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! es-abstract/GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\\\");\\nvar inspect = __webpack_require__(/*! object-inspect */ \\\"./node_modules/object-inspect/index.js\\\");\\n\\nvar $TypeError = GetIntrinsic('%TypeError%');\\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\\nvar $Map = GetIntrinsic('%Map%', true);\\nvar $push = callBound('Array.prototype.push');\\n\\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\\nvar $mapGet = callBound('Map.prototype.get', true);\\nvar $mapSet = callBound('Map.prototype.set', true);\\nvar $mapHas = callBound('Map.prototype.has', true);\\nvar objectGet = function (objects, key) { // eslint-disable-line consistent-return\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn objects[i].value;\\n\\t\\t}\\n\\t}\\n};\\nvar objectSet = function (objects, key, value) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\tobjects[i].value = value; // eslint-disable-line no-param-reassign\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t}\\n\\t$push(objects, {\\n\\t\\tkey: key,\\n\\t\\tvalue: value\\n\\t});\\n};\\nvar objectHas = function (objects, key) {\\n\\tfor (var i = 0; i < objects.length; i += 1) {\\n\\t\\tif (objects[i].key === key) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\nmodule.exports = function getSideChannel() {\\n\\tvar $wm;\\n\\tvar $m;\\n\\tvar $o;\\n\\tvar channel = {\\n\\t\\tassert: function (key) {\\n\\t\\t\\tif (!channel.has(key)) {\\n\\t\\t\\t\\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tget: function (key) { // eslint-disable-line consistent-return\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapGet($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapGet($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectGet($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\thas: function (key) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif ($wm) {\\n\\t\\t\\t\\t\\treturn $weakMapHas($wm, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif ($m) {\\n\\t\\t\\t\\t\\treturn $mapHas($m, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif ($o) { // eslint-disable-line no-lonely-if\\n\\t\\t\\t\\t\\treturn objectHas($o, key);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\tset: function (key, value) {\\n\\t\\t\\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\\n\\t\\t\\t\\tif (!$wm) {\\n\\t\\t\\t\\t\\t$wm = new $WeakMap();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$weakMapSet($wm, key, value);\\n\\t\\t\\t} else if ($Map) {\\n\\t\\t\\t\\tif (!$m) {\\n\\t\\t\\t\\t\\t$m = new $Map();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$mapSet($m, key, value);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (!$o) {\\n\\t\\t\\t\\t\\t$o = [];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tobjectSet($o, key, value);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\treturn channel;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js ***!\n \\********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/side-channel/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/side-channel/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/side-channel/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var g;\\n\\n// This works in non-strict mode\\ng = (function() {\\n\\treturn this;\\n})();\\n\\ntry {\\n\\t// This works if eval is allowed (see CSP)\\n\\tg = g || new Function(\\\"return this\\\")();\\n} catch (e) {\\n\\t// This works if the window reference is available\\n\\tif (typeof window === \\\"object\\\") g = window;\\n}\\n\\n// g can still be undefined, but nothing to do about it...\\n// We return undefined, instead of nothing here, so it's\\n// easier to handle this case. if(!global) { ...}\\n\\nmodule.exports = g;\\n\\n\\n//# sourceURL=webpack://Quill/(webpack)/buildin/global.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isString = __webpack_require__(/*! is-string */ \\\"./node_modules/is-string/index.js\\\");\\nvar isNumber = __webpack_require__(/*! is-number-object */ \\\"./node_modules/is-number-object/index.js\\\");\\nvar isBoolean = __webpack_require__(/*! is-boolean-object */ \\\"./node_modules/is-boolean-object/index.js\\\");\\nvar isSymbol = __webpack_require__(/*! is-symbol */ \\\"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\\\");\\nvar isBigInt = __webpack_require__(/*! is-bigint */ \\\"./node_modules/is-bigint/index.js\\\");\\n\\n// eslint-disable-next-line consistent-return\\nmodule.exports = function whichBoxedPrimitive(value) {\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\\n\\t\\treturn null;\\n\\t}\\n\\tif (isString(value)) {\\n\\t\\treturn 'String';\\n\\t}\\n\\tif (isNumber(value)) {\\n\\t\\treturn 'Number';\\n\\t}\\n\\tif (isBoolean(value)) {\\n\\t\\treturn 'Boolean';\\n\\t}\\n\\tif (isSymbol(value)) {\\n\\t\\treturn 'Symbol';\\n\\t}\\n\\tif (isBigInt(value)) {\\n\\t\\treturn 'BigInt';\\n\\t}\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar toStr = Object.prototype.toString;\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nif (hasSymbols) {\\n\\tvar symToStr = Symbol.prototype.toString;\\n\\tvar symStringRegex = /^Symbol\\\\(.*\\\\)$/;\\n\\tvar isSymbolObject = function isRealSymbolObject(value) {\\n\\t\\tif (typeof value.valueOf() !== 'symbol') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn symStringRegex.test(symToStr.call(value));\\n\\t};\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\tif (typeof value === 'symbol') {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t\\tif (toStr.call(value) !== '[object Symbol]') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\treturn isSymbolObject(value);\\n\\t\\t} catch (e) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t};\\n} else {\\n\\n\\tmodule.exports = function isSymbol(value) {\\n\\t\\t// this environment does not support Symbols.\\n\\t\\treturn false && false;\\n\\t};\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-boxed-primitive/node_modules/is-symbol/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-collection/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/which-collection/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar isMap = __webpack_require__(/*! is-map */ \\\"./node_modules/is-map/index.js\\\");\\nvar isSet = __webpack_require__(/*! is-set */ \\\"./node_modules/is-set/index.js\\\");\\nvar isWeakMap = __webpack_require__(/*! is-weakmap */ \\\"./node_modules/is-weakmap/index.js\\\");\\nvar isWeakSet = __webpack_require__(/*! is-weakset */ \\\"./node_modules/is-weakset/index.js\\\");\\n\\nmodule.exports = function whichCollection(value) {\\n\\tif (value && typeof value === 'object') {\\n\\t\\tif (isMap(value)) {\\n\\t\\t\\treturn 'Map';\\n\\t\\t}\\n\\t\\tif (isSet(value)) {\\n\\t\\t\\treturn 'Set';\\n\\t\\t}\\n\\t\\tif (isWeakMap(value)) {\\n\\t\\t\\treturn 'WeakMap';\\n\\t\\t}\\n\\t\\tif (isWeakSet(value)) {\\n\\t\\t\\treturn 'WeakSet';\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-collection/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/which-typed-array/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nvar forEach = __webpack_require__(/*! foreach */ \\\"./node_modules/foreach/index.js\\\");\\nvar availableTypedArrays = __webpack_require__(/*! available-typed-arrays */ \\\"./node_modules/available-typed-arrays/index.js\\\");\\nvar callBound = __webpack_require__(/*! es-abstract/helpers/callBound */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\\\");\\n\\nvar $toString = callBound('Object.prototype.toString');\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\\n\\nvar typedArrays = availableTypedArrays();\\n\\nvar $slice = callBound('String.prototype.slice');\\nvar toStrTags = {};\\nvar gOPD = __webpack_require__(/*! es-abstract/helpers/getOwnPropertyDescriptor */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\\\");\\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\\nif (hasToStringTag && gOPD && getPrototypeOf) {\\n\\tforEach(typedArrays, function (typedArray) {\\n\\t\\tif (typeof global[typedArray] === 'function') {\\n\\t\\t\\tvar arr = new global[typedArray]();\\n\\t\\t\\tif (!(Symbol.toStringTag in arr)) {\\n\\t\\t\\t\\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\\n\\t\\t\\t}\\n\\t\\t\\tvar proto = getPrototypeOf(arr);\\n\\t\\t\\tvar descriptor = gOPD(proto, Symbol.toStringTag);\\n\\t\\t\\tif (!descriptor) {\\n\\t\\t\\t\\tvar superProto = getPrototypeOf(proto);\\n\\t\\t\\t\\tdescriptor = gOPD(superProto, Symbol.toStringTag);\\n\\t\\t\\t}\\n\\t\\t\\ttoStrTags[typedArray] = descriptor.get;\\n\\t\\t}\\n\\t});\\n}\\n\\nvar tryTypedArrays = function tryAllTypedArrays(value) {\\n\\tvar foundName = false;\\n\\tforEach(toStrTags, function (getter, typedArray) {\\n\\t\\tif (!foundName) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar name = getter.call(value);\\n\\t\\t\\t\\tif (name === typedArray) {\\n\\t\\t\\t\\t\\tfoundName = name;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {}\\n\\t\\t}\\n\\t});\\n\\treturn foundName;\\n};\\n\\nvar isTypedArray = __webpack_require__(/*! is-typed-array */ \\\"./node_modules/is-typed-array/index.js\\\");\\n\\nmodule.exports = function whichTypedArray(value) {\\n\\tif (!isTypedArray(value)) { return false; }\\n\\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\\n\\treturn tryTypedArrays(value);\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/* globals\\n\\tAtomics,\\n\\tSharedArrayBuffer,\\n*/\\n\\nvar undefined;\\n\\nvar $TypeError = TypeError;\\n\\nvar $gOPD = Object.getOwnPropertyDescriptor;\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD({}, '');\\n\\t} catch (e) {\\n\\t\\t$gOPD = null; // this is IE 8, which has a broken gOPD\\n\\t}\\n}\\n\\nvar throwTypeError = function () { throw new $TypeError(); };\\nvar ThrowTypeError = $gOPD\\n\\t? (function () {\\n\\t\\ttry {\\n\\t\\t\\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\\n\\t\\t\\targuments.callee; // IE 8 does not throw here\\n\\t\\t\\treturn throwTypeError;\\n\\t\\t} catch (calleeThrows) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\\n\\t\\t\\t\\treturn $gOPD(arguments, 'callee').get;\\n\\t\\t\\t} catch (gOPDthrows) {\\n\\t\\t\\t\\treturn throwTypeError;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}())\\n\\t: throwTypeError;\\n\\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \\\"./node_modules/has-symbols/index.js\\\")();\\n\\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\\n\\nvar generator; // = function * () {};\\nvar generatorFunction = generator ? getProto(generator) : undefined;\\nvar asyncFn; // async function() {};\\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\\nvar asyncGen; // async function * () {};\\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\\n\\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\\n\\nvar INTRINSICS = {\\n\\t'%Array%': Array,\\n\\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\\n\\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\\n\\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\\n\\t'%ArrayPrototype%': Array.prototype,\\n\\t'%ArrayProto_entries%': Array.prototype.entries,\\n\\t'%ArrayProto_forEach%': Array.prototype.forEach,\\n\\t'%ArrayProto_keys%': Array.prototype.keys,\\n\\t'%ArrayProto_values%': Array.prototype.values,\\n\\t'%AsyncFromSyncIteratorPrototype%': undefined,\\n\\t'%AsyncFunction%': asyncFunction,\\n\\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\\n\\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\\n\\t'%AsyncGeneratorFunction%': asyncGenFunction,\\n\\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\\n\\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\\n\\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\\n\\t'%Boolean%': Boolean,\\n\\t'%BooleanPrototype%': Boolean.prototype,\\n\\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\\n\\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\\n\\t'%Date%': Date,\\n\\t'%DatePrototype%': Date.prototype,\\n\\t'%decodeURI%': decodeURI,\\n\\t'%decodeURIComponent%': decodeURIComponent,\\n\\t'%encodeURI%': encodeURI,\\n\\t'%encodeURIComponent%': encodeURIComponent,\\n\\t'%Error%': Error,\\n\\t'%ErrorPrototype%': Error.prototype,\\n\\t'%eval%': eval, // eslint-disable-line no-eval\\n\\t'%EvalError%': EvalError,\\n\\t'%EvalErrorPrototype%': EvalError.prototype,\\n\\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\\n\\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\\n\\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\\n\\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\\n\\t'%Function%': Function,\\n\\t'%FunctionPrototype%': Function.prototype,\\n\\t'%Generator%': generator ? getProto(generator()) : undefined,\\n\\t'%GeneratorFunction%': generatorFunction,\\n\\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\\n\\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\\n\\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\\n\\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\\n\\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\\n\\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\\n\\t'%isFinite%': isFinite,\\n\\t'%isNaN%': isNaN,\\n\\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\\n\\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\\n\\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\\n\\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\\n\\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\\n\\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\\n\\t'%Math%': Math,\\n\\t'%Number%': Number,\\n\\t'%NumberPrototype%': Number.prototype,\\n\\t'%Object%': Object,\\n\\t'%ObjectPrototype%': Object.prototype,\\n\\t'%ObjProto_toString%': Object.prototype.toString,\\n\\t'%ObjProto_valueOf%': Object.prototype.valueOf,\\n\\t'%parseFloat%': parseFloat,\\n\\t'%parseInt%': parseInt,\\n\\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\\n\\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\\n\\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\\n\\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\\n\\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\\n\\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\\n\\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\\n\\t'%RangeError%': RangeError,\\n\\t'%RangeErrorPrototype%': RangeError.prototype,\\n\\t'%ReferenceError%': ReferenceError,\\n\\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\\n\\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\\n\\t'%RegExp%': RegExp,\\n\\t'%RegExpPrototype%': RegExp.prototype,\\n\\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\\n\\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\\n\\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\\n\\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\\n\\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\\n\\t'%String%': String,\\n\\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\\n\\t'%StringPrototype%': String.prototype,\\n\\t'%Symbol%': hasSymbols ? Symbol : undefined,\\n\\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\\n\\t'%SyntaxError%': SyntaxError,\\n\\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\\n\\t'%ThrowTypeError%': ThrowTypeError,\\n\\t'%TypedArray%': TypedArray,\\n\\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\\n\\t'%TypeError%': $TypeError,\\n\\t'%TypeErrorPrototype%': $TypeError.prototype,\\n\\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\\n\\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\\n\\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\\n\\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\\n\\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\\n\\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\\n\\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\\n\\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\\n\\t'%URIError%': URIError,\\n\\t'%URIErrorPrototype%': URIError.prototype,\\n\\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\\n\\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\\n\\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\\n\\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\\n};\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\nvar $replace = bind.call(Function.call, String.prototype.replace);\\n\\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\\nvar rePropName = /[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g;\\nvar reEscapeChar = /\\\\\\\\(\\\\\\\\)?/g; /** Used to match backslashes in property paths. */\\nvar stringToPath = function stringToPath(string) {\\n\\tvar result = [];\\n\\t$replace(string, rePropName, function (match, number, quote, subString) {\\n\\t\\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\\n\\t});\\n\\treturn result;\\n};\\n/* end adaptation */\\n\\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\\n\\tif (!(name in INTRINSICS)) {\\n\\t\\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\\n\\t}\\n\\n\\t// istanbul ignore if // hopefully this is impossible to test :-)\\n\\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\\n\\t\\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\\n\\t}\\n\\n\\treturn INTRINSICS[name];\\n};\\n\\nmodule.exports = function GetIntrinsic(name, allowMissing) {\\n\\tif (typeof name !== 'string' || name.length === 0) {\\n\\t\\tthrow new TypeError('intrinsic name must be a non-empty string');\\n\\t}\\n\\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\\n\\t\\tthrow new TypeError('\\\"allowMissing\\\" argument must be a boolean');\\n\\t}\\n\\n\\tvar parts = stringToPath(name);\\n\\n\\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\\n\\tfor (var i = 1; i < parts.length; i += 1) {\\n\\t\\tif (value != null) {\\n\\t\\t\\tif ($gOPD && (i + 1) >= parts.length) {\\n\\t\\t\\t\\tvar desc = $gOPD(value, parts[i]);\\n\\t\\t\\t\\tif (!allowMissing && !(parts[i] in value)) {\\n\\t\\t\\t\\t\\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvalue = value[parts[i]];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn value;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js ***!\n \\*************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar bind = __webpack_require__(/*! function-bind */ \\\"./node_modules/function-bind/index.js\\\");\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $Function = GetIntrinsic('%Function%');\\nvar $apply = $Function.apply;\\nvar $call = $Function.call;\\n\\nmodule.exports = function callBind() {\\n\\treturn bind.apply($call, arguments);\\n};\\n\\nmodule.exports.apply = function applyBind() {\\n\\treturn bind.apply($apply, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar callBind = __webpack_require__(/*! ./callBind */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBind.js\\\");\\n\\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\\n\\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\\n\\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\\n\\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\\n\\t\\treturn callBind(intrinsic);\\n\\t}\\n\\treturn intrinsic;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/callBound.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js\":\n/*!*****************************************************************************************************!*\\\n !*** ./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js ***!\n \\*****************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar GetIntrinsic = __webpack_require__(/*! ../GetIntrinsic */ \\\"./node_modules/which-typed-array/node_modules/es-abstract/GetIntrinsic.js\\\");\\n\\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\\nif ($gOPD) {\\n\\ttry {\\n\\t\\t$gOPD([], 'length');\\n\\t} catch (e) {\\n\\t\\t// IE 8 has a broken gOPD\\n\\t\\t$gOPD = null;\\n\\t}\\n}\\n\\nmodule.exports = $gOPD;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/which-typed-array/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js?\");\n\n/***/ }),\n\n/***/ \"./quill.js\":\n/*!******************!*\\\n !*** ./quill.js ***!\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 _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ \\\"./core.js\\\");\\n/* harmony import */ var _formats_align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/align */ \\\"./formats/align.js\\\");\\n/* harmony import */ var _formats_direction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formats/direction */ \\\"./formats/direction.js\\\");\\n/* harmony import */ var _formats_indent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formats/indent */ \\\"./formats/indent.js\\\");\\n/* harmony import */ var _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formats/blockquote */ \\\"./formats/blockquote.js\\\");\\n/* harmony import */ var _formats_header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formats/header */ \\\"./formats/header.js\\\");\\n/* harmony import */ var _formats_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formats/list */ \\\"./formats/list.js\\\");\\n/* harmony import */ var _formats_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formats/background */ \\\"./formats/background.js\\\");\\n/* harmony import */ var _formats_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./formats/color */ \\\"./formats/color.js\\\");\\n/* harmony import */ var _formats_font__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./formats/font */ \\\"./formats/font.js\\\");\\n/* harmony import */ var _formats_size__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formats/size */ \\\"./formats/size.js\\\");\\n/* harmony import */ var _formats_bold__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./formats/bold */ \\\"./formats/bold.js\\\");\\n/* harmony import */ var _formats_italic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./formats/italic */ \\\"./formats/italic.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _formats_script__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./formats/script */ \\\"./formats/script.js\\\");\\n/* harmony import */ var _formats_strike__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./formats/strike */ \\\"./formats/strike.js\\\");\\n/* harmony import */ var _formats_underline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./formats/underline */ \\\"./formats/underline.js\\\");\\n/* harmony import */ var _formats_formula__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./formats/formula */ \\\"./formats/formula.js\\\");\\n/* harmony import */ var _formats_image__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formats/image */ \\\"./formats/image.js\\\");\\n/* harmony import */ var _formats_video__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formats/video */ \\\"./formats/video.js\\\");\\n/* harmony import */ var _formats_code__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formats/code */ \\\"./formats/code.js\\\");\\n/* harmony import */ var _modules_syntax__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/syntax */ \\\"./modules/syntax.js\\\");\\n/* harmony import */ var _modules_table__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/table */ \\\"./modules/table.js\\\");\\n/* harmony import */ var _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/toolbar */ \\\"./modules/toolbar.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./ui/icons */ \\\"./ui/icons.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n/* harmony import */ var _themes_bubble__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./themes/bubble */ \\\"./themes/bubble.js\\\");\\n/* harmony import */ var _themes_snow__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./themes/snow */ \\\"./themes/snow.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'attributors/attribute/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionAttribute\\\"],\\n 'attributors/class/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'attributors/class/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundClass\\\"],\\n 'attributors/class/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorClass\\\"],\\n 'attributors/class/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'attributors/class/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'attributors/class/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'attributors/style/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignStyle\\\"],\\n 'attributors/style/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'attributors/style/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'attributors/style/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionStyle\\\"],\\n 'attributors/style/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontStyle\\\"],\\n 'attributors/style/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeStyle\\\"]\\n}, true);\\n_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].register({\\n 'formats/align': _formats_align__WEBPACK_IMPORTED_MODULE_1__[\\\"AlignClass\\\"],\\n 'formats/direction': _formats_direction__WEBPACK_IMPORTED_MODULE_2__[\\\"DirectionClass\\\"],\\n 'formats/indent': _formats_indent__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"],\\n 'formats/background': _formats_background__WEBPACK_IMPORTED_MODULE_7__[\\\"BackgroundStyle\\\"],\\n 'formats/color': _formats_color__WEBPACK_IMPORTED_MODULE_8__[\\\"ColorStyle\\\"],\\n 'formats/font': _formats_font__WEBPACK_IMPORTED_MODULE_9__[\\\"FontClass\\\"],\\n 'formats/size': _formats_size__WEBPACK_IMPORTED_MODULE_10__[\\\"SizeClass\\\"],\\n 'formats/blockquote': _formats_blockquote__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"],\\n 'formats/code-block': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"default\\\"],\\n 'formats/header': _formats_header__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"],\\n 'formats/list': _formats_list__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"],\\n 'formats/bold': _formats_bold__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"],\\n 'formats/code': _formats_code__WEBPACK_IMPORTED_MODULE_20__[\\\"Code\\\"],\\n 'formats/italic': _formats_italic__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"],\\n 'formats/link': _formats_link__WEBPACK_IMPORTED_MODULE_13__[\\\"default\\\"],\\n 'formats/script': _formats_script__WEBPACK_IMPORTED_MODULE_14__[\\\"default\\\"],\\n 'formats/strike': _formats_strike__WEBPACK_IMPORTED_MODULE_15__[\\\"default\\\"],\\n 'formats/underline': _formats_underline__WEBPACK_IMPORTED_MODULE_16__[\\\"default\\\"],\\n 'formats/formula': _formats_formula__WEBPACK_IMPORTED_MODULE_17__[\\\"default\\\"],\\n 'formats/image': _formats_image__WEBPACK_IMPORTED_MODULE_18__[\\\"default\\\"],\\n 'formats/video': _formats_video__WEBPACK_IMPORTED_MODULE_19__[\\\"default\\\"],\\n 'modules/syntax': _modules_syntax__WEBPACK_IMPORTED_MODULE_21__[\\\"default\\\"],\\n 'modules/table': _modules_table__WEBPACK_IMPORTED_MODULE_22__[\\\"default\\\"],\\n 'modules/toolbar': _modules_toolbar__WEBPACK_IMPORTED_MODULE_23__[\\\"default\\\"],\\n 'themes/bubble': _themes_bubble__WEBPACK_IMPORTED_MODULE_29__[\\\"default\\\"],\\n 'themes/snow': _themes_snow__WEBPACK_IMPORTED_MODULE_30__[\\\"default\\\"],\\n 'ui/icons': _ui_icons__WEBPACK_IMPORTED_MODULE_24__[\\\"default\\\"],\\n 'ui/picker': _ui_picker__WEBPACK_IMPORTED_MODULE_25__[\\\"default\\\"],\\n 'ui/icon-picker': _ui_icon_picker__WEBPACK_IMPORTED_MODULE_27__[\\\"default\\\"],\\n 'ui/color-picker': _ui_color_picker__WEBPACK_IMPORTED_MODULE_26__[\\\"default\\\"],\\n 'ui/tooltip': _ui_tooltip__WEBPACK_IMPORTED_MODULE_28__[\\\"default\\\"]\\n}, true);\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (_core__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\n\\n//# sourceURL=webpack://Quill/./quill.js?\");\n\n/***/ }),\n\n/***/ \"./themes/base.js\":\n/*!************************!*\\\n !*** ./themes/base.js ***!\n \\************************/\n/*! exports provided: BaseTooltip, 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__, \\\"BaseTooltip\\\", function() { return BaseTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BaseTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _core_theme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/theme */ \\\"./core/theme.js\\\");\\n/* harmony import */ var _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n/* harmony import */ var _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n/* harmony import */ var _ui_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/picker */ \\\"./ui/picker.js\\\");\\n/* harmony import */ var _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n\\n\\n\\n\\n\\n\\n\\nconst ALIGNS = [false, 'center', 'right', 'justify'];\\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'];\\nconst FONTS = [false, 'serif', 'monospace'];\\nconst HEADERS = ['1', '2', '3', false];\\nconst SIZES = ['small', false, 'large', 'huge'];\\n\\nclass BaseTheme extends _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(quill, options) {\\n super(quill, options);\\n\\n const listener = e => {\\n if (!document.body.contains(quill.root)) {\\n document.body.removeEventListener('click', listener);\\n return;\\n }\\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\\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\\n quill.emitter.listenDOM('click', document.body, listener);\\n }\\n\\n addModule(name) {\\n const module = super.addModule(name);\\n\\n if (name === 'toolbar') {\\n this.extendToolbar(module);\\n }\\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\\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\\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\\n return new _ui_icon_picker__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"](select, icons.align);\\n }\\n\\n if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\\n\\n if (select.querySelector('option') == null) {\\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\\n }\\n\\n return new _ui_color_picker__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"](select, icons[format]);\\n }\\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\\n return new _ui_picker__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"](select);\\n });\\n\\n const update = () => {\\n this.pickers.forEach(picker => {\\n picker.update();\\n });\\n };\\n\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, update);\\n }\\n\\n}\\n\\nBaseTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _core_theme__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n formula() {\\n this.quill.theme.tooltip.edit('formula');\\n },\\n\\n image() {\\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\\n\\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\\n fileInput.click();\\n },\\n\\n video() {\\n this.quill.theme.tooltip.edit('video');\\n }\\n\\n }\\n }\\n }\\n});\\n\\nclass BaseTooltip extends _ui_tooltip__WEBPACK_IMPORTED_MODULE_6__[\\\"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\\n if (preview != null) {\\n this.textbox.value = preview;\\n } else if (mode !== this.root.getAttribute('data-mode')) {\\n this.textbox.value = '';\\n }\\n\\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\\n this.textbox.select();\\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(\\\"data-\\\".concat(mode)) || '');\\n this.root.setAttribute('data-mode', mode);\\n }\\n\\n restoreFocus() {\\n const {\\n scrollTop\\n } = this.quill.scrollingContainer;\\n this.quill.focus();\\n this.quill.scrollingContainer.scrollTop = scrollTop;\\n }\\n\\n save() {\\n let {\\n value\\n } = this.textbox;\\n\\n switch (this.root.getAttribute('data-mode')) {\\n case 'link':\\n {\\n const {\\n scrollTop\\n } = this.quill.root;\\n\\n if (this.linkRange) {\\n this.quill.formatText(this.linkRange, 'link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n } else {\\n this.restoreFocus();\\n this.quill.format('link', value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.root.scrollTop = scrollTop;\\n break;\\n }\\n\\n case 'video':\\n {\\n value = extractVideoUrl(value);\\n }\\n // eslint-disable-next-line no-fallthrough\\n\\n case 'formula':\\n {\\n if (!value) break;\\n const range = this.quill.getSelection(true);\\n\\n if (range != null) {\\n const index = range.index + range.length;\\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n\\n if (this.root.getAttribute('data-mode') === 'formula') {\\n this.quill.insertText(index + 1, ' ', _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n this.quill.setSelection(index + 2, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n }\\n\\n break;\\n }\\n\\n default:\\n }\\n\\n this.textbox.value = '';\\n this.hide();\\n }\\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\\n if (match) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://www.youtube.com/embed/\\\").concat(match[2], \\\"?showinfo=0\\\");\\n } // eslint-disable-next-line no-cond-assign\\n\\n\\n if (match = url.match(/^(?:(https?):\\\\/\\\\/)?(?:www\\\\.)?vimeo\\\\.com\\\\/(\\\\d+)/)) {\\n return \\\"\\\".concat(match[1] || 'https', \\\"://player.vimeo.com/video/\\\").concat(match[2], \\\"/\\\");\\n }\\n\\n return url;\\n}\\n\\nfunction fillSelect(select, values, defaultValue = false) {\\n values.forEach(value => {\\n const option = document.createElement('option');\\n\\n if (value === defaultValue) {\\n option.setAttribute('selected', 'selected');\\n } else {\\n option.setAttribute('value', value);\\n }\\n\\n select.appendChild(option);\\n });\\n}\\n\\n\\n\\n//# sourceURL=webpack://Quill/./themes/base.js?\");\n\n/***/ }),\n\n/***/ \"./themes/bubble.js\":\n/*!**************************!*\\\n !*** ./themes/bubble.js ***!\n \\**************************/\n/*! exports provided: BubbleTooltip, 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__, \\\"BubbleTooltip\\\", function() { return BubbleTooltip; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return BubbleTheme; });\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\\n header: 1\\n}, {\\n header: 2\\n}, 'blockquote']];\\n\\nclass BubbleTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"BaseTooltip\\\"] {\\n constructor(quill, bounds) {\\n super(quill, bounds);\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.EDITOR_CHANGE, (type, range, oldRange, source) => {\\n if (type !== _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE) return;\\n\\n if (range != null && range.length > 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n this.show(); // Lock our width so we will expand beyond our offsetParent boundaries\\n\\n this.root.style.left = '0px';\\n this.root.style.width = '';\\n this.root.style.width = \\\"\\\".concat(this.root.offsetWidth, \\\"px\\\");\\n const lines = this.quill.getLines(range.index, range.length);\\n\\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 _core_selection__WEBPACK_IMPORTED_MODULE_3__[\\\"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(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"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\\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\\n if (shift !== 0) {\\n arrow.style.marginLeft = \\\"\\\".concat(-1 * shift - arrow.offsetWidth / 2, \\\"px\\\");\\n }\\n\\n return shift;\\n }\\n\\n}\\n\\nBubbleTooltip.TEMPLATE = ['', '
    ', '', '', '
    '].join('');\\n\\nclass BubbleTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]);\\n }\\n\\n}\\n\\nBubbleTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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});\\n\\n\\n//# sourceURL=webpack://Quill/./themes/bubble.js?\");\n\n/***/ }),\n\n/***/ \"./themes/snow.js\":\n/*!************************!*\\\n !*** ./themes/snow.js ***!\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 extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n/* harmony import */ var extend__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(extend__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _core_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n/* harmony import */ var _formats_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n/* harmony import */ var _core_selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n/* harmony import */ var _ui_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\n\\n\\n\\n\\n\\nconst TOOLBAR_CONFIG = [[{\\n header: ['1', '2', '3', false]\\n}], ['bold', 'italic', 'underline', 'link'], [{\\n list: 'ordered'\\n}, {\\n list: 'bullet'\\n}], ['clean']];\\n\\nclass SnowTooltip extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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, _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER);\\n delete this.linkRange;\\n }\\n\\n event.preventDefault();\\n this.hide();\\n });\\n this.quill.on(_core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].events.SELECTION_CHANGE, (range, oldRange, source) => {\\n if (range == null) return;\\n\\n if (range.length === 0 && source === _core_emitter__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].sources.USER) {\\n const [link, offset] = this.quill.scroll.descendant(_formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"], range.index);\\n\\n if (link != null) {\\n this.linkRange = new _core_selection__WEBPACK_IMPORTED_MODULE_4__[\\\"Range\\\"](range.index - offset, link.length());\\n const preview = _formats_link__WEBPACK_IMPORTED_MODULE_3__[\\\"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\\n this.hide();\\n });\\n }\\n\\n show() {\\n super.show();\\n this.root.removeAttribute('data-mode');\\n }\\n\\n}\\n\\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\\n\\nclass SnowTheme extends _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\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'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _ui_icons__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]);\\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\\n\\n if (toolbar.container.querySelector('.ql-link')) {\\n this.quill.keyboard.addBinding({\\n key: 'k',\\n shortKey: true\\n }, (range, context) => {\\n toolbar.handlers.link.call(toolbar, !context.format.link);\\n });\\n }\\n }\\n\\n}\\n\\nSnowTheme.DEFAULTS = extend__WEBPACK_IMPORTED_MODULE_0___default()(true, {}, _base__WEBPACK_IMPORTED_MODULE_2__[\\\"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\\n if (/^\\\\S+@\\\\S+\\\\.\\\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\\n preview = \\\"mailto:\\\".concat(preview);\\n }\\n\\n const {\\n tooltip\\n } = this.quill.theme;\\n tooltip.edit('link', preview);\\n } else {\\n this.quill.format('link', false);\\n }\\n }\\n\\n }\\n }\\n }\\n});\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass ColorPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\n\\nclass IconPicker extends _picker__WEBPACK_IMPORTED_MODULE_0__[\\\"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 if (this.label.innerHTML === item.innerHTML) return;\\n this.label.innerHTML = item.innerHTML;\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/align-left.svg */ \\\"./assets/icons/align-left.svg\\\");\\n/* harmony import */ var _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/icons/align-center.svg */ \\\"./assets/icons/align-center.svg\\\");\\n/* harmony import */ var _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../assets/icons/align-right.svg */ \\\"./assets/icons/align-right.svg\\\");\\n/* harmony import */ var _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/icons/align-justify.svg */ \\\"./assets/icons/align-justify.svg\\\");\\n/* harmony import */ var _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/icons/background.svg */ \\\"./assets/icons/background.svg\\\");\\n/* harmony import */ var _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../assets/icons/blockquote.svg */ \\\"./assets/icons/blockquote.svg\\\");\\n/* harmony import */ var _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/icons/bold.svg */ \\\"./assets/icons/bold.svg\\\");\\n/* harmony import */ var _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/icons/clean.svg */ \\\"./assets/icons/clean.svg\\\");\\n/* harmony import */ var _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/icons/code.svg */ \\\"./assets/icons/code.svg\\\");\\n/* harmony import */ var _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8__);\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/icons/color.svg */ \\\"./assets/icons/color.svg\\\");\\n/* harmony import */ var _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9__);\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/icons/direction-ltr.svg */ \\\"./assets/icons/direction-ltr.svg\\\");\\n/* harmony import */ var _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10__);\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/icons/direction-rtl.svg */ \\\"./assets/icons/direction-rtl.svg\\\");\\n/* harmony import */ var _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11__);\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/icons/formula.svg */ \\\"./assets/icons/formula.svg\\\");\\n/* harmony import */ var _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12__);\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/icons/header.svg */ \\\"./assets/icons/header.svg\\\");\\n/* harmony import */ var _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13__);\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/icons/header-2.svg */ \\\"./assets/icons/header-2.svg\\\");\\n/* harmony import */ var _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14__);\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/icons/italic.svg */ \\\"./assets/icons/italic.svg\\\");\\n/* harmony import */ var _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15__);\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/icons/image.svg */ \\\"./assets/icons/image.svg\\\");\\n/* harmony import */ var _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16__);\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/icons/indent.svg */ \\\"./assets/icons/indent.svg\\\");\\n/* harmony import */ var _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17__);\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/icons/outdent.svg */ \\\"./assets/icons/outdent.svg\\\");\\n/* harmony import */ var _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18__);\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/icons/link.svg */ \\\"./assets/icons/link.svg\\\");\\n/* harmony import */ var _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19__);\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/icons/list-bullet.svg */ \\\"./assets/icons/list-bullet.svg\\\");\\n/* harmony import */ var _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20__);\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/icons/list-check.svg */ \\\"./assets/icons/list-check.svg\\\");\\n/* harmony import */ var _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21__);\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/icons/list-ordered.svg */ \\\"./assets/icons/list-ordered.svg\\\");\\n/* harmony import */ var _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22__);\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/icons/subscript.svg */ \\\"./assets/icons/subscript.svg\\\");\\n/* harmony import */ var _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23__);\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/icons/superscript.svg */ \\\"./assets/icons/superscript.svg\\\");\\n/* harmony import */ var _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24__);\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/icons/strike.svg */ \\\"./assets/icons/strike.svg\\\");\\n/* harmony import */ var _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25__);\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/icons/table.svg */ \\\"./assets/icons/table.svg\\\");\\n/* harmony import */ var _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26__);\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/icons/underline.svg */ \\\"./assets/icons/underline.svg\\\");\\n/* harmony import */ var _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27__);\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/icons/video.svg */ \\\"./assets/icons/video.svg\\\");\\n/* harmony import */ var _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28__);\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = ({\\n align: {\\n '': _assets_icons_align_left_svg__WEBPACK_IMPORTED_MODULE_0___default.a,\\n center: _assets_icons_align_center_svg__WEBPACK_IMPORTED_MODULE_1___default.a,\\n right: _assets_icons_align_right_svg__WEBPACK_IMPORTED_MODULE_2___default.a,\\n justify: _assets_icons_align_justify_svg__WEBPACK_IMPORTED_MODULE_3___default.a\\n },\\n background: _assets_icons_background_svg__WEBPACK_IMPORTED_MODULE_4___default.a,\\n blockquote: _assets_icons_blockquote_svg__WEBPACK_IMPORTED_MODULE_5___default.a,\\n bold: _assets_icons_bold_svg__WEBPACK_IMPORTED_MODULE_6___default.a,\\n clean: _assets_icons_clean_svg__WEBPACK_IMPORTED_MODULE_7___default.a,\\n code: _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n 'code-block': _assets_icons_code_svg__WEBPACK_IMPORTED_MODULE_8___default.a,\\n color: _assets_icons_color_svg__WEBPACK_IMPORTED_MODULE_9___default.a,\\n direction: {\\n '': _assets_icons_direction_ltr_svg__WEBPACK_IMPORTED_MODULE_10___default.a,\\n rtl: _assets_icons_direction_rtl_svg__WEBPACK_IMPORTED_MODULE_11___default.a\\n },\\n formula: _assets_icons_formula_svg__WEBPACK_IMPORTED_MODULE_12___default.a,\\n header: {\\n '1': _assets_icons_header_svg__WEBPACK_IMPORTED_MODULE_13___default.a,\\n '2': _assets_icons_header_2_svg__WEBPACK_IMPORTED_MODULE_14___default.a\\n },\\n italic: _assets_icons_italic_svg__WEBPACK_IMPORTED_MODULE_15___default.a,\\n image: _assets_icons_image_svg__WEBPACK_IMPORTED_MODULE_16___default.a,\\n indent: {\\n '+1': _assets_icons_indent_svg__WEBPACK_IMPORTED_MODULE_17___default.a,\\n '-1': _assets_icons_outdent_svg__WEBPACK_IMPORTED_MODULE_18___default.a\\n },\\n link: _assets_icons_link_svg__WEBPACK_IMPORTED_MODULE_19___default.a,\\n list: {\\n bullet: _assets_icons_list_bullet_svg__WEBPACK_IMPORTED_MODULE_20___default.a,\\n check: _assets_icons_list_check_svg__WEBPACK_IMPORTED_MODULE_21___default.a,\\n ordered: _assets_icons_list_ordered_svg__WEBPACK_IMPORTED_MODULE_22___default.a\\n },\\n script: {\\n sub: _assets_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_23___default.a,\\n super: _assets_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_24___default.a\\n },\\n strike: _assets_icons_strike_svg__WEBPACK_IMPORTED_MODULE_25___default.a,\\n table: _assets_icons_table_svg__WEBPACK_IMPORTED_MODULE_26___default.a,\\n underline: _assets_icons_underline_svg__WEBPACK_IMPORTED_MODULE_27___default.a,\\n video: _assets_icons_video_svg__WEBPACK_IMPORTED_MODULE_28___default.a\\n});\\n\\n//# sourceURL=webpack://Quill/./ui/icons.js?\");\n\n/***/ }),\n\n/***/ \"./ui/picker.js\":\n/*!**********************!*\\\n !*** ./ui/picker.js ***!\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 _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/icons/dropdown.svg */ \\\"./assets/icons/dropdown.svg\\\");\\n/* harmony import */ var _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0__);\\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 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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\n }\\n });\\n this.select.addEventListener('change', this.update.bind(this));\\n }\\n\\n togglePicker() {\\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\\n\\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\\n if (option.hasAttribute('value')) {\\n item.setAttribute('data-value', option.getAttribute('value'));\\n }\\n\\n if (option.textContent) {\\n item.setAttribute('data-label', option.textContent);\\n }\\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\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n\\n default:\\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 = _assets_icons_dropdown_svg__WEBPACK_IMPORTED_MODULE_0___default.a;\\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'); // Don't want screen readers to read this until options are visible\\n\\n options.setAttribute('aria-hidden', 'true');\\n options.tabIndex = '-1'; // Need a unique id for aria-controls\\n\\n options.id = \\\"ql-picker-options-\\\".concat(optionsCounter);\\n optionsCounter += 1;\\n this.label.setAttribute('aria-controls', options.id);\\n this.options = options;\\n Array.from(this.select.options).forEach(option => {\\n const item = this.buildItem(option);\\n options.appendChild(item);\\n\\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(); // Need setTimeout for accessibility to ensure that the browser executes\\n // focus on the next process thread and after any DOM content changes\\n\\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\\n if (selected != null) {\\n selected.classList.remove('ql-selected');\\n }\\n\\n if (item == null) return;\\n item.classList.add('ql-selected');\\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\\n\\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\\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\\n if (trigger) {\\n this.select.dispatchEvent(new Event('change'));\\n this.close();\\n }\\n }\\n\\n update() {\\n let option;\\n\\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\\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\\n this.label.classList.toggle('ql-active', isActive);\\n }\\n\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Picker);\\n\\n//# sourceURL=webpack://Quill/./ui/picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/tooltip.js\":\n/*!***********************!*\\\n !*** ./ui/tooltip.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\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\\n if (this.quill.root === this.quill.scrollingContainer) {\\n this.quill.root.addEventListener('scroll', () => {\\n this.root.style.marginTop = \\\"\\\".concat(-1 * this.quill.root.scrollTop, \\\"px\\\");\\n });\\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; // root.scrollTop should be 0 if scrollContainer !== root\\n\\n const top = reference.bottom + this.quill.root.scrollTop;\\n this.root.style.left = \\\"\\\".concat(left, \\\"px\\\");\\n this.root.style.top = \\\"\\\".concat(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\\n if (rootBounds.right > containerBounds.right) {\\n shift = containerBounds.right - rootBounds.right;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\n\\n if (rootBounds.left < containerBounds.left) {\\n shift = containerBounds.left - rootBounds.left;\\n this.root.style.left = \\\"\\\".concat(left + shift, \\\"px\\\");\\n }\\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 = \\\"\\\".concat(top - verticalShift, \\\"px\\\");\\n this.root.classList.add('ql-flip');\\n }\\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}\\n\\n/* harmony default export */ __webpack_exports__[\\\"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/***/ 1:\n/*!********************************!*\\\n !*** ./util.inspect (ignored) ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"/* (ignored) */\\n\\n//# sourceURL=webpack://Quill/./util.inspect_(ignored)?\");\n\n/***/ })\n\n/******/ })[\"default\"];\n});","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 Action = function () {\n function Action(formatter) {\n _classCallCheck(this, Action);\n\n this.formatter = formatter;\n }\n\n _createClass(Action, [{\n key: 'onCreate',\n value: function onCreate() {}\n }, {\n key: 'onDestroy',\n value: function onDestroy() {}\n }, {\n key: 'onUpdate',\n value: function onUpdate() {}\n }]);\n\n return Action;\n}();\n\nexports.default = Action;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _Action = require('../actions/Action');\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _AlignAction = require('../actions/align/AlignAction');\n\nvar _AlignAction2 = _interopRequireDefault(_AlignAction);\n\nvar _ResizeAction = require('../actions/ResizeAction');\n\nvar _ResizeAction2 = _interopRequireDefault(_ResizeAction);\n\nvar _DeleteAction = require('../actions/DeleteAction');\n\nvar _DeleteAction2 = _interopRequireDefault(_DeleteAction);\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 BlotSpec = function () {\n function BlotSpec(formatter) {\n _classCallCheck(this, BlotSpec);\n\n this.formatter = formatter;\n }\n\n _createClass(BlotSpec, [{\n key: 'init',\n value: function init() {}\n }, {\n key: 'getActions',\n value: function getActions() {\n return [_AlignAction2.default, _ResizeAction2.default, _DeleteAction2.default];\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return null;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.getTargetElement();\n }\n }, {\n key: 'setSelection',\n value: function setSelection() {\n this.formatter.quill.setSelection(null);\n }\n }, {\n key: 'onHide',\n value: function onHide() {}\n }]);\n\n return BlotSpec;\n}();\n\nexports.default = BlotSpec;","/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* istanbul ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* istanbul ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* istanbul ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* istanbul ignore next */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* istanbul ignore next */\n utf8TextDecoder = null\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* istanbul ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n","/* global localStorage */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* istanbul ignore next */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} value\n */\n setItem (key, value) {\n this.map.set(key, value)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n\n/* istanbul ignore next */\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\n\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n /* istanbul ignore next */\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n }\n} catch (e) { }\n\n/* istanbul ignore next */\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\nexport const varStorage = _localStorage\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* istanbul ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\nconst perf = typeof performance === 'undefined' ? null : performance\n\nconst isoCrypto = typeof crypto === 'undefined' ? null : crypto\n\n/**\n * @type {function(number):ArrayBuffer}\n */\nconst cryptoRandomBuffer = isoCrypto !== null\n ? len => {\n // browser\n const arr = new Uint8Array(len)\n isoCrypto.getRandomValues(arr)\n return arr.buffer\n }\n : len => {\n // polyfill\n const arr = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n arr[i] = Math.ceil((Math.random() * 0xFFFFFFFF) >>> 0)\n }\n return arr.buffer\n }\n\nexports.performance = perf\nexports.cryptoRandomBuffer = cryptoRandomBuffer\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _BlotSpec = require('./specs/BlotSpec');\n\nvar _BlotSpec2 = _interopRequireDefault(_BlotSpec);\n\nvar _ImageSpec = require('./specs/ImageSpec');\n\nvar _ImageSpec2 = _interopRequireDefault(_ImageSpec);\n\nvar _IframeVideoSpec = require('./specs/IframeVideoSpec');\n\nvar _IframeVideoSpec2 = _interopRequireDefault(_IframeVideoSpec);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultOptions = {\n specs: [_ImageSpec2.default, _IframeVideoSpec2.default],\n overlay: {\n className: 'blot-formatter__overlay',\n style: {\n position: 'absolute',\n boxSizing: 'border-box',\n border: '1px dashed #444'\n }\n },\n align: {\n attribute: 'data-align',\n aligner: {\n applyStyle: true\n },\n icons: {\n left: '\\n \\n \\n \\n \\n \\n ',\n center: '\\n \\n \\n \\n \\n \\n ',\n right: '\\n \\n \\n \\n \\n \\n '\n },\n toolbar: {\n allowDeselect: true,\n mainClassName: 'blot-formatter__toolbar',\n mainStyle: {\n position: 'absolute',\n top: '-12px',\n right: '0',\n left: '0',\n height: '0',\n minWidth: '100px',\n font: '12px/1.0 Arial, Helvetica, sans-serif',\n textAlign: 'center',\n color: '#333',\n boxSizing: 'border-box',\n cursor: 'default',\n zIndex: '1'\n },\n buttonClassName: 'blot-formatter__toolbar-button',\n addButtonSelectStyle: true,\n buttonStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n },\n svgStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle'\n }\n }\n },\n resize: {\n handleClassName: 'blot-formatter__resize-handle',\n handleStyle: {\n position: 'absolute',\n height: '12px',\n width: '12px',\n backgroundColor: 'white',\n border: '1px solid #777',\n boxSizing: 'border-box',\n opacity: '0.80'\n }\n }\n};\n\nexports.default = DefaultOptions;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('../Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nvar _DefaultAligner = require('./DefaultAligner');\n\nvar _DefaultAligner2 = _interopRequireDefault(_DefaultAligner);\n\nvar _Aligner = require('./Aligner');\n\nvar _Toolbar = require('./Toolbar');\n\nvar _DefaultToolbar = require('./DefaultToolbar');\n\nvar _DefaultToolbar2 = _interopRequireDefault(_DefaultToolbar);\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 AlignAction = function (_Action) {\n _inherits(AlignAction, _Action);\n\n function AlignAction(formatter) {\n _classCallCheck(this, AlignAction);\n\n var _this = _possibleConstructorReturn(this, (AlignAction.__proto__ || Object.getPrototypeOf(AlignAction)).call(this, formatter));\n\n _this.aligner = new _DefaultAligner2.default(formatter.options.align);\n _this.toolbar = new _DefaultToolbar2.default();\n return _this;\n }\n\n _createClass(AlignAction, [{\n key: 'onCreate',\n value: function onCreate() {\n var toolbar = this.toolbar.create(this.formatter, this.aligner);\n this.formatter.overlay.appendChild(toolbar);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n var toolbar = this.toolbar.getElement();\n if (!toolbar) {\n return;\n }\n\n this.formatter.overlay.removeChild(toolbar);\n this.toolbar.destroy();\n }\n }]);\n\n return AlignAction;\n}(_Action3.default);\n\nexports.default = AlignAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Aligner = require('./Aligner');\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LEFT_ALIGN = 'left';\nvar CENTER_ALIGN = 'center';\nvar RIGHT_ALIGN = 'right';\n\nvar DefaultAligner = function () {\n function DefaultAligner(options) {\n var _this = this,\n _alignments;\n\n _classCallCheck(this, DefaultAligner);\n\n this.applyStyle = options.aligner.applyStyle;\n this.alignAttribute = options.attribute;\n this.alignments = (_alignments = {}, _defineProperty(_alignments, LEFT_ALIGN, {\n name: LEFT_ALIGN,\n icon: options.icons.left,\n apply: function apply(el) {\n _this.setAlignment(el, LEFT_ALIGN);\n _this.setStyle(el, 'inline', 'left', '0 1em 1em 0');\n }\n }), _defineProperty(_alignments, CENTER_ALIGN, {\n name: CENTER_ALIGN,\n icon: options.icons.center,\n apply: function apply(el) {\n _this.setAlignment(el, CENTER_ALIGN);\n _this.setStyle(el, 'block', null, 'auto');\n }\n }), _defineProperty(_alignments, RIGHT_ALIGN, {\n name: RIGHT_ALIGN,\n icon: options.icons.right,\n apply: function apply(el) {\n _this.setAlignment(el, RIGHT_ALIGN);\n _this.setStyle(el, 'inline', 'right', '0 0 1em 1em');\n }\n }), _alignments);\n }\n\n _createClass(DefaultAligner, [{\n key: 'getAlignments',\n value: function getAlignments() {\n var _this2 = this;\n\n return Object.keys(this.alignments).map(function (k) {\n return _this2.alignments[k];\n });\n }\n }, {\n key: 'clear',\n value: function clear(el) {\n el.removeAttribute(this.alignAttribute);\n this.setStyle(el, null, null, null);\n }\n }, {\n key: 'isAligned',\n value: function isAligned(el, alignment) {\n return el.getAttribute(this.alignAttribute) === alignment.name;\n }\n }, {\n key: 'setAlignment',\n value: function setAlignment(el, value) {\n el.setAttribute(this.alignAttribute, value);\n }\n }, {\n key: 'setStyle',\n value: function setStyle(el, display, float, margin) {\n if (this.applyStyle) {\n el.style.setProperty('display', display);\n el.style.setProperty('float', float);\n el.style.setProperty('margin', margin);\n }\n }\n }]);\n\n return DefaultAligner;\n}();\n\nexports.default = DefaultAligner;","'use strict';\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Toolbar = require('./Toolbar');\n\nvar _Aligner = require('./Aligner');\n\nvar _BlotFormatter = require('../../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 DefaultToolbar = function () {\n function DefaultToolbar() {\n _classCallCheck(this, DefaultToolbar);\n\n this.toolbar = null;\n this.buttons = [];\n }\n\n _createClass(DefaultToolbar, [{\n key: 'create',\n value: function create(formatter, aligner) {\n var toolbar = document.createElement('div');\n toolbar.classList.add(formatter.options.align.toolbar.mainClassName);\n this.addToolbarStyle(formatter, toolbar);\n this.addButtons(formatter, toolbar, aligner);\n\n this.toolbar = toolbar;\n return this.toolbar;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.toolbar = null;\n this.buttons = [];\n }\n }, {\n key: 'getElement',\n value: function getElement() {\n return this.toolbar;\n }\n }, {\n key: 'addToolbarStyle',\n value: function addToolbarStyle(formatter, toolbar) {\n if (formatter.options.align.toolbar.mainStyle) {\n Object.assign(toolbar.style, formatter.options.align.toolbar.mainStyle);\n }\n }\n }, {\n key: 'addButtonStyle',\n value: function addButtonStyle(button, index, formatter) {\n if (formatter.options.align.toolbar.buttonStyle) {\n Object.assign(button.style, formatter.options.align.toolbar.buttonStyle);\n if (index > 0) {\n button.style.borderLeftWidth = '0'; // eslint-disable-line no-param-reassign\n }\n }\n\n if (formatter.options.align.toolbar.svgStyle) {\n Object.assign(button.children[0].style, formatter.options.align.toolbar.svgStyle);\n }\n }\n }, {\n key: 'addButtons',\n value: function addButtons(formatter, toolbar, aligner) {\n var _this = this;\n\n aligner.getAlignments().forEach(function (alignment, i) {\n var button = document.createElement('span');\n button.classList.add(formatter.options.align.toolbar.buttonClassName);\n button.innerHTML = alignment.icon;\n button.addEventListener('click', function () {\n _this.onButtonClick(button, formatter, alignment, aligner);\n });\n _this.preselectButton(button, alignment, formatter, aligner);\n _this.addButtonStyle(button, i, formatter);\n _this.buttons.push(button);\n toolbar.appendChild(button);\n });\n }\n }, {\n key: 'preselectButton',\n value: function preselectButton(button, alignment, formatter, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n if (aligner.isAligned(target, alignment)) {\n this.selectButton(formatter, button);\n }\n }\n }, {\n key: 'onButtonClick',\n value: function onButtonClick(button, formatter, alignment, aligner) {\n if (!formatter.currentSpec) {\n return;\n }\n\n var target = formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n this.clickButton(button, target, formatter, alignment, aligner);\n }\n }, {\n key: 'clickButton',\n value: function clickButton(button, alignTarget, formatter, alignment, aligner) {\n var _this2 = this;\n\n this.buttons.forEach(function (b) {\n _this2.deselectButton(formatter, b);\n });\n if (aligner.isAligned(alignTarget, alignment)) {\n if (formatter.options.align.toolbar.allowDeselect) {\n aligner.clear(alignTarget);\n } else {\n this.selectButton(formatter, button);\n }\n } else {\n this.selectButton(formatter, button);\n alignment.apply(alignTarget);\n }\n\n formatter.update();\n }\n }, {\n key: 'selectButton',\n value: function selectButton(formatter, button) {\n button.classList.add('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.setProperty('filter', 'invert(20%)');\n }\n }\n }, {\n key: 'deselectButton',\n value: function deselectButton(formatter, button) {\n button.classList.remove('is-selected');\n if (formatter.options.align.toolbar.addButtonSelectStyle) {\n button.style.removeProperty('filter');\n }\n }\n }]);\n\n return DefaultToolbar;\n}();\n\nexports.default = DefaultToolbar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ResizeAction = function (_Action) {\n _inherits(ResizeAction, _Action);\n\n function ResizeAction(formatter) {\n _classCallCheck(this, ResizeAction);\n\n var _this = _possibleConstructorReturn(this, (ResizeAction.__proto__ || Object.getPrototypeOf(ResizeAction)).call(this, formatter));\n\n _this.onMouseDown = function (event) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n _this.dragHandle = event.target;\n _this.setCursor(_this.dragHandle.style.cursor);\n\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var rect = target.getBoundingClientRect();\n\n _this.dragStartX = event.clientX;\n _this.preDragWidth = rect.width;\n _this.targetRatio = rect.height / rect.width;\n\n document.addEventListener('mousemove', _this.onDrag);\n document.addEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.onDrag = function (event) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n var target = _this.formatter.currentSpec.getTargetElement();\n if (!target) {\n return;\n }\n\n var deltaX = event.clientX - _this.dragStartX;\n var newWidth = 0;\n\n if (_this.dragHandle === _this.topLeftHandle || _this.dragHandle === _this.bottomLeftHandle) {\n newWidth = Math.round(_this.preDragWidth - deltaX);\n } else {\n newWidth = Math.round(_this.preDragWidth + deltaX);\n }\n\n var newHeight = _this.targetRatio * newWidth;\n\n target.setAttribute('width', '' + newWidth);\n target.setAttribute('height', '' + newHeight);\n\n _this.formatter.update();\n };\n\n _this.onMouseUp = function () {\n _this.setCursor('');\n document.removeEventListener('mousemove', _this.onDrag);\n document.removeEventListener('mouseup', _this.onMouseUp);\n };\n\n _this.topLeftHandle = _this.createHandle('top-left', 'nwse-resize');\n _this.topRightHandle = _this.createHandle('top-right', 'nesw-resize');\n _this.bottomRightHandle = _this.createHandle('bottom-right', 'nwse-resize');\n _this.bottomLeftHandle = _this.createHandle('bottom-left', 'nesw-resize');\n _this.dragHandle = null;\n _this.dragStartX = 0;\n _this.preDragWidth = 0;\n _this.targetRatio = 0;\n return _this;\n }\n\n _createClass(ResizeAction, [{\n key: 'onCreate',\n value: function onCreate() {\n this.formatter.overlay.appendChild(this.topLeftHandle);\n this.formatter.overlay.appendChild(this.topRightHandle);\n this.formatter.overlay.appendChild(this.bottomRightHandle);\n this.formatter.overlay.appendChild(this.bottomLeftHandle);\n\n this.repositionHandles(this.formatter.options.resize.handleStyle);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n this.setCursor('');\n this.formatter.overlay.removeChild(this.topLeftHandle);\n this.formatter.overlay.removeChild(this.topRightHandle);\n this.formatter.overlay.removeChild(this.bottomRightHandle);\n this.formatter.overlay.removeChild(this.bottomLeftHandle);\n }\n }, {\n key: 'createHandle',\n value: function createHandle(position, cursor) {\n var box = document.createElement('div');\n box.classList.add(this.formatter.options.resize.handleClassName);\n box.setAttribute('data-position', position);\n box.style.cursor = cursor;\n\n if (this.formatter.options.resize.handleStyle) {\n Object.assign(box.style, this.formatter.options.resize.handleStyle);\n }\n\n box.addEventListener('mousedown', this.onMouseDown);\n\n return box;\n }\n }, {\n key: 'repositionHandles',\n value: function repositionHandles(handleStyle) {\n var handleXOffset = '0px';\n var handleYOffset = '0px';\n if (handleStyle) {\n if (handleStyle.width) {\n handleXOffset = -parseFloat(handleStyle.width) / 2 + 'px';\n }\n if (handleStyle.height) {\n handleYOffset = -parseFloat(handleStyle.height) / 2 + 'px';\n }\n }\n\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset });\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset });\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset });\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset });\n }\n }, {\n key: 'setCursor',\n value: function setCursor(value) {\n if (document.body) {\n document.body.style.cursor = value;\n }\n\n if (this.formatter.currentSpec) {\n var target = this.formatter.currentSpec.getOverlayElement();\n if (target) {\n target.style.cursor = value;\n }\n }\n }\n }]);\n\n return ResizeAction;\n}(_Action3.default);\n\nexports.default = ResizeAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _quill = require('quill');\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _Action2 = require('./Action');\n\nvar _Action3 = _interopRequireDefault(_Action2);\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 DeleteAction = function (_Action) {\n _inherits(DeleteAction, _Action);\n\n function DeleteAction() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DeleteAction);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DeleteAction.__proto__ || Object.getPrototypeOf(DeleteAction)).call.apply(_ref, [this].concat(args))), _this), _this.onKeyUp = function (e) {\n if (!_this.formatter.currentSpec) {\n return;\n }\n\n // delete or backspace\n if (e.keyCode === 46 || e.keyCode === 8) {\n var blot = _quill2.default.find(_this.formatter.currentSpec.getTargetElement());\n if (blot) {\n blot.deleteAt(0);\n }\n _this.formatter.hide();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DeleteAction, [{\n key: 'onCreate',\n value: function onCreate() {\n document.addEventListener('keyup', this.onKeyUp, true);\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy() {\n document.removeEventListener('keyup', this.onKeyUp);\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp);\n }\n }]);\n\n return DeleteAction;\n}(_Action3.default);\n\nexports.default = DeleteAction;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 ImageSpec = function (_BlotSpec) {\n _inherits(ImageSpec, _BlotSpec);\n\n function ImageSpec(formatter) {\n _classCallCheck(this, ImageSpec);\n\n var _this = _possibleConstructorReturn(this, (ImageSpec.__proto__ || Object.getPrototypeOf(ImageSpec)).call(this, formatter));\n\n _this.onClick = function (event) {\n var el = event.target;\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return;\n }\n\n _this.img = el;\n _this.formatter.show(_this);\n };\n\n _this.img = null;\n return _this;\n }\n\n _createClass(ImageSpec, [{\n key: 'init',\n value: function init() {\n this.formatter.quill.root.addEventListener('click', this.onClick);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.img;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.img = null;\n }\n }]);\n\n return ImageSpec;\n}(_BlotSpec3.default);\n\nexports.default = ImageSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _UnclickableBlotSpec2 = require('./UnclickableBlotSpec');\n\nvar _UnclickableBlotSpec3 = _interopRequireDefault(_UnclickableBlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 IframeVideoSpec = function (_UnclickableBlotSpec) {\n _inherits(IframeVideoSpec, _UnclickableBlotSpec);\n\n function IframeVideoSpec(formatter) {\n _classCallCheck(this, IframeVideoSpec);\n\n return _possibleConstructorReturn(this, (IframeVideoSpec.__proto__ || Object.getPrototypeOf(IframeVideoSpec)).call(this, formatter, 'iframe.ql-video'));\n }\n\n return IframeVideoSpec;\n}(_UnclickableBlotSpec3.default);\n\nexports.default = IframeVideoSpec;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: 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 _BlotSpec2 = require('./BlotSpec');\n\nvar _BlotSpec3 = _interopRequireDefault(_BlotSpec2);\n\nvar _BlotFormatter = require('../BlotFormatter');\n\nvar _BlotFormatter2 = _interopRequireDefault(_BlotFormatter);\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 MOUSE_ENTER_ATTRIBUTE = 'data-blot-formatter-unclickable-bound';\nvar PROXY_IMAGE_CLASS = 'blot-formatter__proxy-image';\n\nvar UnclickableBlotSpec = function (_BlotSpec) {\n _inherits(UnclickableBlotSpec, _BlotSpec);\n\n function UnclickableBlotSpec(formatter, selector) {\n _classCallCheck(this, UnclickableBlotSpec);\n\n var _this = _possibleConstructorReturn(this, (UnclickableBlotSpec.__proto__ || Object.getPrototypeOf(UnclickableBlotSpec)).call(this, formatter));\n\n _this.onTextChange = function () {\n Array.from(document.querySelectorAll(_this.selector + ':not([' + MOUSE_ENTER_ATTRIBUTE + '])')).forEach(function (unclickable) {\n unclickable.setAttribute(MOUSE_ENTER_ATTRIBUTE, 'true');\n unclickable.addEventListener('mouseenter', _this.onMouseEnter);\n });\n };\n\n _this.onMouseEnter = function (event) {\n var unclickable = event.target;\n if (!(unclickable instanceof HTMLElement)) {\n return;\n }\n\n _this.nextUnclickable = unclickable;\n _this.repositionProxyImage(_this.nextUnclickable);\n };\n\n _this.onProxyImageClick = function () {\n _this.unclickable = _this.nextUnclickable;\n _this.nextUnclickable = null;\n _this.formatter.show(_this);\n _this.hideProxyImage();\n };\n\n _this.selector = selector;\n _this.unclickable = null;\n _this.nextUnclickable = null;\n return _this;\n }\n\n _createClass(UnclickableBlotSpec, [{\n key: 'init',\n value: function init() {\n if (document.body) {\n /*\n it's important that this is attached to the body instead of the root quill element.\n this prevents the click event from overlapping with ImageSpec\n */\n document.body.appendChild(this.createProxyImage());\n }\n\n this.hideProxyImage();\n this.proxyImage.addEventListener('click', this.onProxyImageClick);\n this.formatter.quill.on('text-change', this.onTextChange);\n }\n }, {\n key: 'getTargetElement',\n value: function getTargetElement() {\n return this.unclickable;\n }\n }, {\n key: 'getOverlayElement',\n value: function getOverlayElement() {\n return this.unclickable;\n }\n }, {\n key: 'onHide',\n value: function onHide() {\n this.hideProxyImage();\n this.nextUnclickable = null;\n this.unclickable = null;\n }\n }, {\n key: 'createProxyImage',\n value: function createProxyImage() {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n context.globalAlpha = 0;\n context.fillRect(0, 0, 1, 1);\n\n this.proxyImage = document.createElement('img');\n this.proxyImage.src = canvas.toDataURL('image/png');\n this.proxyImage.classList.add(PROXY_IMAGE_CLASS);\n\n Object.assign(this.proxyImage.style, {\n position: 'absolute',\n margin: '0'\n });\n\n return this.proxyImage;\n }\n }, {\n key: 'hideProxyImage',\n value: function hideProxyImage() {\n Object.assign(this.proxyImage.style, {\n display: 'none'\n });\n }\n }, {\n key: 'repositionProxyImage',\n value: function repositionProxyImage(unclickable) {\n var rect = unclickable.getBoundingClientRect();\n\n Object.assign(this.proxyImage.style, {\n display: 'block',\n left: rect.left + window.pageXOffset + 'px',\n top: rect.top + window.pageYOffset + 'px',\n width: rect.width + 'px',\n height: rect.height + 'px'\n });\n }\n }]);\n\n return UnclickableBlotSpec;\n}(_BlotSpec3.default);\n\nexports.default = UnclickableBlotSpec;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.QuillCursors=e():t.QuillCursors=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(6),i=function(){function t(t,e,n){this.id=t,this.name=e,this.color=n}return t.prototype.build=function(e){var n=document.createElement(t.CONTAINER_ELEMENT_TAG);n.classList.add(t.CURSOR_CLASS),n.id=\"ql-cursor-\"+this.id,n.innerHTML=e.template;var r=n.getElementsByClassName(t.SELECTION_CLASS)[0],i=n.getElementsByClassName(t.CARET_CONTAINER_CLASS)[0],o=i.getElementsByClassName(t.CARET_CLASS)[0],s=n.getElementsByClassName(t.FLAG_CLASS)[0];return s.style.backgroundColor=this.color,o.style.backgroundColor=this.color,n.getElementsByClassName(t.NAME_CLASS)[0].textContent=this.name,this._hideDelay=e.hideDelayMs+\"ms\",this._hideSpeedMs=e.hideSpeedMs,s.style.transitionDelay=this._hideDelay,s.style.transitionDuration=this._hideSpeedMs+\"ms\",this._el=n,this._selectionEl=r,this._caretEl=i,this._flagEl=s,this._el},t.prototype.show=function(){this._el.classList.remove(t.HIDDEN_CLASS)},t.prototype.hide=function(){this._el.classList.add(t.HIDDEN_CLASS)},t.prototype.remove=function(){this._el.parentNode.removeChild(this._el)},t.prototype.toggleFlag=function(e){var n=this;this._flagEl.classList.toggle(t.SHOW_FLAG_CLASS,e)||(this._flagEl.classList.add(t.NO_DELAY_CLASS),setTimeout((function(){return n._flagEl.classList.remove(t.NO_DELAY_CLASS)}),this._hideSpeedMs))},t.prototype.updateCaret=function(t){this._caretEl.style.top=t.top+\"px\",this._caretEl.style.left=t.left+\"px\",this._caretEl.style.height=t.height+\"px\",this._flagEl.style.top=t.top+\"px\",this._flagEl.style.left=t.left+\"px\"},t.prototype.updateSelection=function(t,e){var n=this;this._clearSelection(),t=t||[],t=Array.from(t),t=this._sanitize(t),(t=this._sortByDomPosition(t)).forEach((function(t){return n._addSelection(t,e)}))},t.prototype._clearSelection=function(){this._selectionEl.innerHTML=\"\"},t.prototype._addSelection=function(t,e){var n=this._selectionBlock(t,e);this._selectionEl.appendChild(n)},t.prototype._selectionBlock=function(e,n){var i=document.createElement(t.SELECTION_ELEMENT_TAG);return i.classList.add(t.SELECTION_BLOCK_CLASS),i.style.top=e.top-n.top+\"px\",i.style.left=e.left-n.left+\"px\",i.style.width=e.width+\"px\",i.style.height=e.height+\"px\",i.style.backgroundColor=r(this.color).setAlpha(.3).toString(),i},t.prototype._sortByDomPosition=function(t){return t.sort((function(t,e){return t.top===e.top?t.left-e.left:t.top-e.top}))},t.prototype._sanitize=function(t){var e=this,n=new Set;return t.filter((function(t){if(!t.width||!t.height)return!1;var r=e._serialize(t);return!n.has(r)&&(n.add(r),!0)}))},t.prototype._serialize=function(t){return[\"top:\"+t.top,\"right:\"+t.right,\"bottom:\"+t.bottom,\"left:\"+t.left].join(\";\")},t.CONTAINER_ELEMENT_TAG=\"SPAN\",t.SELECTION_ELEMENT_TAG=\"SPAN\",t.CURSOR_CLASS=\"ql-cursor\",t.SELECTION_CLASS=\"ql-cursor-selections\",t.SELECTION_BLOCK_CLASS=\"ql-cursor-selection-block\",t.CARET_CLASS=\"ql-cursor-caret\",t.CARET_CONTAINER_CLASS=\"ql-cursor-caret-container\",t.FLAG_CLASS=\"ql-cursor-flag\",t.SHOW_FLAG_CLASS=\"show-flag\",t.FLAG_FLAP_CLASS=\"ql-cursor-flag-flap\",t.NAME_CLASS=\"ql-cursor-name\",t.HIDDEN_CLASS=\"hidden\",t.NO_DELAY_CLASS=\"no-delay\",t}();e.default=i},function(t,e,n){var r=Array.prototype.slice,i=n(12),o=n(13),s=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?n.strict?t===e:t==e:function(t,e,n){var l,c;if(a(t)||a(e))return!1;if(t.prototype!==e.prototype)return!1;if(o(t))return!!o(e)&&(t=r.call(t),e=r.call(e),s(t,e,n));if(u(t)){if(!u(e))return!1;if(t.length!==e.length)return!1;for(l=0;l=0;l--)if(f[l]!=h[l])return!1;for(l=f.length-1;l>=0;l--)if(c=f[l],!s(t[c],e[c],n))return!1;return typeof t==typeof e}(t,e,n))};function a(t){return null==t}function u(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}},function(t,e,n){\"use strict\";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},u=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,n=r.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&r.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!n&&!o)return!1;for(e in t);return void 0===e||r.call(t,e)},l=function(t,e){o&&\"__proto__\"===e.name?o(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},c=function(t,e){if(\"__proto__\"===e){if(!r.call(t,e))return;if(s)return s(t,e).value}return t[e]};t.exports=function t(){var e,n,r,i,o,s,f=arguments[0],h=1,p=arguments.length,d=!1;for(\"boolean\"==typeof f&&(d=f,f=arguments[1]||{},h=2),(null==f||\"object\"!=typeof f&&\"function\"!=typeof f)&&(f={});h=0},t.prototype._handleTextChange=function(t){var e=this;window.setTimeout((function(){e._options.transformOnTextChange&&e._transformCursors(t),e._options.selectionChangeSource&&(e._emitSelection(),e.update())}))},t.prototype._emitSelection=function(){this._quill.emitter.emit(this._quill.constructor.events.SELECTION_CHANGE,this._quill.getSelection(),this._currentSelection,this._options.selectionChangeSource)},t.prototype._setDefaults=function(t){return(t=Object.assign({},t)).template=t.template||a.default,t.containerClass=t.containerClass||\"ql-cursors\",null!==t.selectionChangeSource&&(t.selectionChangeSource=t.selectionChangeSource||this._quill.constructor.sources.API),t.hideDelayMs=Number.isInteger(t.hideDelayMs)?t.hideDelayMs:3e3,t.hideSpeedMs=Number.isInteger(t.hideSpeedMs)?t.hideSpeedMs:400,t.transformOnTextChange=!!t.transformOnTextChange,t},t.prototype._lineRanges=function(t,e,n){var r=this._quill.getLines(t.range);return r.reduce((function(t,i,o){if(!i.children){var s=document.createRange();return s.selectNode(i.domNode),t.concat(s)}var a=0===o?e:i.path(0).pop(),u=a[0],l=a[1],c=o===r.length-1?n:i.path(i.length()-1).pop(),f=c[0],h=c[1],p=document.createRange();return p.setStart(u.domNode,l),p.setEnd(f.domNode,h),t.concat(p)}),[])},t.prototype._transformCursors=function(t){var e=this;t=new l(t),this.cursors().filter((function(t){return t.range})).forEach((function(n){n.range.index=t.transformPosition(n.range.index),e._updateCursor(n)}))},t}();e.default=c},function(t,e,n){var r;!function(i){var o=/^\\s+/,s=/\\s+$/,a=0,u=i.round,l=i.min,c=i.max,f=i.random;function h(t,e){if(e=e||{},(t=t||\"\")instanceof h)return t;if(!(this instanceof h))return new h(t,e);var n=function(t){var e={r:0,g:0,b:0},n=1,r=null,a=null,u=null,f=!1,h=!1;\"string\"==typeof t&&(t=function(t){t=t.replace(o,\"\").replace(s,\"\").toLowerCase();var e,n=!1;if(M[t])t=M[t],n=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=G.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=G.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=G.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=G.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=G.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=G.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=G.hex8.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),a:F(e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex6.exec(t))return{r:q(e[1]),g:q(e[2]),b:q(e[3]),format:n?\"name\":\"hex\"};if(e=G.hex4.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),a:F(e[4]+\"\"+e[4]),format:n?\"name\":\"hex8\"};if(e=G.hex3.exec(t))return{r:q(e[1]+\"\"+e[1]),g:q(e[2]+\"\"+e[2]),b:q(e[3]+\"\"+e[3]),format:n?\"name\":\"hex\"};return!1}(t));\"object\"==typeof t&&(U(t.r)&&U(t.g)&&U(t.b)?(p=t.r,d=t.g,g=t.b,e={r:255*T(p,255),g:255*T(d,255),b:255*T(g,255)},f=!0,h=\"%\"===String(t.r).substr(-1)?\"prgb\":\"rgb\"):U(t.h)&&U(t.s)&&U(t.v)?(r=H(t.s),a=H(t.v),e=function(t,e,n){t=6*T(t,360),e=T(e,100),n=T(n,100);var r=i.floor(t),o=t-r,s=n*(1-e),a=n*(1-o*e),u=n*(1-(1-o)*e),l=r%6;return{r:255*[n,a,s,s,u,n][l],g:255*[u,n,n,a,s,s][l],b:255*[s,s,u,n,n,a][l]}}(t.h,r,a),f=!0,h=\"hsv\"):U(t.h)&&U(t.s)&&U(t.l)&&(r=H(t.s),u=H(t.l),e=function(t,e,n){var r,i,o;function s(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=T(t,360),e=T(e,100),n=T(n,100),0===e)r=i=o=n;else{var a=n<.5?n*(1+e):n+e-n*e,u=2*n-a;r=s(u,a,t+1/3),i=s(u,a,t),o=s(u,a,t-1/3)}return{r:255*r,g:255*i,b:255*o}}(t.h,r,u),f=!0,h=\"hsl\"),t.hasOwnProperty(\"a\")&&(n=t.a));var p,d,g;return n=j(n),{ok:f,format:t.format||h,r:l(255,c(e.r,0)),g:l(255,c(e.g,0)),b:l(255,c(e.b,0)),a:n}}(t);this._originalInput=t,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=u(100*this._a)/100,this._format=e.format||n.format,this._gradientType=e.gradientType,this._r<1&&(this._r=u(this._r)),this._g<1&&(this._g=u(this._g)),this._b<1&&(this._b=u(this._b)),this._ok=n.ok,this._tc_id=a++}function p(t,e,n){t=T(t,255),e=T(e,255),n=T(n,255);var r,i,o=c(t,e,n),s=l(t,e,n),a=(o+s)/2;if(o==s)r=i=0;else{var u=o-s;switch(i=a>.5?u/(2-o-s):u/(o+s),o){case t:r=(e-n)/u+(e>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(h(r));return o}function L(t,e){e=e||6;for(var n=h(t).toHsv(),r=n.h,i=n.s,o=n.v,s=[],a=1/e;e--;)s.push(h({h:r,s:i,v:o})),o=(o+a)%1;return s}h.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,n,r=this.toRgb();return t=r.r/255,e=r.g/255,n=r.b/255,.2126*(t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:i.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=j(t),this._roundA=u(100*this._a)/100,this},toHsv:function(){var t=d(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=d(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsva(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=p(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=p(this._r,this._g,this._b),e=u(360*t.h),n=u(100*t.s),r=u(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+n+\"%, \"+r+\"%)\":\"hsla(\"+e+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHex:function(t){return g(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,n,r,i){var o=[D(u(t).toString(16)),D(u(e).toString(16)),D(u(n).toString(16)),D(I(r))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:u(this._r),g:u(this._g),b:u(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\")\":\"rgba(\"+u(this._r)+\", \"+u(this._g)+\", \"+u(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:u(100*T(this._r,255))+\"%\",g:u(100*T(this._g,255))+\"%\",b:u(100*T(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%)\":\"rgba(\"+u(100*T(this._r,255))+\"%, \"+u(100*T(this._g,255))+\"%, \"+u(100*T(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(R[g(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+b(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=h(t);n=\"#\"+b(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+e+\",endColorstr=\"+n+\")\"},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&this._a>=0;return e||!r||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(n=this.toRgbString()),\"prgb\"===t&&(n=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(n=this.toHexString()),\"hex3\"===t&&(n=this.toHexString(!0)),\"hex4\"===t&&(n=this.toHex8String(!0)),\"hex8\"===t&&(n=this.toHex8String()),\"name\"===t&&(n=this.toName()),\"hsl\"===t&&(n=this.toHslString()),\"hsv\"===t&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return h(this.toString())},_applyModification:function(t,e){var n=t.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(m,arguments)},brighten:function(){return this._applyModification(A,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(v,arguments)},saturate:function(){return this._applyModification(_,arguments)},greyscale:function(){return this._applyModification(y,arguments)},spin:function(){return this._applyModification(C,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(S,arguments)},monochromatic:function(){return this._applyCombination(L,arguments)},splitcomplement:function(){return this._applyCombination(O,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(E,arguments)}},h.fromRatio=function(t,e){if(\"object\"==typeof t){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=\"a\"===r?t[r]:H(t[r]));t=n}return h(t,e)},h.equals=function(t,e){return!(!t||!e)&&h(t).toRgbString()==h(e).toRgbString()},h.random=function(){return h.fromRatio({r:f(),g:f(),b:f()})},h.mix=function(t,e,n){n=0===n?0:n||50;var r=h(t).toRgb(),i=h(e).toRgb(),o=n/100;return h({r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a})},h.readability=function(t,e){var n=h(t),r=h(e);return(i.max(n.getLuminance(),r.getLuminance())+.05)/(i.min(n.getLuminance(),r.getLuminance())+.05)},h.isReadable=function(t,e,n){var r,i,o=h.readability(t,e);switch(i=!1,(r=function(t){var e,n;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),n=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==n&&\"large\"!==n&&(n=\"small\");return{level:e,size:n}}(n)).level+r.size){case\"AAsmall\":case\"AAAlarge\":i=o>=4.5;break;case\"AAlarge\":i=o>=3;break;case\"AAAsmall\":i=o>=7}return i},h.mostReadable=function(t,e,n){var r,i,o,s,a=null,u=0;i=(n=n||{}).includeFallbackColors,o=n.level,s=n.size;for(var l=0;lu&&(u=r,a=h(e[l]));return h.isReadable(t,a,{level:o,size:s})||!i?a:(n.includeFallbackColors=!1,h.mostReadable(t,[\"#fff\",\"#000\"],n))};var M=h.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},R=h.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(M);function j(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function T(t,e){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(t)&&(t=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(t);return t=l(e,c(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),i.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function N(t){return l(1,c(0,t))}function q(t){return parseInt(t,16)}function D(t){return 1==t.length?\"0\"+t:\"\"+t}function H(t){return t<=1&&(t=100*t+\"%\"),t}function I(t){return i.round(255*parseFloat(t)).toString(16)}function F(t){return q(t)/255}var P,B,z,G=(B=\"[\\\\s|\\\\(]+(\"+(P=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",z=\"[\\\\s|\\\\(]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")[,|\\\\s]+(\"+P+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(P),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+z),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+z),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!G.CSS_UNIT.exec(t)}t.exports?t.exports=h:void 0===(r=function(){return h}.call(e,n,e,t))||(t.exports=r)}(Math)},function(t,e,n){var r,i;\n/*!\n * RangeFix v0.2.8\n * https://github.com/edg2s/rangefix\n *\n * Copyright 2014-17 Ed Sanders.\n * Released under the MIT license\n */void 0===(i=\"function\"==typeof(r=function(){var t,e={};function n(t){var e;return t?screen.deviceXDPI===screen.logicalXDPI?t:\"length\"in t?Array.prototype.map.call(t,n):(e=screen.deviceXDPI/screen.logicalXDPI,{top:t.top/e,bottom:t.bottom/e,left:t.left/e,right:t.right/e,width:t.width/e,height:t.height/e}):t}function r(t,e){var n,r=0;if(1024>=e.length)return Array.prototype.push.apply(t,e);for(;r1,t.getClientRects||(a.setEnd(o,1),t.getClientRects=t.getBoundingClientRect=2===a.getClientRects().length),t.getBoundingClientRect||(a.setEnd(a.startContainer,a.startOffset),e=a.getBoundingClientRect(),t.getBoundingClientRect=0===e.top&&0===e.left),document.body.removeChild(n),u=window.ActiveXObject&&new Function(\"/*@cc_on return @_jscript_version; @*/\")(),t.ieZoom=!!u&&u<=10),t},e.getClientRects=function(t){var e,i,o,s,a,u=this.isBroken();if(u.ieZoom)return n(t.getClientRects());if(!u.getClientRects)return t.getClientRects();for(e=[],o=[],i=t.endContainer,s=t.endOffset,a=document.createRange();i!==t.commonAncestorContainer;)a.setStart(i,0),a.setEnd(i,s),r(o,a.getClientRects()),s=Array.prototype.indexOf.call(i.parentNode.childNodes,i),i=i.parentNode;return(a=t.cloneRange()).setEnd(i,s),r(e,a.getClientRects()),r(e,o),e},e.getBoundingClientRect=function(t){var e,r,i,o,s,a,u=this.getClientRects(t);if(0===u.length)return null;if(s=t.getBoundingClientRect(),(a=this.isBroken()).ieZoom)return n(s);if(!a.getBoundingClientRect)return s;if(0===s.width&&0===s.height)return u[0];for(e=0,r=u.length;e
    \\n \\n \\n \\n
    \\n \\n \\n
    \\n';e.default=o},function(t,e,n){\"use strict\";n.r(e),function(t){var n=function(){if(\"undefined\"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return(function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n0},t.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),a?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?\"\":e;s.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),l=function(t,e){for(var n=0,r=Object.keys(e);n0},t}(),A=\"undefined\"!=typeof WeakMap?new WeakMap:new n,x=function t(e){if(!(this instanceof t))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=u.getInstance(),r=new m(e,n,this);A.set(this,r)};[\"observe\",\"unobserve\",\"disconnect\"].forEach((function(t){x.prototype[t]=function(){var e;return(e=A.get(this))[t].apply(e,arguments)}}));var C=void 0!==i.ResizeObserver?i.ResizeObserver:x;e.default=C}.call(this,n(10))},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},i=r(n(1)),o=r(n(2)),s=r(n(14)),a=r(n(15)),u=r(n(3)),l=String.fromCharCode(0),c=function(){function t(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]}return t.prototype.insert=function(t,e){var n={};return\"string\"==typeof t&&0===t.length?this:(n.insert=t,null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n))},t.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},t.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},t.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=o.default(!0,{},t),\"object\"==typeof n){if(\"number\"==typeof t.delete&&\"number\"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if(\"number\"==typeof n.delete&&null!=t.insert&&(e-=1,\"object\"!=typeof(n=this.ops[e-1])))return this.ops.unshift(t),this;if(i.default(t.attributes,n.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},t.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},t.prototype.filter=function(t){return this.ops.filter(t)},t.prototype.forEach=function(t){this.ops.forEach(t)},t.prototype.map=function(t){return this.ops.map(t)},t.prototype.partition=function(t){var e=[],n=[];return this.forEach((function(r){(t(r)?e:n).push(r)})),[e,n]},t.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},t.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+u.default.length(e):e.delete?t-e.delete:t}),0)},t.prototype.length=function(){return this.reduce((function(t,e){return t+u.default.length(e)}),0)},t.prototype.slice=function(e,n){void 0===e&&(e=0),void 0===n&&(n=1/0);for(var r=[],i=u.default.iterator(this.ops),o=0;o0&&r.next(s.retain-l)}for(var c=new t(o);n.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())c.push(r.next());else if(\"delete\"===n.peekType())c.push(n.next());else{var f=Math.min(n.peekLength(),r.peekLength()),h=n.next(f),p=r.next(f);if(\"number\"==typeof p.retain){var d={};\"number\"==typeof h.retain?d.retain=f:d.insert=h.insert;var g=a.default.compose(h.attributes,p.attributes,\"number\"==typeof h.retain);if(g&&(d.attributes=g),c.push(d),!r.hasNext()&&i.default(c.ops[c.ops.length-1],d)){var b=new t(n.rest());return c.concat(b).chop()}}else\"number\"==typeof p.delete&&\"number\"==typeof h.retain&&c.push(p)}return c.chop()},t.prototype.concat=function(e){var n=new t(this.ops.slice());return e.ops.length>0&&(n.push(e.ops[0]),n.ops=n.ops.concat(e.ops.slice(1))),n},t.prototype.diff=function(e,n){if(this.ops===e.ops)return new t;var r=[this,e].map((function(t){return t.map((function(n){if(null!=n.insert)return\"string\"==typeof n.insert?n.insert:l;throw new Error(\"diff() called \"+(t===e?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new t,c=s.default(r[0],r[1],n),f=u.default.iterator(this.ops),h=u.default.iterator(e.ops);return c.forEach((function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case s.default.INSERT:n=Math.min(h.peekLength(),e),o.push(h.next(n));break;case s.default.DELETE:n=Math.min(e,f.peekLength()),f.next(n),o.delete(n);break;case s.default.EQUAL:n=Math.min(f.peekLength(),h.peekLength(),e);var r=f.next(n),u=h.next(n);i.default(r.insert,u.insert)?o.retain(n,a.default.diff(r.attributes,u.attributes)):o.push(u).delete(n)}e-=n}})),o.chop()},t.prototype.eachLine=function(e,n){void 0===n&&(n=\"\\n\");for(var r=u.default.iterator(this.ops),i=new t,o=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var s=r.peek(),a=u.default.length(s)-r.peekLength(),l=\"string\"==typeof s.insert?s.insert.indexOf(n,a)-a:-1;if(l<0)i.push(r.next());else if(l>0)i.push(r.next(l));else{if(!1===e(i,r.next(1).attributes||{},o))return;o+=1,i=new t}}i.length()>0&&e(i,{},o)},t.prototype.invert=function(e){var n=new t;return this.reduce((function(t,r){if(r.insert)n.delete(u.default.length(r));else{if(r.retain&&null==r.attributes)return n.retain(r.retain),t+r.retain;if(r.delete||r.retain&&r.attributes){var i=r.delete||r.retain;return e.slice(t,t+i).forEach((function(t){r.delete?n.push(t):r.retain&&r.attributes&&n.retain(u.default.length(t),a.default.invert(r.attributes,t.attributes))})),t+i}}return t}),0),n.chop()},t.prototype.transform=function(e,n){if(void 0===n&&(n=!1),n=!!n,\"number\"==typeof e)return this.transformPosition(e,n);for(var r=e,i=u.default.iterator(this.ops),o=u.default.iterator(r.ops),s=new t;i.hasNext()||o.hasNext();)if(\"insert\"!==i.peekType()||!n&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())s.push(o.next());else{var l=Math.min(i.peekLength(),o.peekLength()),c=i.next(l),f=o.next(l);if(c.delete)continue;f.delete?s.push(f):s.retain(l,a.default.transform(c.attributes,f.attributes,n))}else s.retain(u.default.length(i.next()));return s.chop()},t.prototype.transformPosition=function(t,e){void 0===e&&(e=!1),e=!!e;for(var n=u.default.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var i=n.peekLength(),o=n.peekType();n.next(),\"delete\"!==o?(\"insert\"===o&&(rs)){var p=e.slice(0,h);if((m=e.slice(h))===l){var d=Math.min(a,h),g=u.slice(0,d),b=p.slice(0,d);if(g===b){var v=u.slice(d),_=p.slice(d);return c(g,v,_,l)}}}if(null===f||f===a){var y=a,m=(p=e.slice(0,y),e.slice(y));if(p===u){var A=Math.min(o-y,s-y),x=l.slice(l.length-A),C=m.slice(m.length-A);if(x===C){v=l.slice(0,l.length-A),_=m.slice(0,m.length-A);return c(u,v,_,x)}}}}if(r.length>0&&i&&0===i.length){g=t.slice(0,r.index),x=t.slice(r.index+r.length),d=g.length,A=x.length;if(!(se.length?t:e,u=t.length>e.length?e:t,l=a.indexOf(u);if(-1!==l)return s=[[1,a.substring(0,l)],[0,u],[1,a.substring(l+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1===u.length)return[[-1,t],[1,e]];var c=function(t,e){var n=t.length>e.length?t:e,r=t.length>e.length?e:t;if(n.length<4||2*r.length=t.length?[r,s,a,u,f]:null}var a,u,l,c,f,h=s(n,r,Math.ceil(n.length/4)),p=s(n,r,Math.ceil(n.length/2));if(!h&&!p)return null;a=p?h&&h[4].length>p[4].length?h:p:h;t.length>e.length?(u=a[0],l=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],l=a[3]);var d=a[4];return[u,l,c,f,d]}(t,e);if(c){var f=c[0],h=c[1],p=c[2],d=c[3],g=c[4],b=n(f,p),v=n(h,d);return b.concat([[0,g]],v)}return function(t,e){for(var n=t.length,i=e.length,o=Math.ceil((n+i)/2),s=o,a=2*o,u=new Array(a),l=new Array(a),c=0;cn)d+=2;else if(m>i)p+=2;else if(h){if((C=s+f-_)>=0&&C=A)return r(t,e,w,m)}}}for(var x=-v+g;x<=v-b;x+=2){for(var C=s+x,S=(A=x===-v||x!==v&&l[C-1]n)b+=2;else if(S>i)g+=2;else if(!h){if((y=s+f-x)>=0&&y=(A=n-A))return r(t,e,w,m)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-h),e=e.substring(0,e.length-h));return p&&g.unshift([0,p]),d&&g.push([0,d]),function t(e,n){e.push([0,\"\"]);var r,s=0,a=0,c=0,f=\"\",h=\"\";for(;s=0&&l(e[p][1])){var d=e[p][1].slice(-1);if(e[p][1]=e[p][1].slice(0,-1),f=d+f,h=d+h,!e[p][1]){e.splice(p,1),s--;var g=p-1;e[g]&&1===e[g][0]&&(c++,h=e[g][1]+h,g--),e[g]&&-1===e[g][0]&&(a++,f=e[g][1]+f,g--),p=g}}if(u(e[s][1])){d=e[s][1].charAt(0);e[s][1]=e[s][1].slice(1),f+=d,h+=d}}if(s0||h.length>0){f.length>0&&h.length>0&&(0!==(r=i(h,f))&&(p>=0?e[p][1]+=h.substring(0,r):(e.splice(0,0,[0,h.substring(0,r)]),s++),h=h.substring(r),f=f.substring(r)),0!==(r=o(h,f))&&(e[s][1]=h.substring(h.length-r)+e[s][1],h=h.substring(0,h.length-r),f=f.substring(0,f.length-r)));var b=c+a;0===f.length&&0===h.length?(e.splice(s-b,b),s-=b):0===f.length?(e.splice(s-b,b,[1,h]),s=s-b+1):0===h.length?(e.splice(s-b,b,[-1,f]),s=s-b+1):(e.splice(s-b,b,[-1,f],[1,h]),s=s-b+2)}0!==s&&0===e[s-1][0]?(e[s-1][1]+=e[s][1],e.splice(s,1)):s++,c=0,a=0,f=\"\",h=\"\"}\"\"===e[e.length-1][1]&&e.pop();var v=!1;s=1;for(;s=55296&&t<=56319}function a(t){return t>=56320&&t<=57343}function u(t){return a(t.charCodeAt(0))}function l(t){return s(t.charCodeAt(t.length-1))}function c(t,e,n,r){return l(t)||u(r)?null:function(t){for(var e=[],n=0;n0&&e.push(t[n]);return e}([[0,t],[-1,e],[1,n],[0,r]])}function f(t,e,r){return n(t,e,r,!0)}f.INSERT=1,f.DELETE=-1,f.EQUAL=0,t.exports=f},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(n(1)),s=r(n(2));!function(t){t.compose=function(t,e,n){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var r=s.default(!0,{},e);for(var i in n||(r=Object.keys(r).reduce((function(t,e){return null!=r[e]&&(t[e]=r[e]),t}),{})),t)void 0!==t[i]&&void 0===e[i]&&(r[i]=t[i]);return Object.keys(r).length>0?r:void 0},t.diff=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce((function(n,r){return o.default(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n}),{});return Object.keys(n).length>0?n:void 0},t.invert=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),t=t||{};var n=Object.keys(e).reduce((function(n,r){return e[r]!==t[r]&&void 0!==t[r]&&(n[r]=e[r]),n}),{});return Object.keys(t).reduce((function(n,r){return t[r]!==e[r]&&void 0===e[r]&&(n[r]=null),n}),n)},t.transform=function(t,e,n){if(void 0===n&&(n=!1),\"object\"!=typeof t)return e;if(\"object\"==typeof e){if(!n)return e;var r=Object.keys(e).reduce((function(n,r){return void 0===t[r]&&(n[r]=e[r]),n}),{});return Object.keys(r).length>0?r:void 0}}}(i||(i={})),e.default=i},function(t,e,n){\"use strict\";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(n(3)),o=function(){function t(t){this.ops=t,this.index=0,this.offset=0}return t.prototype.hasNext=function(){return this.peekLength()<1/0},t.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=i.default.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),\"number\"==typeof e.retain?o.retain=t:\"string\"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},t.prototype.peek=function(){return this.ops[this.index]},t.prototype.peekLength=function(){return this.ops[this.index]?i.default.length(this.ops[this.index])-this.offset:1/0},t.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},t.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,n=this.next(),r=this.ops.slice(this.index);return this.offset=t,this.index=e,[n].concat(r)}return[]},t}();e.default=o},function(t,e,n){var r=n(18),i=n(19);\"string\"==typeof(i=i.__esModule?i.default:i)&&(i=[[t.i,i,\"\"]]);var o={insert:\"head\",singleton:!1},s=(r(t.i,i,o),i.locals?i.locals:{});t.exports=s},function(t,e,n){\"use strict\";var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s={};function a(t,e,n){for(var r=0;r2?arguments[2]:{},o=n(e);i&&(o=a.call(o,Object.getOwnPropertySymbols(e)));for(var s=0;s0&&(r.attributes=e),this.push(r))},p.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},p.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&\"object\"===o(e)&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},p.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=s(!0,{},t),\"object\"===o(r)){if(\"number\"==typeof t.delete&&\"number\"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if(\"number\"==typeof r.delete&&null!=t.insert&&(e-=1,\"object\"!==o(r=this.ops[e-1])))return this.ops.unshift(t),this;if(i(t.attributes,r.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},\"object\"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},p.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},p.prototype.filter=function(t){return this.ops.filter(t)},p.prototype.forEach=function(t){this.ops.forEach(t)},p.prototype.map=function(t){return this.ops.map(t)},p.prototype.partition=function(t){var e=[],r=[];return this.forEach((function(o){(t(o)?e:r).push(o)})),[e,r]},p.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},p.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+a.length(e):e.delete?t-e.delete:t}),0)},p.prototype.length=function(){return this.reduce((function(t,e){return t+a.length(e)}),0)},p.prototype.slice=function(t,e){t=t||0,\"number\"!=typeof e&&(e=1/0);for(var r=[],o=a.iterator(this.ops),n=0;n0&&r.next(n.retain-s)}for(var u=new p(o);e.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())u.push(r.next());else if(\"delete\"===e.peekType())u.push(e.next());else{var c=Math.min(e.peekLength(),r.peekLength()),f=e.next(c),l=r.next(c);if(\"number\"==typeof l.retain){var y={};\"number\"==typeof f.retain?y.retain=c:y.insert=f.insert;var h=a.attributes.compose(f.attributes,l.attributes,\"number\"==typeof f.retain);if(h&&(y.attributes=h),u.push(y),!r.hasNext()&&i(u.ops[u.ops.length-1],y)){var b=new p(e.rest());return u.concat(b).chop()}}else\"number\"==typeof l.delete&&\"number\"==typeof f.retain&&u.push(l)}return u.chop()},p.prototype.concat=function(t){var e=new p(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},p.prototype.diff=function(t,e){if(this.ops===t.ops)return new p;var r=[this,t].map((function(e){return e.map((function(r){if(null!=r.insert)return\"string\"==typeof r.insert?r.insert:u;throw new Error(\"diff() called \"+(e===t?\"on\":\"with\")+\" non-document\")})).join(\"\")})),o=new p,s=n(r[0],r[1],e),c=a.iterator(this.ops),f=a.iterator(t.ops);return s.forEach((function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),o.push(f.next(r));break;case n.DELETE:r=Math.min(e,c.peekLength()),c.next(r),o.delete(r);break;case n.EQUAL:r=Math.min(c.peekLength(),f.peekLength(),e);var s=c.next(r),u=f.next(r);i(s.insert,u.insert)?o.retain(r,a.attributes.diff(s.attributes,u.attributes)):o.push(u).delete(r)}e-=r}})),o.chop()},p.prototype.eachLine=function(t,e){e=e||\"\\n\";for(var r=a.iterator(this.ops),o=new p,n=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var i=r.peek(),s=a.length(i)-r.peekLength(),u=\"string\"==typeof i.insert?i.insert.indexOf(e,s)-s:-1;if(u<0)o.push(r.next());else if(u>0)o.push(r.next(u));else{if(!1===t(o,r.next(1).attributes||{},n))return;n+=1,o=new p}}o.length()>0&&t(o,{},n)},p.prototype.transform=function(t,e){if(e=!!e,\"number\"==typeof t)return this.transformPosition(t,e);for(var r=a.iterator(this.ops),o=a.iterator(t.ops),n=new p;r.hasNext()||o.hasNext();)if(\"insert\"!==r.peekType()||!e&&\"insert\"===o.peekType())if(\"insert\"===o.peekType())n.push(o.next());else{var i=Math.min(r.peekLength(),o.peekLength()),s=r.next(i),u=o.next(i);if(s.delete)continue;u.delete?n.push(u):n.retain(i,a.attributes.transform(s.attributes,u.attributes,e))}else n.retain(a.length(r.next()));return n.chop()},p.prototype.transformPosition=function(t,e){e=!!e;for(var r=a.iterator(this.ops),o=0;r.hasNext()&&o<=t;){var n=r.peekLength(),i=r.peekType();r.next(),\"delete\"!==i?(\"insert\"===i&&(o=0;s--)if(v[s]!=S[s])return!1;for(s=v.length-1;s>=0;s--)if(h=v[s],!f(t[h],e[h],r))return!1;return!0}(t,e,h))}function l(t){return null==t}function y(t){return!(!t||\"object\"!==o(t)||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}t.exports=f},function(t,e,r){\"use strict\";var o=Array.prototype.slice,n=r(5),i=Object.keys,s=i?function(t){return i(t)}:r(17),a=Object.keys;s.shim=function(){Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(o.call(t)):a(t)}):Object.keys=s;return Object.keys||s},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.toString;t.exports=function(t){var e=n.call(t),r=\"[object Arguments]\"===e;return r||(r=\"[object Array]\"!==e&&null!==t&&\"object\"===o(t)&&\"number\"==typeof t.length&&t.length>=0&&\"[object Function]\"===n.call(t.callee)),r}},function(t,e,r){\"use strict\";var o=r(1),n=r(21)(\"%Function%\"),i=n.apply,s=n.call;t.exports=function(){return o.apply(s,arguments)},t.exports.apply=function(){return o.apply(i,arguments)}},function(t,e){function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var o;o=function(){return this}();try{o=o||new Function(\"return this\")()}catch(t){\"object\"===(\"undefined\"==typeof window?\"undefined\":r(window))&&(o=window)}t.exports=o},function(t,e,r){\"use strict\";var o=function(t){return t!=t};t.exports=function(t,e){return 0===t&&0===e?1/t==1/e:t===e||!(!o(t)||!o(e))}},function(t,e,r){\"use strict\";var o=r(8);t.exports=function(){return\"function\"==typeof Object.is?Object.is:o}},function(t,e,r){\"use strict\";var o=Object,n=TypeError;t.exports=function(){if(null!=this&&this!==o(this))throw new n(\"RegExp.prototype.flags getter called on non-object\");var t=\"\";return this.global&&(t+=\"g\"),this.ignoreCase&&(t+=\"i\"),this.multiline&&(t+=\"m\"),this.dotAll&&(t+=\"s\"),this.unicode&&(t+=\"u\"),this.sticky&&(t+=\"y\"),t}},function(t,e,r){\"use strict\";var o=r(10),n=r(0).supportsDescriptors,i=Object.getOwnPropertyDescriptor,s=TypeError;t.exports=function(){if(!n)throw new s(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");if(\"gim\"===/a/gim.flags){var t=i(RegExp.prototype,\"flags\");if(t&&\"function\"==typeof t.get&&\"boolean\"==typeof/a/.dotAll)return t.get}return o}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,u=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},p=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e,r=n.call(t,\"constructor\"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||n.call(t,e)},c=function(t,e){s&&\"__proto__\"===e.name?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},f=function(t,e){if(\"__proto__\"===e){if(!n.call(t,e))return;if(a)return a(t,e).value}return t[e]};t.exports=function t(){var e,r,n,i,s,a,l=arguments[0],y=1,h=arguments.length,b=!1;for(\"boolean\"==typeof l&&(b=l,l=arguments[1]||{},y=2),(null==l||\"object\"!==o(l)&&\"function\"!=typeof l)&&(l={});yt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var u=a.pathname.split(\"/\"),f=u[u.length-1];c(f,e.removeDirectoryIndex)&&(u=u.slice(0,u.length-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(var l=0,y=i(a.searchParams.keys());lt.length)&&(e=t.length);for(var r=0,o=new Array(e);r0){var i=new n.a,s=e.data;o.forEach((function(e){var r=s.split(e),o=r.shift();i.insert(o),i.insert(e,{link:t.normalize(e)}),s=r.join(e)})),i.insert(s),r.ops=i.ops}return r}}))}},{key:\"registerTypeListener\",value:function(){var t=this;this.quill.on(\"text-change\",(function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var o=r[r.length-1];o.insert&&\"string\"==typeof o.insert&&o.insert.match(/\\s/)&&t.checkTextForUrl()}}))}},{key:\"checkTextForUrl\",value:function(){var t=this.quill.getSelection();if(t){var e=a(this.quill.getLeaf(t.index),1)[0];if(e.text&&\"a\"!==e.parent.domNode.localName){var r=e.text.match(this.options.urlRegularExpression);if(r){var o=this.quill.getIndex(e)+r.index;this.textToUrl(o,r[0])}}}}},{key:\"textToUrl\",value:function(t,e){var r=(new n.a).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:\"normalize\",value:function(t){if(this.options.normalizeRegularExpression.test(t))try{return s()(t,this.options.normalizeUrlOptions)}catch(t){console.error(t)}return t}}])&&l(e.prototype,r),o&&l(e,o),t}();window.Quill&&window.Quill.register(\"modules/magicUrl\",h)},function(t,e){function r(t,e,s){if(t==e)return t?[[0,t]]:[];(s<0||t.lengthe.length?t:e,u=t.length>e.length?e:t,p=a.indexOf(u);if(-1!=p)return s=[[1,a.substring(0,p)],[0,u],[1,a.substring(p+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1==u.length)return[[-1,t],[1,e]];var c=function(t,e){var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.length=t.length?[o,s,a,u,f]:null}var a,u,p,c,f,l=s(r,o,Math.ceil(r.length/4)),y=s(r,o,Math.ceil(r.length/2));if(!l&&!y)return null;a=y?l&&l[4].length>y[4].length?l:y:l;t.length>e.length?(u=a[0],p=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],p=a[3]);var h=a[4];return[u,p,c,f,h]}(t,e);if(c){var f=c[0],l=c[1],y=c[2],h=c[3],b=c[4],m=r(f,y),d=r(l,h);return m.concat([[0,b]],d)}return function(t,e){for(var r=t.length,n=e.length,i=Math.ceil((r+n)/2),s=i,a=2*i,u=new Array(a),p=new Array(a),c=0;cr)h+=2;else if(S>n)y+=2;else if(l){if((w=s+f-g)>=0&&w=j)return o(t,e,A,S)}}}for(var O=-d+b;O<=d-m;O+=2){for(var w=s+O,x=(j=O==-d||O!=d&&p[w-1]r)m+=2;else if(x>n)b+=2;else if(!l){if((v=s+f-O)>=0&&v=(j=r-j))return o(t,e,A,S)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-u),e=e.substring(0,e.length-u));return p&&f.unshift([0,p]),c&&f.push([0,c]),function t(e){e.push([0,\"\"]);var r,o=0,s=0,a=0,u=\"\",p=\"\";for(;o1?(0!==s&&0!==a&&(0!==(r=n(p,u))&&(o-s-a>0&&0==e[o-s-a-1][0]?e[o-s-a-1][1]+=p.substring(0,r):(e.splice(0,0,[0,p.substring(0,r)]),o++),p=p.substring(r),u=u.substring(r)),0!==(r=i(p,u))&&(e[o][1]=p.substring(p.length-r)+e[o][1],p=p.substring(0,p.length-r),u=u.substring(0,u.length-r))),0===s?e.splice(o-a,s+a,[1,p]):0===a?e.splice(o-s,s+a,[-1,u]):e.splice(o-s-a,s+a,[-1,u],[1,p]),o=o-s-a+(s?1:0)+(a?1:0)+1):0!==o&&0==e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,a=0,s=0,u=\"\",p=\"\"}\"\"===e[e.length-1][1]&&e.pop();var c=!1;o=1;for(;o0&&o.splice(n+2,0,[s[0],u]),a(o,n,3)}return t}(f,s)),f=function(t){for(var e=!1,r=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},o=2;o=55296&&n.charCodeAt(n.length-1)<=56319)&&-1===t[o-1][0]&&r(t[o-1][1])&&1===t[o][0]&&r(t[o][1])&&(e=!0,t[o-1][1]=t[o-2][1].slice(-1)+t[o-1][1],t[o][1]=t[o-2][1].slice(-1)+t[o][1],t[o-2][1]=t[o-2][1].slice(0,-1));var n;if(!e)return t;var i=[];for(o=0;o0&&i.push(t[o]);return i}(f)}function o(t,e,o,n){var i=t.substring(0,o),s=e.substring(0,n),a=t.substring(o),u=e.substring(n),p=r(i,s),c=r(a,u);return p.concat(c)}function n(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,o=Math.min(t.length,e.length),n=o,i=0;r=0&&o>=e-1;o--)if(o+10&&!i.call(t,0))for(var m=0;m0)for(var d=0;d=0&&\"[object Array]\"!==i.call(t)&&\"[object Function]\"===i.call(t.callee)},u=function(){return s(arguments)}();s.isLegacyArguments=a,t.exports=u?s:a},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(8),s=r(9),a=r(24),u=n(s(),Object);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=\"Function.prototype.bind called on incompatible \",n=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if(\"function\"!=typeof e||\"[object Function]\"!==i.call(e))throw new TypeError(o+e);for(var r,s=n.call(arguments,1),a=function(){if(this instanceof r){var o=e.apply(this,s.concat(n.call(arguments)));return Object(o)===o?o:this}return e.apply(t,s.concat(n.call(arguments)))},u=Math.max(0,e.length-s.length),p=[],c=0;c1&&\"boolean\"!=typeof e)throw new TypeError('\"allowMissing\" argument must be a boolean');for(var r=m(t),o=d(\"%\"+(r.length>0?r[0]:\"\")+\"%\",e),s=1;s=r.length){var a=i(o,r[s]);if(!e&&!(r[s]in o))throw new n(\"base intrinsic for \"+t+\" exists, but the property is not available.\");o=a?a.get||a.value:o[r[s]]}else o=o[r[s]];return o}},function(t,e,r){\"use strict\";(function(e){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=e.Symbol,i=r(23);t.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"===o(n(\"foo\"))&&(\"symbol\"===o(Symbol(\"bar\"))&&i())))}}).call(this,r(7))},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"===o(Symbol.iterator))return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){\"use strict\";var o=r(9),n=r(0);t.exports=function(){var t=o();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(26),i=RegExp.prototype.exec,s=Object.getOwnPropertyDescriptor,a=Object.prototype.toString,u=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){if(!t||\"object\"!==o(t))return!1;if(!u)return\"[object RegExp]\"===a.call(t);var e=s(t,\"lastIndex\");return!(!e||!n(e,\"value\"))&&function(t){try{var e=t.lastIndex;return t.lastIndex=0,i.call(t),!0}catch(t){return!1}finally{t.lastIndex=e}}(t)}},function(t,e,r){\"use strict\";var o=r(1);t.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},function(t,e,r){\"use strict\";var o=r(0),n=r(6),i=r(10),s=r(11),a=r(28),u=n(i);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){\"use strict\";var o=r(0).supportsDescriptors,n=r(11),i=Object.getOwnPropertyDescriptor,s=Object.defineProperty,a=TypeError,u=Object.getPrototypeOf,p=/a/;t.exports=function(){if(!o||!u)throw new a(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");var t=n(),e=u(p),r=i(e,\"flags\");return r&&r.get===t||s(e,\"flags\",{configurable:!0,enumerable:!1,get:t}),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=Date.prototype.getDay,i=Object.prototype.toString,s=\"function\"==typeof Symbol&&\"symbol\"===o(Symbol.toStringTag);t.exports=function(t){return\"object\"===o(t)&&null!==t&&(s?function(t){try{return n.call(t),!0}catch(t){return!1}}(t):\"[object Date]\"===i.call(t))}},function(t,e,r){function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(3),i=r(12),s={attributes:{compose:function(t,e,r){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var n=i(!0,{},e);for(var s in r||(n=Object.keys(n).reduce((function(t,e){return null!=n[e]&&(t[e]=n[e]),t}),{})),t)void 0!==t[s]&&void 0===e[s]&&(n[s]=t[s]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){\"object\"!==o(t)&&(t={}),\"object\"!==o(e)&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce((function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r}),{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if(\"object\"!==o(t))return e;if(\"object\"===o(e)){if(!r)return e;var n=Object.keys(e).reduce((function(r,o){return void 0===t[o]&&(r[o]=e[o]),r}),{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new a(t)},length:function(t){return\"number\"==typeof t.delete?t.delete:\"number\"==typeof t.retain?t.retain:\"string\"==typeof t.insert?t.insert.length:1}};function a(t){this.ops=t,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,o=s.length(e);if(t>=o-r?(t=o-r,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var n={};return e.attributes&&(n.attributes=e.attributes),\"number\"==typeof e.retain?n.retain=t:\"string\"==typeof e.insert?n.insert=e.insert.substr(r,t):n.insert=e.insert,n}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?s.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,r=this.next(),o=this.ops.slice(this.index);return this.offset=t,this.index=e,[r].concat(o)}return[]},t.exports=s},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=r(32),i=r(34);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=S,e.resolve=function(t,e){return S(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?S(t,!1,!0).resolveObject(e):e},e.format=function(t){i.isString(t)&&(t=S(t));return t instanceof s?t.format():s.prototype.format.call(t)},e.Url=s;var a=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,p=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,c=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),f=[\"'\"].concat(c),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(f),y=[\"/\",\"?\",\"#\"],h=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,\"javascript:\":!0},d={javascript:!0,\"javascript:\":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},v=r(35);function S(t,e,r){if(t&&i.isObject(t)&&t instanceof s)return t;var o=new s;return o.parse(t,e,r),o}s.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError(\"Parameter 'url' must be a string, not \"+o(t));var s=t.indexOf(\"?\"),u=-1!==s&&s127?F+=\"x\":F+=C[D];if(!F.match(h)){var N=R.slice(0,I),$=R.slice(I+1),L=C.match(b);L&&(N.push(L[1]),$.unshift(L[2])),$.length&&(S=\"/\"+$.join(\".\")+S),this.hostname=N.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),U||(this.hostname=n.toASCII(this.hostname));var _=this.port?\":\"+this.port:\"\",q=this.hostname||\"\";this.host=q+_,this.href+=this.host,U&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==S[0]&&(S=\"/\"+S))}if(!m[w])for(I=0,T=f.length;I0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift());return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!w.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var A=w.slice(-1)[0],P=(r.host||t.host||w.length>1)&&(\".\"===A||\"..\"===A)||\"\"===A,E=0,I=w.length;I>=0;I--)\".\"===(A=w[I])?w.splice(I,1):\"..\"===A?(w.splice(I,1),E++):E&&(w.splice(I,1),E--);if(!j&&!O)for(;E--;E)w.unshift(\"..\");!j||\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0)||w.unshift(\"\"),P&&\"/\"!==w.join(\"/\").substr(-1)&&w.push(\"\");var k,U=\"\"===w[0]||w[0]&&\"/\"===w[0].charAt(0);x&&(r.hostname=r.host=U?\"\":w.length?w.shift():\"\",(k=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift()));return(j=j||r.host&&w.length)&&!U&&w.unshift(\"\"),w.length?r.pathname=w.join(\"/\"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},s.prototype.parseHost=function(){var t=this.host,e=u.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){(function(t,o){var n;function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}\n/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){var a=\"object\"==i(e)&&e&&!e.nodeType&&e,u=\"object\"==i(t)&&t&&!t.nodeType&&t,p=\"object\"==(void 0===o?\"undefined\":i(o))&&o;p.global!==p&&p.window!==p&&p.self!==p||(s=p);var c,f,l=2147483647,y=/^xn--/,h=/[^\\x20-\\x7E]/,b=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,m={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,g=String.fromCharCode;function v(t){throw new RangeError(m[t])}function S(t,e){for(var r=t.length,o=[];r--;)o[r]=e(t[r]);return o}function j(t,e){var r=t.split(\"@\"),o=\"\";return r.length>1&&(o=r[0]+\"@\",t=r[1]),o+S((t=t.replace(b,\".\")).split(\".\"),e).join(\".\")}function O(t){for(var e,r,o=[],n=0,i=t.length;n=55296&&e<=56319&&n65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join(\"\")}function x(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var o=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;o+=36)t=d(t/35);return d(o+36*t/(t+38))}function P(t){var e,r,o,n,i,s,a,u,p,c,f,y=[],h=t.length,b=0,m=128,g=72;for((r=t.lastIndexOf(\"-\"))<0&&(r=0),o=0;o=128&&v(\"not-basic\"),y.push(t.charCodeAt(o));for(n=r>0?r+1:0;n=h&&v(\"invalid-input\"),((u=(f=t.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:36)>=36||u>d((l-b)/s))&&v(\"overflow\"),b+=u*s,!(u<(p=a<=g?1:a>=g+26?26:a-g));a+=36)s>d(l/(c=36-p))&&v(\"overflow\"),s*=c;g=A(b-i,e=y.length+1,0==i),d(b/e)>l-m&&v(\"overflow\"),m+=d(b/e),b%=e,y.splice(b++,0,m)}return w(y)}function E(t){var e,r,o,n,i,s,a,u,p,c,f,y,h,b,m,S=[];for(y=(t=O(t)).length,e=128,r=0,i=72,s=0;s=e&&fd((l-r)/(h=o+1))&&v(\"overflow\"),r+=(a-e)*h,e=a,s=0;sl&&v(\"overflow\"),f==e){for(u=r,p=36;!(u<(c=p<=i?1:p>=i+26?26:p-i));p+=36)m=u-c,b=36-c,S.push(g(x(c+m%b,0))),u=d(m/b);S.push(g(x(u,0))),i=A(r,h,o==n),r=0,++o}++r,++e}return S.join(\"\")}if(c={version:\"1.4.1\",ucs2:{decode:O,encode:w},decode:P,encode:E,toASCII:function(t){return j(t,(function(t){return h.test(t)?\"xn--\"+E(t):t}))},toUnicode:function(t){return j(t,(function(t){return y.test(t)?P(t.slice(4).toLowerCase()):t}))}},\"object\"==i(r(13))&&r(13))void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n);else if(a&&u)if(t.exports==a)u.exports=c;else for(f in c)c.hasOwnProperty(f)&&(a[f]=c[f]);else s.punycode=c}(this)}).call(this,r(33)(t),r(7))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}t.exports={isString:function(t){return\"string\"==typeof t},isObject:function(t){return\"object\"===o(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,r){\"use strict\";e.decode=e.parse=r(36),e.encode=e.stringify=r(37)},function(t,e,r){\"use strict\";function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||\"&\",r=r||\"=\";var s={};if(\"string\"!=typeof t||0===t.length)return s;var a=/\\+/g;t=t.split(e);var u=1e3;i&&\"number\"==typeof i.maxKeys&&(u=i.maxKeys);var p=t.length;u>0&&p>u&&(p=u);for(var c=0;c=0?(f=b.substr(0,m),l=b.substr(m+1)):(f=b,l=\"\"),y=decodeURIComponent(f),h=decodeURIComponent(l),o(s,y)?n(s[y])?s[y].push(h):s[y]=[s[y],h]:s[y]=h}return s};var n=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}},function(t,e,r){\"use strict\";function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var n=function(t){switch(o(t)){case\"string\":return t;case\"boolean\":return t?\"true\":\"false\";case\"number\":return isFinite(t)?t:\"\";default:return\"\"}};t.exports=function(t,e,r,u){return e=e||\"&\",r=r||\"=\",null===t&&(t=void 0),\"object\"===o(t)?s(a(t),(function(o){var a=encodeURIComponent(n(o))+r;return i(t[o])?s(t[o],(function(t){return a+encodeURIComponent(n(t))})).join(e):a+encodeURIComponent(n(t[o]))})).join(e):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(t)):\"\"};var i=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function s(t,e){if(t.map)return t.map(e);for(var r=[],o=0;o\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set} set\n * @return {Array}\n */\nexport const toArray = set => Array.from(set)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {Array} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array}\n */\nexport const create = () => /** @type {Array} */ ([])\n\n/**\n * @template D\n * @param {Array} a\n * @return {Array}\n */\nexport const copy = a => /** @type {Array} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array} dest\n * @param {Array} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike|Iterable} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n *\n * @param {Array} arr\n * @param {function(ITEM, number, Array):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => arr.every(f)\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @param {Array} arr\n * @param {function(S, number, Array):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => arr.some(f)\n\n/**\n * @template ELEM\n *\n * @param {Array} a\n * @param {Array} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n *\n * @template N\n */\nexport class Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map}\n */\n this._observers = map.create()\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, name, set.create).add(f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, f)\n f(...args)\n }\n this.on(name, _f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n","/**\n * Isomorphic library exports from isomorphic.js.\n *\n * @module isomorphic\n */\n\n// @ts-ignore\nimport iso from 'isomorphic.js'\n\nexport const performance = /** @type {any} */ (iso.performance)\nexport const cryptoRandomBuffer = /** @type {any} */ (iso.cryptoRandomBuffer)\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* istanbul ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object} obj\n */\nexport const keys = Object.keys\n\n/**\n * @param {Object} obj\n * @param {function(any,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @template R\n * @param {Object} obj\n * @param {function(any,string):R} f\n * @return {Array}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @param {Object} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object} a\n * @param {Object} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array} fs\n * @param {Array} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array|object} a\n * @param {Array|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((a instanceof Array && array.equalFlat(a, /** @type {Array} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array>} arr\n * @param {function(L, R):X} f\n * @return {Array}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* istanbul ignore next */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const createTextNode = text => doc.createTextNode(text)\n\n/* istanbul ignore next */\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\n/* istanbul ignore next */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array|HTMLCollection} children\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array} nodes\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\n/* istanbul ignore next */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array|pair.Pair>} attrs Array of key-value pairs\n * @param {Array} children\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\n/* istanbul ignore next */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair} pair\n */\n/* istanbul ignore next */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array>} pairs\n * @return {string}\n */\n/* istanbul ignore next */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map} m\n * @return {string}\n */\n/* istanbul ignore next */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\n/* istanbul ignore next */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf}\n */\n/* istanbul ignore next */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nconst _parse = html => domParser.parseFromString(`${html}`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\n/* istanbul ignore next */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* istanbul ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/* istanbul ignore next */\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* istanbul ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/* istanbul ignore next */\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* istanbul ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as symbol from './symbol.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as time from './time.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/**\n * @type {Object>}\n */\nconst _browserStyleMap = {\n [BOLD]: pair.create('font-weight', 'bold'),\n [UNBOLD]: pair.create('font-weight', 'normal'),\n [BLUE]: pair.create('color', 'blue'),\n [GREEN]: pair.create('color', 'green'),\n [GREY]: pair.create('color', 'grey'),\n [RED]: pair.create('color', 'red'),\n [PURPLE]: pair.create('color', 'purple'),\n [ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [UNCOLOR]: pair.create('color', 'black')\n}\n\nconst _nodeStyleMap = {\n [BOLD]: '\\u001b[1m',\n [UNBOLD]: '\\u001b[2m',\n [BLUE]: '\\x1b[34m',\n [GREEN]: '\\x1b[32m',\n [GREY]: '\\u001b[37m',\n [RED]: '\\x1b[31m',\n [PURPLE]: '\\x1b[35m',\n [ORANGE]: '\\x1b[38;5;208m',\n [UNCOLOR]: '\\x1b[0m'\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeBrowserLoggingArgs = args => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst computeNodeLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n /* istanbul ignore else */\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/* istanbul ignore next */\nconst computeLoggingArgs = env.isNode ? computeNodeLoggingArgs : computeBrowserLoggingArgs\n\n/**\n * @param {Array} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(ORANGE)\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Error} err\n */\nexport const printError = err => {\n console.error(err)\n vconsoles.forEach(vc => vc.printError(err))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log('%c ', `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`)\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach(vc => vc.printImg(url, height))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} base64\n * @param {number} height\n */\nexport const printImgBase64 = (base64, height) => printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.group(args))\n}\n\n/**\n * @param {Array} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupEnd())\n}\n\n/* istanbul ignore next */\n/**\n * @param {function():Node} createNode\n */\nexport const printDom = createNode =>\n vconsoles.forEach(vc => vc.printDom(createNode()))\n\n/* istanbul ignore next */\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\nexport const printCanvas = (canvas, height) => printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = new Set()\n\n/* istanbul ignore next */\n/**\n * @param {Array} args\n * @return {Array}\n */\nconst _computeLineSpans = args => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [pair.create('style', dom.mapToStyleString(currentStyle))], [dom.text(arg)])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(dom.element('span', [], [dom.text(/** @type {string} */ (content))]))\n }\n }\n return spans\n}\n\nconst lineStyle = 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* istanbul ignore next */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [pair.create('hidden', collapsed), pair.create('style', 'color:grey;font-size:120%;')], [dom.text('▼')])\n const triangleRight = dom.element('span', [pair.create('hidden', !collapsed), pair.create('style', 'color:grey;font-size:125%;')], [dom.text('▶')])\n const content = dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], [triangleDown, triangleRight, dom.text(' ')].concat(_computeLineSpans(args)))\n const nextContainer = dom.element('div', [pair.create('hidden', collapsed)])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', event => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], _computeLineSpans(args))])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([RED, BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('img', [pair.create('src', url), pair.create('height', `${math.round(height * 1.5)}px`)])])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n\n/* istanbul ignore next */\n/**\n * @param {Element} dom\n */\nexport const createVConsole = dom => new VConsole(dom)\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/**\n * @param {string} moduleName\n * @return {function(...any)}\n */\nexport const createModuleLogger = moduleName => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null && (debugRegexVar === '*' || debugRegexVar === 'true' || new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n\n return !doLogging ? func.nop : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n print(color, moduleName, UNCOLOR, ...args.map(arg => (typeof arg === 'string' || typeof arg === 'symbol') ? arg : JSON.stringify(arg)), color, ' +' + timeDiff + 'ms')\n }\n}\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator} iterator\n * @param {function(T):R} f\n * @return {IterableIterator}\n */\nexport const mapIterator = (iterator, f) => ({\n /**\n * @param {function(T):R} f\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult} next\n * @return {IterableIterator}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","import { Observable } from 'lib0/observable.js';\nimport { appendTo, last } from 'lib0/array.js';\nimport { floor, min, max, abs } from 'lib0/math.js';\nimport { setIfUndefined, any, create as create$2, copy } from 'lib0/map.js';\nimport { writeVarUint, Encoder, toUint8Array, IntDiffOptRleEncoder, UintOptRleEncoder, RleEncoder, writeUint8, StringEncoder, createEncoder, writeVarUint8Array, writeUint8Array, writeAny, writeVarString } from 'lib0/encoding.js';\nimport { readVarUint, createDecoder, readUint8, IntDiffOptRleDecoder, readVarUint8Array, UintOptRleDecoder, RleDecoder, StringDecoder, readAny, readVarString } from 'lib0/decoding.js';\nimport { uint32 } from 'lib0/random.js';\nimport { copyUint8Array } from 'lib0/buffer.js';\nimport { unexpectedCase, methodUnimplemented, create as create$1 } from 'lib0/error.js';\nimport { BITS5, BIT8, BIT7, BIT6, BIT2, BIT4, BIT1, BIT3 } from 'lib0/binary.js';\nimport { callAll } from 'lib0/function.js';\nimport { create } from 'lib0/set.js';\nimport { print, ORANGE, BOLD, UNBOLD, RED } from 'lib0/logging.js';\nimport { getUnixTime } from 'lib0/time.js';\nimport { iteratorFilter, iteratorMap } from 'lib0/iterator.js';\nimport { equalFlat } from 'lib0/object.js';\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {Observable}\n */\nclass AbstractConnector extends Observable {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super();\n this.doc = ydoc;\n this.awareness = awareness;\n }\n}\n\nclass DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock;\n /**\n * @type {number}\n */\n this.len = len;\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nclass DeleteSet {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(clientid));\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i];\n iterateStructs(transaction, structs, del.clock, del.len, f);\n }\n });\n\n/**\n * @param {Array} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nconst findIndexDS = (dis, clock) => {\n let left = 0;\n let right = dis.length - 1;\n while (left <= right) {\n const midindex = floor((left + right) / 2);\n const mid = dis[midindex];\n const midclock = mid.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client);\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n};\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock);\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j;\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1];\n const right = dels[i];\n if (left.clock + left.len === right.clock) {\n left.len += right.len;\n } else {\n if (j < i) {\n dels[j] = right;\n }\n j++;\n }\n }\n dels.length = j;\n });\n};\n\n/**\n * @param {Array} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nconst mergeDeleteSets = dss => {\n const merged = new DeleteSet();\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array}\n */\n const dels = delsLeft.slice();\n for (let i = dssI + 1; i < dss.length; i++) {\n appendTo(dels, dss[i].clients.get(client) || []);\n }\n merged.clients.set(client, dels);\n }\n });\n }\n sortAndMergeDeleteSet(merged);\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nconst addToDeleteSet = (ds, client, clock, length) => {\n setIfUndefined(ds.clients, client, () => []).push(new DeleteItem(clock, length));\n};\n\nconst createDeleteSet = () => new DeleteSet();\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nconst createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet();\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array}\n */\n const dsitems = [];\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i];\n if (struct.deleted) {\n const clock = struct.id.clock;\n let len = struct.length;\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.id.clock === clock + len && next.deleted; next = structs[++i + 1]) {\n len += next.length;\n }\n }\n dsitems.push(new DeleteItem(clock, len));\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems);\n }\n });\n return ds\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst writeDeleteSet = (encoder, ds) => {\n writeVarUint(encoder.restEncoder, ds.clients.size);\n ds.clients.forEach((dsitems, client) => {\n encoder.resetDsCurVal();\n writeVarUint(encoder.restEncoder, client);\n const len = dsitems.length;\n writeVarUint(encoder.restEncoder, len);\n for (let i = 0; i < len; i++) {\n const item = dsitems[i];\n encoder.writeDsClock(item.clock);\n encoder.writeDsLen(item.len);\n }\n });\n};\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nconst readDeleteSet = decoder => {\n const ds = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n if (numberOfDeletes > 0) {\n const dsField = setIfUndefined(ds.clients, client, () => []);\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));\n }\n }\n }\n return ds\n};\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {AbstractDSDecoder} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet();\n const numClients = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = readVarUint(decoder.restDecoder);\n const numberOfDeletes = readVarUint(decoder.restDecoder);\n const structs = store.clients.get(client) || [];\n const state = getState(store, client);\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock();\n const clockEnd = clock + decoder.readDsLen();\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state);\n }\n let index = findIndexSS(structs, clock);\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index];\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n index++; // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++];\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock));\n }\n struct.delete(transaction);\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock);\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n // TODO: no need for encoding+decoding ds anymore\n const unappliedDSEncoder = new DSEncoderV2();\n writeDeleteSet(unappliedDSEncoder, unappliedDS);\n store.pendingDeleteReaders.push(new DSDecoderV2(createDecoder((unappliedDSEncoder.toUint8Array()))));\n }\n};\n\n/**\n * @module Y\n */\n\nconst generateNewClientId = uint32;\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends Observable\n */\nclass Doc extends Observable {\n /**\n * @param {Object} conf configuration\n * @param {boolean} [conf.gc] Disable garbage collection (default: gc=true)\n * @param {function(Item):boolean} [conf.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n */\n constructor ({ gc = true, gcFilter = () => true } = {}) {\n super();\n this.gc = gc;\n this.gcFilter = gcFilter;\n this.clientID = generateNewClientId();\n /**\n * @type {Map>}\n */\n this.share = new Map();\n this.store = new StructStore();\n /**\n * @type {Transaction | null}\n */\n this._transaction = null;\n /**\n * @type {Array}\n */\n this._transactionCleanups = [];\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @param {function(Transaction):void} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n *\n * @public\n */\n transact (f, origin = null) {\n transact(this, f, origin);\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `y.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `y.define(name, Y.Array) === y.define(name, Y.Array)`\n *\n * After this method is called, the type is also available on `y.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Yjs instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @example\n * const y = new Y(..)\n * const appState = {\n * document: y.getText('document')\n * comments: y.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Function} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {AbstractType} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = AbstractType) {\n const type = setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor();\n t._integrate(this, null);\n return t\n });\n const Constr = type.constructor;\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor();\n t._map = type._map;\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t;\n }\n });\n t._start = type._start;\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t;\n }\n t._length = type._length;\n this.share.set(name, t);\n t._integrate(this, null);\n return t\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return type\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray}\n *\n * @public\n */\n getArray (name = '') {\n // @ts-ignore\n return this.get(name, YArray)\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n // @ts-ignore\n return this.get(name, YText)\n }\n\n /**\n * @param {string} [name]\n * @return {YMap}\n *\n * @public\n */\n getMap (name = '') {\n // @ts-ignore\n return this.get(name, YMap)\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n // @ts-ignore\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const doc = {};\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON();\n });\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n this.emit('destroyed', [true]);\n super.destroy();\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n on (eventName, f) {\n super.on(eventName, f);\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n off (eventName, f) {\n super.off(eventName, f);\n }\n}\n\nclass DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return readVarUint(this.restDecoder)\n }\n}\n\nclass UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return copyUint8Array(readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return readVarString(this.restDecoder)\n }\n}\n\nclass DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.dsCurrVal = 0;\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n readDsClock () {\n this.dsCurrVal += readVarUint(this.restDecoder);\n return this.dsCurrVal\n }\n\n readDsLen () {\n const diff = readVarUint(this.restDecoder) + 1;\n this.dsCurrVal += diff;\n return diff\n }\n}\n\nclass UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder);\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array}\n */\n this.keys = [];\n readUint8(decoder); // read feature flag - currently unused\n this.keyClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.clientDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.leftClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.rightClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder));\n this.infoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.stringDecoder = new StringDecoder(readVarUint8Array(decoder));\n this.parentInfoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8);\n this.typeRefDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n this.lenDecoder = new UintOptRleDecoder(readVarUint8Array(decoder));\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read();\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read();\n this.keys.push(key);\n return key\n }\n }\n}\n\nclass DSEncoderV1 {\n constructor () {\n this.restEncoder = new Encoder();\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n writeVarUint(this.restEncoder, clock);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n}\n\nclass UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n writeVarUint(this.restEncoder, id.client);\n writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n writeVarUint(this.restEncoder, client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n writeUint8(this.restEncoder, info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n writeVarString(this.restEncoder, s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n writeVarUint(this.restEncoder, isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n writeVarUint(this.restEncoder, info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n writeVarUint(this.restEncoder, len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n writeVarString(this.restEncoder, JSON.stringify(embed));\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n writeVarString(this.restEncoder, key);\n }\n}\n\nclass DSEncoderV2 {\n constructor () {\n this.restEncoder = new Encoder(); // encodes all the rest / non-optimized\n this.dsCurrVal = 0;\n }\n\n toUint8Array () {\n return toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal;\n this.dsCurrVal = clock;\n writeVarUint(this.restEncoder, diff);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n unexpectedCase();\n }\n writeVarUint(this.restEncoder, len - 1);\n this.dsCurrVal += len;\n }\n}\n\nclass UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super();\n /**\n * @type {Map}\n */\n this.keyMap = new Map();\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0;\n this.keyClockEncoder = new IntDiffOptRleEncoder();\n this.clientEncoder = new UintOptRleEncoder();\n this.leftClockEncoder = new IntDiffOptRleEncoder();\n this.rightClockEncoder = new IntDiffOptRleEncoder();\n this.infoEncoder = new RleEncoder(writeUint8);\n this.stringEncoder = new StringEncoder();\n this.parentInfoEncoder = new RleEncoder(writeUint8);\n this.typeRefEncoder = new UintOptRleEncoder();\n this.lenEncoder = new UintOptRleEncoder();\n }\n\n toUint8Array () {\n const encoder = createEncoder();\n writeUint8(encoder, 0); // this is a feature flag that we might use in the future\n writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.clientEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.infoEncoder));\n writeVarUint8Array(encoder, this.stringEncoder.toUint8Array());\n writeVarUint8Array(encoder, toUint8Array(this.parentInfoEncoder));\n writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array());\n writeVarUint8Array(encoder, this.lenEncoder.toUint8Array());\n // @note The rest encoder is appended! (note the missing var)\n writeUint8Array(encoder, toUint8Array(this.restEncoder));\n return toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client);\n this.leftClockEncoder.write(id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client);\n this.rightClockEncoder.write(id.clock);\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n writeAny(this.restEncoder, embed);\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key);\n if (clock === undefined) {\n this.keyClockEncoder.write(this.keyClock++);\n this.stringEncoder.write(key);\n } else {\n this.keyClockEncoder.write(this.keyClock++);\n }\n }\n}\n\nlet DefaultDSEncoder = DSEncoderV1;\nlet DefaultDSDecoder = DSDecoderV1;\nlet DefaultUpdateEncoder = UpdateEncoderV1;\nlet DefaultUpdateDecoder = UpdateDecoderV1;\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Array} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n const startNewStructs = findIndexSS(structs, clock);\n // write # encoded structs\n writeVarUint(encoder.restEncoder, structs.length - startNewStructs);\n encoder.writeClient(client);\n writeVarUint(encoder.restEncoder, clock);\n const firstStruct = structs[startNewStructs];\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock);\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {StructStore} store\n * @param {Map} _sm\n *\n * @private\n * @function\n */\nconst writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map();\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock);\n }\n });\n getStateVector(store).forEach((clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0);\n }\n });\n // write # states that were updated\n writeVarUint(encoder.restEncoder, sm.size);\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n Array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n // @ts-ignore\n writeStructs(encoder, store.clients.get(client), client, clock);\n });\n};\n\n/**\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Map>} clientRefs\n * @param {Doc} doc\n * @return {Map>}\n *\n * @private\n * @function\n */\nconst readClientsStructRefs = (decoder, clientRefs, doc) => {\n const numOfStateUpdates = readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = readVarUint(decoder.restDecoder);\n /**\n * @type {Array}\n */\n const refs = new Array(numberOfStructs);\n const client = decoder.readClient();\n let clock = readVarUint(decoder.restDecoder);\n // const start = performance.now()\n clientRefs.set(client, refs);\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n if ((BITS5 & info) !== 0) {\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (BIT7 | BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n (info & BIT8) === BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & BIT7) === BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & BIT6) === BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct;\n clock += struct.length;\n } else {\n const len = decoder.readLen();\n refs[i] = new GC(createID(client, clock), len);\n clock += len;\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n};\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst resumeStructIntegration = (transaction, store) => {\n const stack = store.pendingStack; // @todo don't forget to append stackhead at the end\n const clientsStructRefs = store.pendingClientsStructRefs;\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n const clientsStructRefsIds = Array.from(clientsStructRefs.keys()).sort((a, b) => a - b);\n if (clientsStructRefsIds.length === 0) {\n return\n }\n const getNextStructTarget = () => {\n let nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop();\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n } else {\n store.pendingClientsStructRefs.clear();\n return null\n }\n }\n return nextStructsTarget\n };\n let curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null && stack.length === 0) {\n return\n }\n /**\n * @type {GC|Item}\n */\n let stackHead = stack.length > 0\n ? /** @type {GC|Item} */ (stack.pop())\n : /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++];\n // caching the state because it is used very often\n const state = new Map();\n // iterate over all struct readers until we are done\n while (true) {\n const localClock = setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client));\n const offset = stackHead.id.clock < localClock ? localClock - stackHead.id.clock : 0;\n if (stackHead.id.clock + offset !== localClock) {\n // A previous message from this client is missing\n // check if there is a pending structRef with a smaller clock and switch them\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(stackHead.id.client) || { refs: [], i: 0 };\n if (structRefs.refs.length !== structRefs.i) {\n const r = structRefs.refs[structRefs.i];\n if (r.id.clock < stackHead.id.clock) {\n // put ref with smaller clock on stack instead and continue\n structRefs.refs[structRefs.i] = stackHead;\n stackHead = r;\n // sort the set because this approach might bring the list out of order\n structRefs.refs = structRefs.refs.slice(structRefs.i).sort((r1, r2) => r1.id.clock - r2.id.clock);\n structRefs.i = 0;\n continue\n }\n }\n // wait until missing struct is available\n stack.push(stackHead);\n return\n }\n const missing = stackHead.getMissing(transaction, store);\n if (missing === null) {\n if (offset === 0 || offset < stackHead.length) {\n stackHead.integrate(transaction, offset);\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length);\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop());\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n } else {\n curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n }\n }\n } else {\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(missing) || { refs: [], i: 0 };\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message.\n stack.push(stackHead);\n return\n }\n stack.push(stackHead);\n stackHead = structRefs.refs[structRefs.i++];\n }\n }\n store.pendingClientsStructRefs.clear();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst tryResumePendingDeleteReaders = (transaction, store) => {\n const pendingReaders = store.pendingDeleteReaders;\n store.pendingDeleteReaders = [];\n for (let i = 0; i < pendingReaders.length; i++) {\n readAndApplyDeleteSet(pendingReaders[i], transaction, store);\n }\n};\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nconst writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState);\n\n/**\n * @param {StructStore} store\n * @param {Map>} clientsStructsRefs\n *\n * @private\n * @function\n */\nconst mergeReadStructsIntoPendingReads = (store, clientsStructsRefs) => {\n const pendingClientsStructRefs = store.pendingClientsStructRefs;\n clientsStructsRefs.forEach((structRefs, client) => {\n const pendingStructRefs = pendingClientsStructRefs.get(client);\n if (pendingStructRefs === undefined) {\n pendingClientsStructRefs.set(client, { refs: structRefs, i: 0 });\n } else {\n // merge into existing structRefs\n const merged = pendingStructRefs.i > 0 ? pendingStructRefs.refs.slice(pendingStructRefs.i) : pendingStructRefs.refs;\n for (let i = 0; i < structRefs.length; i++) {\n merged.push(structRefs[i]);\n }\n pendingStructRefs.i = 0;\n pendingStructRefs.refs = merged.sort((r1, r2) => r1.id.clock - r2.id.clock);\n }\n });\n};\n\n/**\n * @param {Map,i:number}>} pendingClientsStructRefs\n */\nconst cleanupPendingStructs = pendingClientsStructRefs => {\n // cleanup pendingClientsStructs if not fully finished\n pendingClientsStructRefs.forEach((refs, client) => {\n if (refs.i === refs.refs.length) {\n pendingClientsStructRefs.delete(client);\n } else {\n refs.refs.splice(0, refs.i);\n refs.i = 0;\n }\n });\n};\n\n/**\n * Read the next Item in a Decoder and fill this Item with the read data.\n *\n * This is called when data is received from a remote peer.\n *\n * @param {AbstractUpdateDecoder} decoder The decoder object to read data from.\n * @param {Transaction} transaction\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nconst readStructs = (decoder, transaction, store) => {\n const clientsStructRefs = new Map();\n // let start = performance.now()\n readClientsStructRefs(decoder, clientsStructRefs, transaction.doc);\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n mergeReadStructsIntoPendingReads(store, clientsStructRefs);\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n resumeStructIntegration(transaction, store);\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n cleanupPendingStructs(store.pendingClientsStructRefs);\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n tryResumePendingDeleteReaders(transaction, store);\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n};\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {AbstractUpdateDecoder} [structDecoder]\n *\n * @function\n */\nconst readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n readStructs(structDecoder, transaction, ydoc.store);\n readAndApplyDeleteSet(structDecoder, transaction, ydoc.store);\n }, transactionOrigin, false);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new DefaultUpdateDecoder(decoder));\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nconst applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = createDecoder(update);\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder));\n};\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, DefaultUpdateDecoder);\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {AbstractUpdateEncoder} encoder\n * @param {Doc} doc\n * @param {Map} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nconst writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector);\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store));\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {AbstractUpdateEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdateV2 = (doc, encodedTargetStateVector, encoder = new UpdateEncoderV2()) => {\n const targetStateVector = encodedTargetStateVector == null ? new Map() : decodeStateVector(encodedTargetStateVector);\n writeStateAsUpdate(encoder, doc, targetStateVector);\n return encoder.toUint8Array()\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new DefaultUpdateEncoder());\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {AbstractDSDecoder} decoder\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst readStateVector = decoder => {\n const ss = new Map();\n const ssLength = readVarUint(decoder.restDecoder);\n for (let i = 0; i < ssLength; i++) {\n const client = readVarUint(decoder.restDecoder);\n const clock = readVarUint(decoder.restDecoder);\n ss.set(client, clock);\n }\n return ss\n};\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(createDecoder(decodedState)));\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVector = decodedState => readStateVector(new DefaultDSDecoder(createDecoder(decodedState)));\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Map} sv\n * @function\n */\nconst writeStateVector = (encoder, sv) => {\n writeVarUint(encoder.restEncoder, sv.size);\n sv.forEach((clock, client) => {\n writeVarUint(encoder.restEncoder, client); // @todo use a special client decoder that is based on mapping\n writeVarUint(encoder.restEncoder, clock);\n });\n return encoder\n};\n\n/**\n * @param {AbstractDSEncoder} encoder\n * @param {Doc} doc\n *\n * @function\n */\nconst writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store));\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n writeDocumentStateVector(encoder, doc);\n return encoder.toUint8Array()\n};\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc} doc\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVector = doc => encodeStateVectorV2(doc, new DefaultDSEncoder());\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nclass EventHandler {\n constructor () {\n /**\n * @type {Array}\n */\n this.l = [];\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler}\n *\n * @private\n * @function\n */\nconst createEventHandler = () => new EventHandler();\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nconst addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f);\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nconst removeEventHandlerListener = (eventHandler, f) => {\n eventHandler.l = eventHandler.l.filter(g => f !== g);\n};\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nconst callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n callAll(eventHandler.l, [arg0, arg1]);\n\nclass ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client;\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock;\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock);\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nconst createID = (client, clock) => new ID(client, clock);\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nconst writeID = (encoder, id) => {\n writeVarUint(encoder, id.client);\n writeVarUint(encoder, id.clock);\n};\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nconst readID = decoder =>\n createID(readVarUint(decoder), readVarUint(decoder));\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType} type\n * @return {string}\n *\n * @private\n * @function\n */\nconst findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw unexpectedCase()\n};\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nconst isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType} */ (child.parent)._item;\n }\n return false\n};\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType} type\n */\nconst logType = type => {\n const res = [];\n let n = type._start;\n while (n) {\n res.push(n);\n n = n.right;\n }\n console.log('Children: ', res);\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content));\n};\n\nclass PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map}\n */\n const dss = new Map();\n this.yusers = storeType;\n this.doc = doc;\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map}\n */\n this.clients = new Map();\n this.dss = dss;\n /**\n * @param {YMap} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray}\n */\n const ds = user.get('ds');\n const ids = user.get('ids');\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription);\n ds.observe(/** @param {YArrayEvent} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(createDecoder(encodedDs)))]));\n }\n });\n });\n });\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(encodedDs)))));\n ids.observe(/** @param {YArrayEvent} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n );\n ids.forEach(addClientId);\n };\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n );\n });\n // add intial data\n storeType.forEach(initUser);\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} [conf]\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers;\n let user = users.get(userDescription);\n if (!user) {\n user = new YMap();\n user.set('ids', new YArray());\n user.set('ds', new YArray());\n users.set(userDescription, user);\n }\n user.get('ids').push([clientid]);\n users.observe(event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription);\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite;\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid]);\n }\n });\n const encoder = new DSEncoderV1();\n const ds = this.dss.get(userDescription);\n if (ds) {\n writeDeleteSet(encoder, ds);\n user.get('ds').push([encoder.toUint8Array()]);\n }\n }\n }, 0);\n });\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds');\n const ds = transaction.deleteSet;\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1();\n writeDeleteSet(encoder, ds);\n yds.push([encoder.toUint8Array()]);\n }\n });\n });\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nclass RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n */\n constructor (type, tname, item) {\n /**\n * @type {ID|null}\n */\n this.type = type;\n /**\n * @type {string|null}\n */\n this.tname = tname;\n /**\n * @type {ID | null}\n */\n this.item = item;\n }\n}\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock));\n\nclass AbsolutePosition {\n /**\n * @param {AbstractType} type\n * @param {number} index\n */\n constructor (type, index) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n /**\n * @type {number}\n */\n this.index = index;\n }\n}\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n *\n * @function\n */\nconst createAbsolutePosition = (type, index) => new AbsolutePosition(type, index);\n\n/**\n * @param {AbstractType} type\n * @param {ID|null} item\n *\n * @function\n */\nconst createRelativePosition = (type, item) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = findRootTypeKey(type);\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock);\n }\n return new RelativePosition(typeid, tname, item)\n};\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromTypeIndex = (type, index) => {\n let t = type._start;\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index))\n }\n index -= t.length;\n }\n t = t.right;\n }\n return createRelativePosition(type, null)\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nconst writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item } = rpos;\n if (item !== null) {\n writeVarUint(encoder, 0);\n writeID(encoder, item);\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n writeUint8(encoder, 1);\n writeVarString(encoder, tname);\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n writeUint8(encoder, 2);\n writeID(encoder, type);\n } else {\n throw unexpectedCase()\n }\n return encoder\n};\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition|null}\n *\n * @function\n */\nconst readRelativePosition = decoder => {\n let type = null;\n let tname = null;\n let itemID = null;\n switch (readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder);\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = readVarString(decoder);\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder);\n }\n }\n return new RelativePosition(type, tname, itemID)\n};\n\n/**\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nconst createAbsolutePositionFromRelativePosition = (rpos, doc) => {\n const store = doc.store;\n const rightID = rpos.item;\n const typeID = rpos.type;\n const tname = rpos.tname;\n let type = null;\n let index = 0;\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followRedone(store, rightID);\n const right = res.item;\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType} */ (right.parent);\n if (type._item === null || !type._item.deleted) {\n index = right.deleted || !right.countable ? 0 : res.diff;\n let n = right.left;\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length;\n }\n n = n.left;\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname);\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followRedone(store, typeID);\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type;\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw unexpectedCase()\n }\n index = type._length;\n }\n return createAbsolutePosition(type, index)\n};\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n *\n * @function\n */\nconst compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type)\n);\n\nclass Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds;\n /**\n * State Map\n * @type {Map}\n */\n this.sv = sv;\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nconst equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients;\n const ds2 = snap2.ds.clients;\n const sv1 = snap1.sv;\n const sv2 = snap2.sv;\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || [];\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i];\n const dsitem2 = dsitems2[i];\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {AbstractDSEncoder} [encoder]\n * @return {Uint8Array}\n */\nconst encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds);\n writeStateVector(encoder, snapshot.sv);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nconst encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DefaultDSEncoder());\n\n/**\n * @param {Uint8Array} buf\n * @param {AbstractDSDecoder} [decoder]\n * @return {Snapshot}\n */\nconst decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n};\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nconst decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(createDecoder(buf)));\n\n/**\n * @param {DeleteSet} ds\n * @param {Map} sm\n * @return {Snapshot}\n */\nconst createSnapshot = (ds, sm) => new Snapshot(ds, sm);\n\nconst emptySnapshot = createSnapshot(createDeleteSet(), new Map());\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nconst snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store));\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nconst isVisible = (item, snapshot) => snapshot === undefined ? !item.deleted : (\n snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id)\n);\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nconst splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, create);\n const store = transaction.doc.store;\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n });\n iterateDeletedStructs(transaction, snapshot.ds, item => {});\n meta.add(snapshot);\n }\n};\n\nclass StructStore {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n /**\n * Store incompleted struct reads here\n * `i` denotes to the next read operation\n * We could shift the array of refs instead, but shift is incredible\n * slow in Chrome for arrays with more than 100k elements\n * @see tryResumePendingStructRefs\n * @type {Map}>}\n */\n this.pendingClientsStructRefs = new Map();\n /**\n * Stack of pending structs waiting for struct dependencies\n * Maximum length of stack is structReaders.size\n * @type {Array}\n */\n this.pendingStack = [];\n /**\n * @type {Array}\n */\n this.pendingDeleteReaders = [];\n }\n}\n\n/**\n * Return the states as a Map.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map}\n *\n * @public\n * @function\n */\nconst getStateVector = store => {\n const sm = new Map();\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1];\n sm.set(client, struct.id.clock + struct.length);\n });\n return sm\n};\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nconst getState = (store, client) => {\n const structs = store.clients.get(client);\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1];\n return lastStruct.id.clock + lastStruct.length\n};\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nconst addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client);\n if (structs === undefined) {\n structs = [];\n store.clients.set(struct.id.client, structs);\n } else {\n const lastStruct = structs[structs.length - 1];\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw unexpectedCase()\n }\n }\n structs.push(struct);\n};\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nconst findIndexSS = (structs, clock) => {\n let left = 0;\n let right = structs.length - 1;\n let mid = structs[right];\n let midclock = mid.id.clock;\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = floor((clock / (midclock + mid.length - 1)) * right); // pivoting the search\n while (left <= right) {\n mid = structs[midindex];\n midclock = mid.id.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n midindex = floor((left + right) / 2);\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw unexpectedCase()\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nconst find = (store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n return structs[findIndexSS(structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nconst getItem = /** @type {function(StructStore,ID):Item} */ (find);\n\n/**\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clock\n */\nconst findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock);\n const struct = structs[index];\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n return index + 1\n }\n return index\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(id.client));\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n const index = findIndexSS(structs, id.clock);\n const struct = structs[index];\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1));\n }\n return struct\n};\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nconst replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array} */ (store.clients.get(struct.id.client));\n structs[findIndexSS(structs, struct.id.clock)] = newStruct;\n};\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len;\n let index = findIndexCleanStart(transaction, structs, clockStart);\n let struct;\n do {\n struct = structs[index++];\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd);\n }\n f(struct);\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n};\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const map = y.define('map', YMap)\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * y.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nclass Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet();\n /**\n * Holds the state before the transaction started.\n * @type {Map}\n */\n this.beforeState = getStateVector(doc.store);\n /**\n * Holds the state after the transaction.\n * @type {Map}\n */\n this.afterState = new Map();\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map,Set>}\n */\n this.changed = new Map();\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map,Array>}\n */\n this.changedParentTypes = new Map();\n /**\n * @type {Array}\n */\n this._mergeStructs = [];\n /**\n * @type {any}\n */\n this.origin = origin;\n /**\n * Stores meta information on the transaction\n * @type {Map}\n */\n this.meta = new Map();\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local;\n }\n}\n\n/**\n * @param {AbstractUpdateEncoder} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nconst writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet);\n writeStructsFromTransaction(encoder, transaction);\n writeDeleteSet(encoder, transaction.deleteSet);\n return true\n};\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType} type\n * @param {string|null} parentSub\n */\nconst addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item;\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n setIfUndefined(transaction.changed, type, create).add(parentSub);\n }\n};\n\n/**\n * @param {Array} structs\n * @param {number} pos\n */\nconst tryToMergeWithLeft = (structs, pos) => {\n const left = structs[pos - 1];\n const right = structs[pos];\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n structs.splice(pos, 1);\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left));\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n const endDeleteItemClock = deleteItem.clock + deleteItem.len;\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si];\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false);\n }\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiecy and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1));\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[--si]\n ) {\n tryToMergeWithLeft(structs, si);\n }\n }\n });\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter);\n tryMergeDeleteSet(ds, store);\n};\n\n/**\n * @param {Array} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i];\n const doc = transaction.doc;\n const store = doc.store;\n const ds = transaction.deleteSet;\n const mergeStructs = transaction._mergeStructs;\n try {\n sortAndMergeDeleteSet(ds);\n transaction.afterState = getStateVector(transaction.doc.store);\n doc._transaction = null;\n doc.emit('beforeObserverCalls', [transaction, doc]);\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array}\n */\n const fs = [];\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs);\n }\n })\n );\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) =>\n fs.push(() => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._item === null || !type._item.deleted) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n );\n events\n .forEach(event => {\n event.currentTarget = type;\n });\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction);\n }\n })\n );\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]));\n });\n callAll(fs, []);\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter);\n }\n tryMergeDeleteSet(ds, store);\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0;\n if (beforeClock !== clock) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = max(findIndexSS(structs, beforeClock), 1);\n for (let i = structs.length - 1; i >= firstChangePos; i--) {\n tryToMergeWithLeft(structs, i);\n }\n }\n });\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = 0; i < mergeStructs.length; i++) {\n const { client, clock } = mergeStructs[i].id;\n const structs = /** @type {Array} */ (store.clients.get(client));\n const replacedStructPos = findIndexSS(structs, clock);\n if (replacedStructPos + 1 < structs.length) {\n tryToMergeWithLeft(structs, replacedStructPos + 1);\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLeft(structs, replacedStructPos);\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n doc.clientID = generateNewClientId();\n print(ORANGE, BOLD, '[yjs] ', UNBOLD, RED, 'Changed the client-id because another client seems to be using it.');\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc]);\n if (doc._observers.has('update')) {\n const encoder = new DefaultUpdateEncoder();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc]);\n }\n }\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = [];\n doc.emit('afterAllTransactions', [doc, transactionCleanups]);\n } else {\n cleanupTransactions(transactionCleanups, i + 1);\n }\n }\n }\n};\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @param {Doc} doc\n * @param {function(Transaction):void} f\n * @param {any} [origin=true]\n *\n * @function\n */\nconst transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups;\n let initialCall = false;\n if (doc._transaction === null) {\n initialCall = true;\n doc._transaction = new Transaction(doc, origin, local);\n transactionCleanups.push(doc._transaction);\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc]);\n }\n doc.emit('beforeTransaction', [doc._transaction, doc]);\n }\n try {\n f(doc._transaction);\n } finally {\n if (initialCall && transactionCleanups[0] === doc._transaction) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0);\n }\n }\n};\n\nclass StackItem {\n /**\n * @param {DeleteSet} ds\n * @param {Map} beforeState\n * @param {Map} afterState\n */\n constructor (ds, beforeState, afterState) {\n this.ds = ds;\n this.beforeState = beforeState;\n this.afterState = afterState;\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map();\n }\n}\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array} stack\n * @param {string} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Whether a change happened\n * @type {StackItem?}\n */\n let result = null;\n const doc = undoManager.doc;\n const scope = undoManager.scope;\n transact(doc, transaction => {\n while (stack.length > 0 && result === null) {\n const store = doc.store;\n const stackItem = /** @type {StackItem} */ (stack.pop());\n /**\n * @type {Set}\n */\n const itemsToRedo = new Set();\n /**\n * @type {Array}\n */\n const itemsToDelete = [];\n let performedChange = false;\n stackItem.afterState.forEach((endClock, client) => {\n const startClock = stackItem.beforeState.get(client) || 0;\n const len = endClock - startClock;\n // @todo iterateStructs should not need the structs parameter\n const structs = /** @type {Array} */ (store.clients.get(client));\n if (startClock !== endClock) {\n // make sure structs don't overlap with the range of created operations [stackItem.start, stackItem.start + stackItem.end)\n // this must be executed before deleted structs are iterated.\n getItemCleanStart(transaction, createID(client, startClock));\n if (endClock < getState(doc.store, client)) {\n getItemCleanStart(transaction, createID(client, endClock));\n }\n iterateStructs(transaction, structs, startClock, len, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id);\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff));\n }\n if (item.length > len) {\n getItemCleanStart(transaction, createID(item.id.client, endClock));\n }\n struct = item;\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct);\n }\n }\n });\n }\n });\n iterateDeletedStructs(transaction, stackItem.ds, struct => {\n const id = struct.id;\n const clock = id.clock;\n const client = id.client;\n const startClock = stackItem.beforeState.get(client) || 0;\n const endClock = stackItem.afterState.get(client) || 0;\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in [stackItem.start, stackItem.start + stackItem.end) because they were created and deleted in the same capture interval.\n !(clock >= startClock && clock < endClock)\n ) {\n itemsToRedo.add(struct);\n }\n });\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo) !== null || performedChange;\n });\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i];\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction);\n performedChange = true;\n }\n }\n result = stackItem;\n if (result != null) {\n undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType }, undoManager]);\n }\n }\n }, undoManager);\n return result\n};\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter whan an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set} [UndoManagerOptions.trackedOrigins=new Set([null])]\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {Observable<'stack-item-added'|'stack-item-popped'>}\n */\nclass UndoManager extends Observable {\n /**\n * @param {AbstractType|Array>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, { captureTimeout, deleteFilter = () => true, trackedOrigins = new Set([null]) } = {}) {\n if (captureTimeout == null) {\n captureTimeout = 500;\n }\n super();\n this.scope = typeScope instanceof Array ? typeScope : [typeScope];\n this.deleteFilter = deleteFilter;\n trackedOrigins.add(this);\n this.trackedOrigins = trackedOrigins;\n /**\n * @type {Array}\n */\n this.undoStack = [];\n /**\n * @type {Array}\n */\n this.redoStack = [];\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false;\n this.redoing = false;\n this.doc = /** @type {Doc} */ (this.scope[0].doc);\n this.lastChange = 0;\n this.doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n // Only track certain transactions\n if (!this.scope.some(type => transaction.changedParentTypes.has(type)) || (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))) {\n return\n }\n const undoing = this.undoing;\n const redoing = this.redoing;\n const stack = undoing ? this.redoStack : this.undoStack;\n if (undoing) {\n this.stopCapturing(); // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.redoStack = [];\n }\n const beforeState = transaction.beforeState;\n const afterState = transaction.afterState;\n const now = getUnixTime();\n if (now - this.lastChange < captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1];\n lastOp.ds = mergeDeleteSets([lastOp.ds, transaction.deleteSet]);\n lastOp.afterState = afterState;\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, beforeState, afterState));\n }\n if (!undoing && !redoing) {\n this.lastChange = now;\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true);\n }\n });\n this.emit('stack-item-added', [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo' }, this]);\n });\n }\n\n clear () {\n this.doc.transact(transaction => {\n /**\n * @param {StackItem} stackItem\n */\n const clearItem = stackItem => {\n iterateDeletedStructs(transaction, stackItem.ds, item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false);\n }\n });\n };\n this.undoStack.forEach(clearItem);\n this.redoStack.forEach(clearItem);\n });\n this.undoStack = [];\n this.redoStack = [];\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0;\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true;\n let res;\n try {\n res = popStackItem(this, this.undoStack, 'undo');\n } finally {\n this.undoing = false;\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true;\n let res;\n try {\n res = popStackItem(this, this.redoStack, 'redo');\n } finally {\n this.redoing = false;\n }\n return res\n }\n}\n\n/**\n * YEvent describes the changes on a YType.\n */\nclass YEvent {\n /**\n * @param {AbstractType} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {AbstractType}\n */\n this.target = target;\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType}\n */\n this.currentTarget = target;\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction;\n /**\n * @type {Object|null}\n */\n this._changes = null;\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n // @ts-ignore _item is defined because target is integrated\n return getPathTo(this.currentTarget, this.target)\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * @return {{added:Set,deleted:Set,delta:Array<{insert:Array}|{delete:number}|{retain:number}>}}\n */\n get changes () {\n let changes = this._changes;\n if (changes === null) {\n const target = this.target;\n const added = create();\n const deleted = create();\n /**\n * @type {Array<{insert:Array}|{delete:number}|{retain:number}>}\n */\n const delta = [];\n /**\n * @type {Map}\n */\n const keys = new Map();\n changes = {\n added, deleted, delta, keys\n };\n const changed = /** @type Set */ (this.transaction.changed.get(target));\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null;\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp);\n }\n };\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp();\n lastOp = { delete: 0 };\n }\n lastOp.delete += item.length;\n deleted.add(item);\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp();\n lastOp = { insert: [] };\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent());\n added.add(item);\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp();\n lastOp = { retain: 0 };\n }\n lastOp.retain += item.length;\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp();\n }\n }\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key));\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action;\n let oldValue;\n if (this.adds(item)) {\n let prev = item.left;\n while (prev !== null && this.adds(prev)) {\n prev = prev.left;\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete';\n oldValue = last(prev.content.getContent());\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update';\n oldValue = last(prev.content.getContent());\n } else {\n action = 'add';\n oldValue = undefined;\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete';\n oldValue = last(/** @type {Item} */ item.content.getContent());\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue });\n }\n });\n this._changes = changes;\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType} parent\n * @param {AbstractType} child target\n * @return {Array} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = [];\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub);\n } else {\n // parent is array-ish\n let i = 0;\n let c = /** @type {AbstractType} */ (child._item.parent)._start;\n while (c !== child._item && c !== null) {\n if (!c.deleted) {\n i++;\n }\n c = c.right;\n }\n path.unshift(i);\n }\n child = /** @type {AbstractType} */ (child._item.parent);\n }\n return path\n};\n\nconst maxSearchMarker = 80;\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0;\n\nclass ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true;\n this.p = p;\n this.index = index;\n this.timestamp = globalSearchMarkerTimestamp++;\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++; };\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false;\n marker.p = p;\n p.marker = true;\n marker.index = index;\n marker.timestamp = globalSearchMarkerTimestamp++;\n};\n\n/**\n * @param {Array} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b);\n overwriteMarker(marker, p, index);\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index);\n searchMarker.push(pm);\n return pm\n }\n};\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType} yarray\n * @param {number} index\n */\nconst findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => abs(index - a.index) < abs(index - b.index) ? a : b);\n let p = yarray._start;\n let pindex = 0;\n if (marker !== null) {\n p = marker.p;\n pindex = marker.index;\n refreshMarkerTimestamp(marker); // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length;\n }\n p = p.right;\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && abs(marker.index - pindex) < /** @type {YText|YArray} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex);\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n};\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nconst updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i];\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p;\n p.marker = false;\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left;\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length;\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1);\n continue\n }\n m.p = p;\n p.marker = true;\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = max(index, m.index + len);\n }\n }\n};\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType} t\n * @return {Array}\n */\nconst getTypeChildren = t => {\n let s = t._start;\n const arr = [];\n while (s) {\n arr.push(s);\n s = s.right;\n }\n return arr\n};\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nconst callTypeObservers = (type, transaction, event) => {\n const changedType = type;\n const changedParentTypes = transaction.changedParentTypes;\n while (true) {\n // @ts-ignore\n setIfUndefined(changedParentTypes, type, () => []).push(event);\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType} */ (type._item.parent);\n }\n callEventHandlerListeners(changedType._eH, event, transaction);\n};\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nclass AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null;\n /**\n * @type {Map}\n */\n this._map = new Map();\n /**\n * @type {Item|null}\n */\n this._start = null;\n /**\n * @type {Doc|null}\n */\n this.doc = null;\n this._length = 0;\n /**\n * Event handlers\n * @type {EventHandler}\n */\n this._eH = createEventHandler();\n /**\n * Deep event handlers\n * @type {EventHandler,Transaction>}\n */\n this._dEH = createEventHandler();\n /**\n * @type {null | Array}\n */\n this._searchMarker = null;\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y;\n this._item = item;\n }\n\n /**\n * @return {AbstractType}\n */\n _copy () {\n throw methodUnimplemented()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0;\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f);\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f);\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType} type\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArray = type => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType} type\n * @param {Snapshot} snapshot\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArraySnapshot = (type, snapshot) => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {AbstractType} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nconst typeListForEach = (type, f) => {\n let index = 0;\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type);\n }\n }\n n = n.right;\n }\n};\n\n/**\n * @template C,R\n * @param {AbstractType} type\n * @param {function(C,number,AbstractType):R} f\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListMap = (type, f) => {\n /**\n * @type {Array}\n */\n const result = [];\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type));\n });\n return result\n};\n\n/**\n * @param {AbstractType} type\n * @return {IterableIterator}\n *\n * @private\n * @function\n */\nconst typeListCreateIterator = type => {\n let n = type._start;\n /**\n * @type {Array|null}\n */\n let currentContent = null;\n let currentContentIndex = 0;\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right;\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent();\n currentContentIndex = 0;\n n = n.right; // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++];\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null;\n }\n return {\n done: false,\n value\n }\n }\n }\n};\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nconst typeListGet = (type, index) => {\n const marker = findMarker(type, index);\n let n = type._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length;\n }\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {Item?} referenceItem\n * @param {Array|Array|boolean|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const store = doc.store;\n const right = referenceItem === null ? parent._start : referenceItem.right;\n /**\n * @type {Array|number>}\n */\n let jsonContent = [];\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent));\n left.integrate(transaction, 0);\n jsonContent = [];\n }\n };\n content.forEach(c => {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c);\n break\n default:\n packJsonContent();\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))));\n left.integrate(transaction, 0);\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c));\n left.integrate(transaction, 0);\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n });\n packJsonContent();\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {Array|Array|number|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev; // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0;\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n break\n }\n index -= n.length;\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nconst typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index;\n const startLength = length;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n index -= n.length;\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length));\n }\n n.delete(transaction);\n length -= n.length;\n }\n n = n.right;\n }\n if (length > 0) {\n throw create$1('array length exceeded')\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nconst typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key);\n if (c !== undefined) {\n c.delete(transaction);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Object|number|Array|string|Uint8Array|AbstractType} value\n *\n * @private\n * @function\n */\nconst typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let content;\n if (value == null) {\n content = new ContentAny([value]);\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value]);\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value));\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value);\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0);\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGet = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType} parent\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAll = (parent) => {\n /**\n * @type {Object}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst typeMapHas = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object|number|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n};\n\n/**\n * @param {Map} map\n * @return {IterableIterator>}\n *\n * @private\n * @function\n */\nconst createMapIterator = map => iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted);\n\n/**\n * @module YArray\n */\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n */\nclass YArrayEvent extends YEvent {\n /**\n * @param {YArray} yarray The changed type\n * @param {Transaction} transaction The transaction object\n */\n constructor (yarray, transaction) {\n super(yarray, transaction);\n this._transaction = transaction;\n }\n}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YArray extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array?}\n * @private\n */\n this._prelimContent = [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YArray()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction));\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, 0, ...content);\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content);\n }\n\n /**\n * Preppends content to this YArray.\n *\n * @param {Array} content Array of content to preppend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, length);\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template T,M\n * @param {function(T,number,YArray):M} f Function that produces an element of the new Array\n * @return {Array} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {function(T,number,YArray):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYArray = decoder => new YArray();\n\n/**\n * @template T\n * Event that describes the changes on a YMap.\n */\nclass YMapEvent extends YEvent {\n /**\n * @param {YMap} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction);\n this.keysChanged = subs;\n }\n}\n\n/**\n * @template T number|string|Object|Array|Uint8Array\n * A shared Map implementation.\n *\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YMap extends AbstractType {\n /**\n *\n * @param {Iterable=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super();\n /**\n * @type {Map?}\n * @private\n */\n this._prelimContent = null;\n\n if (entries === undefined) {\n this._prelimContent = new Map();\n } else {\n this._prelimContent = new Map(entries);\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value);\n });\n this._prelimContent = null;\n }\n\n _copy () {\n return new YMap()\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs));\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1];\n map[key] = v instanceof AbstractType ? v.toJSON() : v;\n }\n });\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n keys () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n values () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator}\n */\n entries () {\n return iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => [v[0], v[1].content.getContent()[v[1].length - 1]])\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(T,string,YMap):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this);\n }\n });\n return map\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).delete(key);\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {T} value The value of the element to add\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, value);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).set(key, value);\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {T|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n *\n * @private\n * @function\n */\nconst readYMap = decoder => new YMap();\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && equalFlat(a, b));\n\nclass ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left;\n this.right = right;\n this.index = index;\n this.currentAttributes = currentAttributes;\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n unexpectedCase();\n }\n switch (this.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!this.right.deleted) {\n this.index += this.right.length;\n }\n break\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content));\n }\n break\n }\n this.left = this.right;\n this.right = this.right.right;\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count));\n }\n pos.index += pos.right.length;\n count -= pos.right.length;\n }\n break\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content));\n }\n break\n }\n pos.left = pos.right;\n pos.right = pos.right.right;\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index) => {\n const currentAttributes = new Map();\n const marker = findMarker(parent, index);\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes);\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes);\n return findNextPosition(transaction, pos, index)\n }\n};\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key);\n }\n currPos.forward();\n }\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let left = currPos.left;\n const right = currPos.right;\n negatedAttributes.forEach((val, key) => {\n left = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n left.integrate(transaction, 0);\n });\n};\n\n/**\n * @param {Map} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format;\n if (value === null) {\n currentAttributes.delete(key);\n } else {\n currentAttributes.set(key, value);\n }\n};\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] || null, /** @type {ContentFormat} */ (currPos.right.content).value))) ; else {\n break\n }\n currPos.forward();\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n * @return {Map}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const negatedAttributes = new Map();\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key];\n const currentVal = currPos.currentAttributes.get(key) || null;\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal);\n const { left, right } = currPos;\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n }\n return negatedAttributes\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object} text\n * @param {Object} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null;\n }\n });\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : new ContentEmbed(text);\n let { left, right, index } = currPos;\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength());\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content);\n right.integrate(transaction, 0);\n currPos.right = right;\n currPos.index = index;\n currPos.forward();\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n while (length > 0 && currPos.right !== null) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key);\n } else {\n negatedAttributes.set(key, value);\n }\n currPos.right.delete(transaction);\n }\n break\n }\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n break\n }\n }\n currPos.forward();\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = '';\n for (; length > 0; length--) {\n newlines += '\\n';\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} end exclusive end, automatically iterates to the next Content Item\n * @param {Map} startAttributes\n * @param {Map} endAttributes This attribute is modified!\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, end, startAttributes, endAttributes) => {\n while (end && end.content.constructor !== ContentString && end.content.constructor !== ContentEmbed) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n updateCurrentAttributes(endAttributes, /** @type {ContentFormat} */ (end.content));\n }\n end = end.right;\n }\n let cleanups = 0;\n while (start !== end) {\n if (!start.deleted) {\n const content = start.content;\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content);\n if ((endAttributes.get(key) || null) !== value || (startAttributes.get(key) || null) === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction);\n cleanups++;\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right);\n }\n return cleanups\n};\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || (item.right.content.constructor !== ContentString && item.right.content.constructor !== ContentEmbed))) {\n item = item.right;\n }\n const attrs = new Set();\n // iterate back until a content item is found\n while (item && (item.deleted || (item.content.constructor !== ContentString && item.content.constructor !== ContentEmbed))) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key;\n if (attrs.has(key)) {\n item.delete(transaction);\n } else {\n attrs.add(key);\n }\n }\n item = item.left;\n }\n};\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nconst cleanupYTextFormatting = type => {\n let res = 0;\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start);\n let end = type._start;\n let startAttributes = create$2();\n const currentAttributes = copy(startAttributes);\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content));\n break\n case ContentEmbed:\n case ContentString:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes);\n startAttributes = copy(currentAttributes);\n start = end;\n break\n }\n }\n end = end.right;\n }\n });\n return res\n};\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length;\n const startAttrs = copy(currPos.currentAttributes);\n const start = currPos.right;\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n currPos.right.delete(transaction);\n break\n }\n }\n currPos.forward();\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, copy(currPos.currentAttributes));\n }\n const parent = /** @type {AbstractType} */ (/** @type {Item} */ (currPos.left || currPos.right).parent);\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length);\n }\n return currPos\n};\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @typedef {Object} DeltaItem\n * @property {number|undefined} DeltaItem.delete\n * @property {number|undefined} DeltaItem.retain\n * @property {string|undefined} DeltaItem.string\n * @property {Object} DeltaItem.attributes\n */\n\n/**\n * Event that describes the changes on a YText type.\n */\nclass YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n */\n constructor (ytext, transaction) {\n super(ytext, transaction);\n /**\n * @type {Array|null}\n */\n this._delta = null;\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc);\n this._delta = [];\n transact(y, transaction => {\n const delta = /** @type {Array} */ (this._delta);\n const currentAttributes = new Map(); // saves all current attributes for insert\n const oldAttributes = new Map();\n let item = this.target._start;\n /**\n * @type {string?}\n */\n let action = null;\n /**\n * @type {Object}\n */\n const attributes = {}; // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = '';\n let retain = 0;\n let deleteLen = 0;\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op;\n switch (action) {\n case 'delete':\n op = { delete: deleteLen };\n deleteLen = 0;\n break\n case 'insert':\n op = { insert };\n if (currentAttributes.size > 0) {\n op.attributes = {};\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value;\n }\n });\n }\n insert = '';\n break\n case 'retain':\n op = { retain };\n if (Object.keys(attributes).length > 0) {\n op.attributes = {};\n for (const key in attributes) {\n op.attributes[key] = attributes[key];\n }\n }\n retain = 0;\n break\n }\n delta.push(op);\n action = null;\n }\n };\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp();\n action = 'insert';\n insert = /** @type {ContentEmbed} */ (item.content).embed;\n addOp();\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += 1;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += 1;\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp();\n action = 'insert';\n }\n insert += /** @type {ContentString} */ (item.content).str;\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += item.length;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += item.length;\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content);\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (equalAttrs(value, (oldAttributes.get(key) || null))) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else {\n item.delete(transaction);\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value);\n const curVal = currentAttributes.get(key) || null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n attributes[key] = curVal;\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (value === null) {\n attributes[key] = value;\n } else {\n delete attributes[key];\n }\n } else {\n item.delete(transaction);\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp();\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content));\n }\n break\n }\n }\n item = item.right;\n }\n addOp();\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1];\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop();\n } else {\n break\n }\n }\n });\n }\n return this._delta\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType\n */\nclass YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super();\n /**\n * Array of pending operations on this type\n * @type {Array?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n try {\n /** @type {Array} */ (this._pending).forEach(f => f());\n } catch (e) {\n console.error(e);\n }\n this._pending = null;\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n const event = new YTextEvent(this, transaction);\n const doc = transaction.doc;\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local) {\n // check if another formatting item was inserted\n let foundFormattingItem = false;\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0;\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (!item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n if (foundFormattingItem) {\n break\n }\n }\n if (!foundFormattingItem) {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || foundFormattingItem) {\n return\n }\n if (item.parent === this && item.content.constructor === ContentFormat) {\n foundFormattingItem = true;\n }\n });\n }\n transact(doc, (t) => {\n if (foundFormattingItem) {\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n cleanupYTextFormatting(this);\n } else {\n // If no formatting attribute was inserted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n iterateDeletedStructs(t, t.deleteSet, item => {\n if (item instanceof GC) {\n return\n }\n if (item.parent === this) {\n cleanupContextlessFormattingGap(t, item);\n }\n });\n }\n });\n }\n callTypeObservers(this, transaction, event);\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = '';\n /**\n * @type {Item|null}\n */\n let n = this._start;\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str;\n }\n n = n.right;\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} [opts]\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map());\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i];\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert;\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {});\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {});\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete);\n }\n }\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.applyDelta(delta));\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array}\n */\n const ops = [];\n const currentAttributes = new Map();\n const doc = /** @type {Doc} */ (this.doc);\n let str = '';\n let n = this._start;\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object}\n */\n const attributes = {};\n let addAttributes = false;\n currentAttributes.forEach((value, key) => {\n addAttributes = true;\n attributes[key] = value;\n });\n /**\n * @type {Object}\n */\n const op = { insert: str };\n if (addAttributes) {\n op.attributes = attributes;\n }\n ops.push(op);\n str = '';\n }\n }\n // snapshots are merged again after the transaction, so we need to keep the\n // transalive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot);\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot);\n }\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange');\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'removed') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' });\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.state !== 'added') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' });\n }\n } else if (cur !== undefined) {\n packStr();\n currentAttributes.delete('ychange');\n }\n str += /** @type {ContentString} */ (n.content).str;\n break\n }\n case ContentEmbed: {\n packStr();\n /**\n * @type {Object}\n */\n const op = {\n insert: /** @type {ContentEmbed} */ (n.content).embed\n };\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object} */ ({});\n op.attributes = attrs;\n currentAttributes.forEach((value, key) => {\n attrs[key] = value;\n });\n }\n ops.push(op);\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr();\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content));\n }\n break\n }\n }\n n = n.right;\n }\n packStr();\n }, splitSnapshotAffectedStructs);\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (!attributes) {\n attributes = {};\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v; });\n }\n insertText(transaction, this, pos, text, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insert(index, text, attributes));\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object} embed The Object that represents the embed.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes = {}) {\n if (embed.constructor !== Object) {\n throw new Error('Embed must be an Object')\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n insertText(transaction, this, pos, embed, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes));\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index), length);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.delete(index, length));\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index);\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.format(index, length, attributes));\n }\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nconst readYText = decoder => new YText();\n\n/**\n * @module YXml\n */\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable}\n */\nclass YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f;\n this._root = root;\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start);\n this._firstCall = true;\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode;\n let type = /** @type {any} */ (n.content).type;\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type;\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start;\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right;\n break\n } else if (n.parent === this._root) {\n n = null;\n } else {\n n = /** @type {AbstractType} */ (n.parent)._item;\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false;\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n;\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType\n */\nclass YXmlFragment extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array|null}\n */\n this._prelimContent = [];\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase();\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query);\n const next = iterator.next();\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase();\n // @ts-ignore\n return Array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction));\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment();\n if (binding !== undefined) {\n binding._createAssociation(fragment, this);\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null);\n });\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content);\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length);\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nconst readYXmlFragment = decoder => new YXmlFragment();\n\n/**\n * An YXmlElement imitates the behavior of a\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}.\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n */\nclass YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super();\n this.nodeName = nodeName;\n /**\n * @type {Map|null}\n */\n this._prelimAttrs = new Map();\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value);\n });\n this._prelimAttrs = null;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes();\n const stringBuilder = [];\n const keys = [];\n for (const key in attrs) {\n keys.push(key);\n }\n keys.sort();\n const keysLen = keys.length;\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i];\n stringBuilder.push(key + '=\"' + attrs[key] + '\"');\n }\n const nodeName = this.nodeName.toLocaleLowerCase();\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : '';\n return `<${nodeName}${attrsString}>${super.toString()}`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).delete(attributeName);\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {String} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).set(attributeName, attributeValue);\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {String} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @param {Snapshot} [snapshot]\n * @return {Object} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes (snapshot) {\n return typeMapGetAll(this)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName);\n const attrs = this.getAttributes();\n for (const key in attrs) {\n dom.setAttribute(key, attrs[key]);\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding));\n });\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID);\n encoder.writeKey(this.nodeName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nconst readYXmlElement = decoder => new YXmlElement(decoder.readKey());\n\n/**\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nclass YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlFragment} target The target on which the event is created.\n * @param {Set} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set}\n */\n this.attributesChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.attributesChanged.add(sub);\n }\n });\n }\n}\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap}\n */\nclass YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super();\n /**\n * @type {string}\n */\n this.hookName = hookName;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName];\n let dom;\n if (hook !== undefined) {\n dom = hook.createDom(this);\n } else {\n dom = document.createElement(this.hookName);\n }\n dom.setAttribute('data-yjs-hook', this.hookName);\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID);\n encoder.writeKey(this.hookName);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nconst readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey());\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nclass YXmlText extends YText {\n _copy () {\n return new YXmlText()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString());\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = [];\n for (const nodeName in delta.attributes) {\n const attrs = [];\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] });\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1);\n nestedNodes.push({ nodeName, attrs });\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1);\n // now convert to dom string\n let str = '';\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i];\n str += `<${node.nodeName}`;\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j];\n str += ` ${attr.key}=\"${attr.value}\"`;\n }\n str += '>';\n }\n str += delta.insert;\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += ``;\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nconst readYXmlText = decoder => new YXmlText();\n\nclass AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id;\n this.length = length;\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw methodUnimplemented()\n }\n}\n\nconst structGCRefNumber = 0;\n\n/**\n * @private\n */\nclass GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.length -= offset;\n }\n addStruct(transaction.doc.store, this);\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber);\n encoder.writeLen(this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\nclass ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentBinary}\n */\nconst readContentBinary = decoder => new ContentBinary(decoder.readBuf());\n\nclass ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset);\n this.len = offset;\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len);\n item.markDeleted();\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentDeleted}\n */\nconst readContentDeleted = decoder => new ContentDeleted(decoder.readLen());\n\n/**\n * @private\n */\nclass ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentEmbed}\n */\nconst readContentEmbed = decoder => new ContentEmbed(decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key;\n this.value = value;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} offset\n * @return {ContentFormat}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n /** @type {AbstractType} */ (item.parent)._searchMarker = null;\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key);\n encoder.writeJSON(this.value);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentFormat}\n */\nconst readContentFormat = decoder => new ContentFormat(decoder.readString(), decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentJSON {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c));\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentJSON}\n */\nconst readContentJSON = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n const c = decoder.readString();\n if (c === 'undefined') {\n cs.push(undefined);\n } else {\n cs.push(JSON.parse(c));\n }\n }\n return new ContentJSON(cs)\n};\n\nclass ContentAny {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeAny(c);\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentAny}\n */\nconst readContentAny = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny());\n }\n return new ContentAny(cs)\n};\n\n/**\n * @private\n */\nclass ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset));\n this.str = this.str.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset));\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentString}\n */\nconst readContentString = decoder => new ContentString(decoder.readString());\n\n/**\n * @type {Array>}\n * @private\n */\nconst typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n];\n\nconst YArrayRefID = 0;\nconst YMapRefID = 1;\nconst YTextRefID = 2;\nconst YXmlElementRefID = 3;\nconst YXmlFragmentRefID = 4;\nconst YXmlHookRefID = 5;\nconst YXmlTextRefID = 6;\n\n/**\n * @private\n */\nclass ContentType {\n /**\n * @param {AbstractType} type\n */\n constructor (type) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item);\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start;\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // Whis will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item);\n }\n item = item.right;\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction);\n } else {\n // same as above\n transaction._mergeStructs.push(item);\n }\n });\n transaction.changed.delete(this.type);\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start;\n while (item !== null) {\n item.gc(store, true);\n item = item.right;\n }\n this.type._start = null;\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true);\n item = item.left;\n }\n });\n this.type._map = new Map();\n }\n\n /**\n * @param {AbstractUpdateEncoder} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {AbstractUpdateDecoder} decoder\n * @return {ContentType}\n */\nconst readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder));\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nconst followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id;\n let diff = 0;\n let item;\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff);\n }\n item = getItem(store, nextID);\n diff = nextID.clock - item.id.clock;\n nextID = item.redone;\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n};\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nconst keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep;\n item = /** @type {AbstractType} */ (item.parent)._item;\n }\n};\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nconst splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id;\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n );\n if (leftItem.deleted) {\n rightItem.markDeleted();\n }\n if (leftItem.keep) {\n rightItem.keep = true;\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff);\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem;\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem;\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem);\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem);\n }\n leftItem.length = diff;\n return rightItem\n};\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set} redoitems\n *\n * @return {Item|null}\n *\n * @private\n */\nconst redoItem = (transaction, item, redoitems) => {\n const doc = transaction.doc;\n const store = doc.store;\n const ownClientID = doc.clientID;\n const redone = item.redone;\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType} */ (item.parent)._item;\n /**\n * @type {Item|null}\n */\n let left;\n /**\n * @type {Item|null}\n */\n let right;\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left;\n right = item;\n } else {\n // Is a map item. Insert as current value\n left = item;\n while (left.right !== null) {\n left = left.right;\n if (left.id.client !== ownClientID) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n }\n if (left.right !== null) {\n left = /** @type {Item} */ (/** @type {AbstractType} */ (item.parent)._map.get(item.parentSub));\n }\n right = null;\n }\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true && parentItem.redone === null) {\n // try to undo parent if it will be undone anyway\n if (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems) === null) {\n return null\n }\n }\n if (parentItem !== null && parentItem.redone !== null) {\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone);\n }\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left;\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone);\n }\n if (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace;\n break\n }\n left = left.left;\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right;\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone);\n }\n if (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace;\n break\n }\n right = right.right;\n }\n }\n const nextClock = getState(store, ownClientID);\n const nextId = createID(ownClientID, nextClock);\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentItem === null ? item.parent : /** @type {ContentType} */ (parentItem.content).type,\n item.parentSub,\n item.content.copy()\n );\n item.redone = nextId;\n keepItem(redoneItem, true);\n redoneItem.integrate(transaction, 0);\n return redoneItem\n};\n\n/**\n * Abstract class that represents any content.\n */\nclass Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength());\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin;\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left;\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right;\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin;\n /**\n * @type {AbstractType|ID|null}\n */\n this.parent = parent;\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub;\n /**\n * If this type's effect is reundone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null;\n /**\n * @type {AbstractContent}\n */\n this.content = content;\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? BIT2 : 0;\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & BIT4) > 0) !== isMarked) {\n this.info ^= BIT4;\n }\n }\n\n get marker () {\n return (this.info & BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= BIT1;\n }\n }\n\n get countable () {\n return (this.info & BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= BIT3;\n }\n }\n\n markDeleted () {\n this.info |= BIT3;\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin);\n this.origin = this.left.lastId;\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin);\n this.rightOrigin = this.right.id;\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null;\n }\n // only set parent if this shouldn't be garbage collected\n if (!this.parent) {\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent;\n this.parentSub = this.left.parentSub;\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent;\n this.parentSub = this.right.parentSub;\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent);\n if (parentItem.constructor === GC) {\n this.parent = null;\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type;\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1));\n this.origin = this.left.lastId;\n this.content = this.content.splice(offset);\n this.length -= offset;\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left;\n\n /**\n * @type {Item|null}\n */\n let o;\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right;\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (o !== null && o.left !== null) {\n o = o.left;\n }\n } else {\n o = /** @type {AbstractType} */ (this.parent)._start;\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set}\n */\n const conflictingItems = new Set();\n /**\n * @type {Set}\n */\n const itemsBeforeOrigin = new Set();\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o);\n conflictingItems.add(o);\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o;\n conflictingItems.clear();\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o;\n conflictingItems.clear();\n }\n } else {\n break\n }\n o = o.right;\n }\n this.left = left;\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right;\n this.right = right;\n this.left.right = this;\n } else {\n let r;\n if (this.parentSub !== null) {\n r = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (r !== null && r.left !== null) {\n r = r.left;\n }\n } else {\n r = /** @type {AbstractType} */ (this.parent)._start\n ;/** @type {AbstractType} */ (this.parent)._start = this;\n }\n this.right = r;\n }\n if (this.right !== null) {\n this.right.left = this;\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType} */ (this.parent)._map.set(this.parentSub, this);\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction);\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType} */ (this.parent)._length += this.length;\n }\n addStruct(transaction.doc.store, this);\n this.content.integrate(transaction, this);\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType} */ (this.parent), this.parentSub);\n if ((/** @type {AbstractType} */ (this.parent)._item !== null && /** @type {AbstractType} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction);\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0);\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left;\n while (n !== null && n.deleted) {\n n = n.left;\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n if (right.keep) {\n this.keep = true;\n }\n this.right = right.right;\n if (this.right !== null) {\n this.right.left = this;\n }\n this.length += right.length;\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType} */ (this.parent);\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length;\n }\n this.markDeleted();\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length);\n setIfUndefined(transaction.changed, parent, create).add(this.parentSub);\n this.content.delete(transaction);\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw unexpectedCase()\n }\n this.content.gc(store);\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length));\n } else {\n this.content = new ContentDeleted(this.length);\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {AbstractUpdateEncoder} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin;\n const rightOrigin = this.rightOrigin;\n const parentSub = this.parentSub;\n const info = (this.content.getRef() & BITS5) |\n (origin === null ? 0 : BIT8) | // origin is defined\n (rightOrigin === null ? 0 : BIT7) | // right origin is defined\n (parentSub === null ? 0 : BIT6); // parentSub is non-null\n encoder.writeInfo(info);\n if (origin !== null) {\n encoder.writeLeftID(origin);\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin);\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType} */ (this.parent);\n const parentItem = parent._item;\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent);\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(ykey);\n } else {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parentItem.id);\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub);\n }\n }\n this.content.write(encoder, offset);\n }\n}\n\n/**\n * @param {AbstractUpdateDecoder} decoder\n * @param {number} info\n */\nconst readItemContent = (decoder, info) => contentRefs[info & BITS5](decoder);\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array}\n */\nconst contentRefs = [\n () => { throw unexpectedCase() }, // GC is not ItemContent\n readContentDeleted,\n readContentJSON,\n readContentBinary,\n readContentString,\n readContentEmbed,\n readContentFormat,\n readContentType,\n readContentAny\n];\n\nexport { AbstractConnector, AbstractStruct, AbstractType, YArray as Array, ContentAny, ContentBinary, ContentDeleted, ContentEmbed, ContentFormat, ContentJSON, ContentString, ContentType, Doc, GC, ID, Item, YMap as Map, PermanentUserData, RelativePosition, Snapshot, YText as Text, Transaction, UndoManager, YXmlElement as XmlElement, YXmlFragment as XmlFragment, YXmlHook as XmlHook, YXmlText as XmlText, YArrayEvent, YEvent, YMapEvent, YTextEvent, YXmlEvent, applyUpdate, applyUpdateV2, compareIDs, compareRelativePositions, createAbsolutePositionFromRelativePosition, createDeleteSet, createDeleteSetFromStructStore, createID, createRelativePositionFromJSON, createRelativePositionFromTypeIndex, createSnapshot, decodeSnapshot, decodeSnapshotV2, decodeStateVector, decodeStateVectorV2, emptySnapshot, encodeSnapshot, encodeSnapshotV2, encodeStateAsUpdate, encodeStateAsUpdateV2, encodeStateVector, encodeStateVectorV2, equalSnapshots, findRootTypeKey, getState, getTypeChildren, isDeleted, isParentOf, iterateDeletedStructs, logType, readRelativePosition, readUpdate, readUpdateV2, snapshot, transact, tryGc, typeListToArraySnapshot, typeMapGetSnapshot, writeRelativePosition };\n//# sourceMappingURL=yjs.mjs.map\n","/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map}\n */\nconst channels = new Map()\n\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null\n addEventListener('storage', e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') }))\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n}\n\n// Use BroadcastChannel or Polyfill\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = new Set()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n bc.onmessage = e => subs.forEach(sub => sub(e.data))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const subscribe = (room, f) => getChannel(room).subs.add(f)\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any):any} f\n */\nexport const unsubscribe = (room, f) => getChannel(room).subs.delete(f)\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n */\nexport const publish = (room, data) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data))\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map} StateMap\n */\n\n/**\n * Core Yjs defines three message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the the client is assured that\n * it received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server shoul only reply to requests, and not initiate them.\n * Therefore it is necesarry that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep1)\n const sv = Y.encodeStateVector(doc)\n encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep2)\n encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n encoding.writeVarUint(encoder, messageYjsUpdate)\n encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Will not be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc)\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin)\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin)\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n}\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nexport const createMutex = () => {\n let token = true\n return (f, g) => {\n if (token) {\n token = false\n try {\n f()\n } finally {\n token = true\n }\n } else if (g !== undefined) {\n g()\n }\n }\n}\n","/*\nUnlike stated in the LICENSE file, it is not necessary to include the copyright notice and permission notice when you copy code from this file.\n*/\n\n/**\n * @module provider/websocket\n */\n\n/* eslint-env browser */\n\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as bc from 'lib0/broadcastchannel.js'\nimport * as time from 'lib0/time.js'\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as syncProtocol from 'y-protocols/sync.js'\nimport * as authProtocol from 'y-protocols/auth.js'\nimport * as awarenessProtocol from 'y-protocols/awareness.js'\nimport * as mutex from 'lib0/mutex.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as math from 'lib0/math.js'\nimport * as url from 'lib0/url.js'\n\nconst messageSync = 0\nconst messageQueryAwareness = 3\nconst messageAwareness = 1\nconst messageAuth = 2\n\nconst reconnectTimeoutBase = 1200\nconst maxReconnectTimeout = 2500\n// @todo - this should depend on awareness.outdatedTime\nconst messageReconnectTimeout = 30000\n\n/**\n * @param {WebsocketProvider} provider\n * @param {string} reason\n */\nconst permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.\\n${reason}`)\n\n/**\n * @param {WebsocketProvider} provider\n * @param {Uint8Array} buf\n * @param {boolean} emitSynced\n * @return {encoding.Encoder}\n */\nconst readMessage = (provider, buf, emitSynced) => {\n const decoder = decoding.createDecoder(buf)\n const encoder = encoding.createEncoder()\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageSync: {\n encoding.writeVarUint(encoder, messageSync)\n const syncMessageType = syncProtocol.readSyncMessage(decoder, encoder, provider.doc, provider)\n if (emitSynced && syncMessageType === syncProtocol.messageYjsSyncStep2 && !provider.synced) {\n provider.synced = true\n }\n break\n }\n case messageQueryAwareness:\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, Array.from(provider.awareness.getStates().keys())))\n break\n case messageAwareness:\n awarenessProtocol.applyAwarenessUpdate(provider.awareness, decoding.readVarUint8Array(decoder), provider)\n break\n case messageAuth:\n authProtocol.readAuthMessage(decoder, provider.doc, permissionDeniedHandler)\n break\n default:\n console.error('Unable to compute message')\n return encoder\n }\n return encoder\n}\n\n/**\n * @param {WebsocketProvider} provider\n */\nconst setupWS = provider => {\n if (provider.shouldConnect && provider.ws === null) {\n const websocket = new provider._WS(provider.url)\n websocket.binaryType = 'arraybuffer'\n provider.ws = websocket\n provider.wsconnecting = true\n provider.wsconnected = false\n provider.synced = false\n websocket.onmessage = event => {\n provider.wsLastMessageReceived = time.getUnixTime()\n const encoder = readMessage(provider, new Uint8Array(event.data), true)\n if (encoding.length(encoder) > 1) {\n websocket.send(encoding.toUint8Array(encoder))\n }\n }\n websocket.onclose = () => {\n provider.ws = null\n provider.wsconnecting = false\n if (provider.wsconnected) {\n provider.wsconnected = false\n provider.synced = false\n // update awareness (all users left)\n awarenessProtocol.removeAwarenessStates(provider.awareness, Array.from(provider.awareness.getStates().keys()), provider)\n provider.emit('status', [{\n status: 'disconnected'\n }])\n } else {\n provider.wsUnsuccessfulReconnects++\n }\n // Start with no reconnect timeout and increase timeout by\n // log10(wsUnsuccessfulReconnects).\n // The idea is to increase reconnect timeout slowly and have no reconnect\n // timeout at the beginning (log(1) = 0)\n setTimeout(setupWS, math.min(math.log10(provider.wsUnsuccessfulReconnects + 1) * reconnectTimeoutBase, maxReconnectTimeout), provider)\n }\n websocket.onopen = () => {\n provider.wsLastMessageReceived = time.getUnixTime()\n provider.wsconnecting = false\n provider.wsconnected = true\n provider.wsUnsuccessfulReconnects = 0\n provider.emit('status', [{\n status: 'connected'\n }])\n // always send sync step 1 when connected\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, provider.doc)\n websocket.send(encoding.toUint8Array(encoder))\n // broadcast local awareness state\n if (provider.awareness.getLocalState() !== null) {\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(provider.awareness, [provider.doc.clientID]))\n websocket.send(encoding.toUint8Array(encoderAwarenessState))\n }\n }\n }\n}\n\n/**\n * @param {WebsocketProvider} provider\n * @param {ArrayBuffer} buf\n */\nconst broadcastMessage = (provider, buf) => {\n if (provider.wsconnected) {\n // @ts-ignore We know that wsconnected = true\n provider.ws.send(buf)\n }\n if (provider.bcconnected) {\n provider.mux(() => {\n bc.publish(provider.url, buf)\n })\n }\n}\n\n/**\n * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.\n * The document name is attached to the provided url. I.e. the following example\n * creates a websocket connection to http://localhost:1234/my-document-name\n *\n * @example\n * import * as Y from 'yjs'\n * import { WebsocketProvider } from 'y-websocket'\n * const doc = new Y.Doc()\n * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)\n *\n * @extends {Observable}\n */\nexport class WebsocketProvider extends Observable {\n /**\n * @param {string} serverUrl\n * @param {string} roomname\n * @param {Y.Doc} doc\n * @param {object} [opts]\n * @param {boolean} [opts.connect]\n * @param {awarenessProtocol.Awareness} [opts.awareness]\n * @param {Object} [opts.params]\n * @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill\n * @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds\n */\n constructor (serverUrl, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), params = {}, WebSocketPolyfill = WebSocket, resyncInterval = -1 } = {}) {\n super()\n // ensure that url is always ends with /\n while (serverUrl[serverUrl.length - 1] === '/') {\n serverUrl = serverUrl.slice(0, serverUrl.length - 1)\n }\n const encodedParams = url.encodeQueryParams(params)\n this.bcChannel = serverUrl + '/' + roomname\n this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '?' + encodedParams)\n this.roomname = roomname\n this.doc = doc\n this._WS = WebSocketPolyfill\n /**\n * @type {Object}\n */\n this._localAwarenessState = {}\n this.awareness = awareness\n this.wsconnected = false\n this.wsconnecting = false\n this.bcconnected = false\n this.wsUnsuccessfulReconnects = 0\n this.mux = mutex.createMutex()\n /**\n * @type {boolean}\n */\n this._synced = false\n /**\n * @type {WebSocket?}\n */\n this.ws = null\n this.wsLastMessageReceived = 0\n /**\n * Whether to connect to other peers or not\n * @type {boolean}\n */\n this.shouldConnect = connect\n\n /**\n * @type {NodeJS.Timeout | number}\n */\n this._resyncInterval = 0\n if (resyncInterval > 0) {\n this._resyncInterval = setInterval(() => {\n if (this.ws) {\n if (!this.synced) {\n alert(`\n Please report that this message was shown to https://github.com/yjs/y-websocket/issues\n\n Thank you! ❤\n\n (Sorry for showing this message..`)\n console.warn('Client was unsynced anyway')\n }\n // resend sync step 1\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, doc)\n this.ws.send(encoding.toUint8Array(encoder))\n }\n }, resyncInterval)\n }\n\n /**\n * @param {ArrayBuffer} data\n */\n this._bcSubscriber = data => {\n this.mux(() => {\n const encoder = readMessage(this, new Uint8Array(data), false)\n if (encoding.length(encoder) > 1) {\n bc.publish(this.bcChannel, encoding.toUint8Array(encoder))\n }\n })\n }\n /**\n * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)\n * @param {Uint8Array} update\n * @param {any} origin\n */\n this._updateHandler = (update, origin) => {\n if (origin !== this || origin === null) {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeUpdate(encoder, update)\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n }\n this.doc.on('update', this._updateHandler)\n /**\n * @param {any} changed\n * @param {any} origin\n */\n this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => {\n const changedClients = added.concat(updated).concat(removed)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n window.addEventListener('beforeunload', () => {\n awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload')\n })\n awareness.on('update', this._awarenessUpdateHandler)\n this._checkInterval = setInterval(() => {\n if (this.wsconnected && messageReconnectTimeout < time.getUnixTime() - this.wsLastMessageReceived) {\n // no message received in a long time - not even your own awareness\n // updates (which are updated every 15 seconds)\n /** @type {WebSocket} */ (this.ws).close()\n }\n }, messageReconnectTimeout / 10)\n if (connect) {\n this.connect()\n }\n }\n\n /**\n * @type {boolean}\n */\n get synced () {\n return this._synced\n }\n\n set synced (state) {\n if (this._synced !== state) {\n this._synced = state\n this.emit('sync', [state])\n }\n }\n\n destroy () {\n if (this._resyncInterval !== 0) {\n clearInterval(/** @type {NodeJS.Timeout} */ (this._resyncInterval))\n }\n clearInterval(this._checkInterval)\n this.disconnect()\n this.awareness.off('update', this._awarenessUpdateHandler)\n this.doc.off('update', this._updateHandler)\n super.destroy()\n }\n\n connectBc () {\n if (!this.bcconnected) {\n bc.subscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = true\n }\n // send sync step1 to bc\n this.mux(() => {\n // write sync step 1\n const encoderSync = encoding.createEncoder()\n encoding.writeVarUint(encoderSync, messageSync)\n syncProtocol.writeSyncStep1(encoderSync, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderSync))\n // broadcast local state\n const encoderState = encoding.createEncoder()\n encoding.writeVarUint(encoderState, messageSync)\n syncProtocol.writeSyncStep2(encoderState, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderState))\n // write queryAwareness\n const encoderAwarenessQuery = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessQuery))\n // broadcast local awareness state\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID]))\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessState))\n })\n }\n\n disconnectBc () {\n // broadcast message with local awareness state set to null (indicating disconnect)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map()))\n broadcastMessage(this, encoding.toUint8Array(encoder))\n if (this.bcconnected) {\n bc.unsubscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = false\n }\n }\n\n disconnect () {\n this.shouldConnect = false\n this.disconnectBc()\n if (this.ws !== null) {\n this.ws.close()\n }\n }\n\n connect () {\n this.shouldConnect = true\n if (!this.wsconnected && this.ws === null) {\n setupWS(this)\n this.connectBc()\n }\n }\n}\n","\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\n\nexport const messagePermissionDenied = 0\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {string} reason\n */\nexport const writePermissionDenied = (encoder, reason) => {\n encoding.writeVarUint(encoder, messagePermissionDenied)\n encoding.writeVarString(encoder, reason)\n}\n\n/**\n * @callback PermissionDeniedHandler\n * @param {any} y\n * @param {string} reason\n */\n\n/**\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} y\n * @param {PermissionDeniedHandler} permissionDeniedHandler\n */\nexport const readAuthMessage = (decoder, y, permissionDeniedHandler) => {\n switch (decoding.readVarUint(decoder)) {\n case messagePermissionDenied: permissionDeniedHandler(y, decoding.readVarString(decoder))\n }\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (var i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding.js'\nimport * as decoding from 'lib0/decoding.js'\nimport * as time from 'lib0/time.js'\nimport * as math from 'lib0/math.js'\nimport { Observable } from 'lib0/observable.js'\nimport * as f from 'lib0/function.js'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map()\n /**\n * @type {Map}\n */\n this.meta = new Map()\n this._checkInterval = setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(doc.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== doc.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n destroy () {\n super.destroy()\n clearInterval(this._checkInterval)\n }\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.doc.clientID) || null\n }\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.doc.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n state[field] = value\n this.setLocalState(state)\n }\n }\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.doc.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.doc.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * @module bindings/quill\n */\n\nimport { createMutex } from 'lib0/mutex.js'\nimport * as Y from 'yjs' // eslint-disable-line\nimport { Awareness } from 'y-protocols/awareness.js' // eslint-disable-line\n\n/**\n * Removes the pending '\\n's if it has no attributes.\n */\nexport const normQuillDelta = delta => {\n if (delta.length > 0) {\n const d = delta[delta.length - 1]\n const insert = d.insert\n if (d.attributes === undefined && insert !== undefined && insert.slice(-1) === '\\n') {\n delta = delta.slice()\n let ins = insert.slice(0, -1)\n while (ins.slice(-1) === '\\n') {\n ins = ins.slice(0, -1)\n }\n delta[delta.length - 1] = { insert: ins }\n if (ins.length === 0) {\n delta.pop()\n }\n return delta\n }\n }\n return delta\n}\n\n/**\n * @param {any} quillCursors\n */\nconst updateCursor = (quillCursors, aw, clientId, doc, type) => {\n try {\n if (aw && aw.cursor && clientId !== doc.clientID) {\n const user = aw.user || {}\n const color = user.color || '#ffa500'\n const name = user.name || `User: ${clientId}`\n quillCursors.createCursor(clientId.toString(), name, color)\n const anchor = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.anchor), doc)\n const head = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(aw.cursor.head), doc)\n if (anchor && head && anchor.type === type) {\n quillCursors.moveCursor(clientId.toString(), { index: anchor.index, length: head.index - anchor.index })\n }\n } else {\n quillCursors.removeCursor(clientId.toString())\n }\n } catch (err) {\n console.error(err)\n }\n}\n\nexport class QuillBinding {\n /**\n * @param {Y.Text} type\n * @param {any} quill\n * @param {Awareness} [awareness]\n */\n constructor (type, quill, awareness) {\n const mux = createMutex()\n const doc = /** @type {Y.Doc} */ (type.doc)\n this.mux = mux\n this.type = type\n this.doc = doc\n this.quill = quill\n const quillCursors = quill.getModule('cursors') || null\n this.quillCursors = quillCursors\n // This object contains all attributes used in the quill instance\n this._negatedUsedFormats = {}\n this.awareness = awareness\n this._awarenessChange = ({ added, removed, updated }) => {\n const states = /** @type {Awareness} */ (awareness).getStates()\n added.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n updated.forEach(id => {\n updateCursor(quillCursors, states.get(id), id, doc, type)\n })\n removed.forEach(id => {\n quillCursors.removeCursor(id.toString())\n })\n }\n this._typeObserver = event => {\n mux(() => {\n const eventDelta = event.delta\n // We always explicitly set attributes, otherwise concurrent edits may\n // result in quill assuming that a text insertion shall inherit existing\n // attributes.\n const delta = []\n for (let i = 0; i < eventDelta.length; i++) {\n const d = eventDelta[i]\n if (d.insert !== undefined) {\n delta.push(Object.assign({}, d, { attributes: Object.assign({}, this._negatedUsedFormats, d.attributes || {}) }))\n } else {\n delta.push(d)\n }\n }\n quill.updateContents(delta, 'yjs')\n })\n }\n type.observe(this._typeObserver)\n this._quillObserver = (eventType, delta) => {\n if (delta && delta.ops) {\n // update content\n const ops = delta.ops\n ops.forEach(op => {\n if (op.attributes !== undefined) {\n for (let key in op.attributes) {\n if (this._negatedUsedFormats[key] === undefined) {\n this._negatedUsedFormats[key] = false\n }\n }\n }\n })\n mux(() => {\n type.applyDelta(ops)\n })\n }\n // always check selection\n if (awareness && quillCursors) {\n const sel = quill.getSelection()\n const aw = /** @type {any} */ (awareness.getLocalState())\n if (sel === null) {\n if (awareness.getLocalState() !== null) {\n awareness.setLocalStateField('cursor', /** @type {any} */ (null))\n }\n } else {\n const anchor = Y.createRelativePositionFromTypeIndex(type, sel.index)\n const head = Y.createRelativePositionFromTypeIndex(type, sel.index + sel.length)\n if (!aw || !aw.cursor || !Y.compareRelativePositions(anchor, aw.cursor.anchor) || !Y.compareRelativePositions(head, aw.cursor.head)) {\n awareness.setLocalStateField('cursor', {\n anchor,\n head\n })\n }\n }\n // update all remote cursor locations\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n }\n }\n quill.on('editor-change', this._quillObserver)\n mux(() => {\n // This indirectly initializes _negatedUsedFormats.\n // Make sure that this call this after the _quillObserver is set.\n quill.setContents(type.toDelta())\n })\n // init remote cursors\n if (quillCursors !== null && awareness) {\n awareness.getStates().forEach((aw, clientId) => {\n updateCursor(quillCursors, aw, clientId, doc, type)\n })\n awareness.on('change', this._awarenessChange)\n }\n }\n destroy () {\n this.type.unobserve(this._typeObserver)\n this.quill.off(this._quillObserver)\n if (this.awareness) {\n this.awareness.off('change', this._awarenessChange)\n }\n }\n}\n","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe\n\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","/**!\n* tippy.js v6.2.7\n* (c) 2017-2020 atomiks\n* MIT License\n*/\nimport { createPopper } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0];\n\n return element ? element.ownerDocument || document : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar ua = isBrowser ? navigator.userAgent : '';\nvar isIE = /MSIE |Trident\\//.test(ua);\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: function appendTo() {\n return document.body;\n },\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, {}, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, {}, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function (event) {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles() {\n popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(void 0, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n } // Clicked on interactive popper\n\n\n if (instance.props.interactive && popper.contains(event.target)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (getCurrentTarget().contains(event.target)) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper
    or tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. ) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance);\n instance.state.isMounted = true;\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles();\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n }\n\n enableInstances(false);\n setReferences();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onTrigger: function onTrigger(instance, event) {\n var target = event.currentTarget;\n var index = references.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n instance.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n return target.getBoundingClientRect();\n }\n }));\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: references\n }));\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: references\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({}, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (placement !== state.placement) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n cursorRectIndex = rects.indexOf(cursorRect);\n }\n },\n onUntrigger: function onUntrigger() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = /** @class */ (function () {\n function Positioning() {\n }\n Positioning.prototype.getAllStyles = function (element) { return window.getComputedStyle(element); };\n Positioning.prototype.getStyle = function (element, prop) { return this.getAllStyles(element)[prop]; };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) { round = true; }\n var elPosition;\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) { round = true; }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var _a = placement.split('-'), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var marginTop = parseFloat(targetElStyles.marginTop);\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n var marginRight = parseFloat(targetElStyles.marginRight);\n var topPosition = 0;\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n var targetElBCR = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\nexport { Positioning };\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n var classList = targetElement.classList;\n var addClassesToTarget = function (targetPlacement) {\n var _a = targetPlacement.split('-'), primary = _a[0], secondary = _a[1];\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); });\n }\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n var testPlacement;\n var isInViewport = false;\n for (var _i = 0, placementVals_1 = placementVals; _i < placementVals_1.length; _i++) {\n testPlacement = placementVals_1[_i];\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n//# sourceMappingURL=positioning.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { positionElements } from 'positioning';\r\nvar QuillEvents;\r\n(function (QuillEvents) {\r\n QuillEvents[\"EDITOR_CHANGE\"] = \"editor-change\";\r\n QuillEvents[\"SCROLL_BEFORE_UPDATE\"] = \"scroll-before-update\";\r\n QuillEvents[\"SCROLL_BLOT_MOUNT\"] = \"scroll-blot-mount\";\r\n QuillEvents[\"SCROLL_BLOT_UNMOUNT\"] = \"scroll-blot-unmount\";\r\n QuillEvents[\"SCROLL_OPTIMIZE\"] = \"scroll-optimize\";\r\n QuillEvents[\"SCROLL_UPDATE\"] = \"scroll-update\";\r\n QuillEvents[\"SELECTION_CHANGE\"] = \"selection-change\";\r\n QuillEvents[\"TEXT_CHANGE\"] = \"text-change\";\r\n})(QuillEvents || (QuillEvents = {}));\r\nvar QuillSources;\r\n(function (QuillSources) {\r\n QuillSources[\"API\"] = \"api\";\r\n QuillSources[\"SILENT\"] = \"silent\";\r\n QuillSources[\"USER\"] = \"user\";\r\n})(QuillSources || (QuillSources = {}));\r\nvar DEFAULT_PLACEMENT = [\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top-left',\r\n 'top-right',\r\n 'auto',\r\n];\r\nvar iconAddColRight = '';\r\nvar iconAddColLeft = '';\r\nvar iconAddRowAbove = '';\r\nvar iconAddRowBelow = '';\r\nvar iconRemoveCol = '';\r\nvar iconRemoveRow = '';\r\nvar iconRemoveTable = '';\r\nvar TableUI = /** @class */ (function () {\r\n function TableUI(quill, options) {\r\n var _this = this;\r\n this.TOGGLE_TEMPLATE = \"\";\r\n this.DEFAULTS = {\r\n maxRowCount: -1,\r\n };\r\n this.menuItems = [\r\n {\r\n title: 'Sağa sütun ekle',\r\n icon: iconAddColRight,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnRight();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Sola sütün ekle',\r\n icon: iconAddColLeft,\r\n handler: function () {\r\n if (!(_this.options.maxRowCount > 0) ||\r\n _this.getColCount() < _this.options.maxRowCount) {\r\n _this.table.insertColumnLeft();\r\n }\r\n },\r\n },\r\n {\r\n title: 'Aşağı satır ekle',\r\n icon: iconAddRowAbove,\r\n handler: function () {\r\n _this.table.insertRowAbove();\r\n },\r\n },\r\n {\r\n title: 'Yukarı satır ekle',\r\n icon: iconAddRowBelow,\r\n handler: function () {\r\n _this.table.insertRowBelow();\r\n },\r\n },\r\n {\r\n title: 'Sütunu sil',\r\n icon: iconRemoveCol,\r\n handler: function () {\r\n _this.table.deleteColumn();\r\n },\r\n },\r\n {\r\n title: 'Satırı sil',\r\n icon: iconRemoveRow,\r\n handler: function () {\r\n _this.table.deleteRow();\r\n },\r\n },\r\n {\r\n title: 'Tabloyu sil',\r\n icon: iconRemoveTable,\r\n handler: function () {\r\n _this.table.deleteTable();\r\n },\r\n },\r\n ];\r\n this.editorChangeHandler = function (type, range, oldRange, source) {\r\n if (type === QuillEvents.SELECTION_CHANGE) {\r\n _this.detectButton(range);\r\n }\r\n };\r\n this.contextMenuHandler = function (evt) {\r\n if (!_this.isTable()) {\r\n return true;\r\n }\r\n evt.preventDefault();\r\n _this.showMenu();\r\n };\r\n this.toggleClickHandler = function (e) {\r\n _this.toggleMenu();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n this.docClickHandler = function () { return _this.hideMenu; };\r\n this.quill = quill;\r\n this.options = __assign(__assign({}, this.DEFAULTS), options);\r\n this.table = quill.getModule('table');\r\n if (!this.table) {\r\n console.error('\"table\" module not found');\r\n return;\r\n }\r\n this.toggle = quill.addContainer('ql-table-toggle');\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n this.toggle.innerHTML = this.TOGGLE_TEMPLATE;\r\n this.toggle.addEventListener('click', this.toggleClickHandler);\r\n this.quill.on(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.addEventListener('contextmenu', this.contextMenuHandler);\r\n }\r\n TableUI.prototype.isTable = function (range) {\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return false;\r\n }\r\n var formats = this.quill.getFormat(range.index);\r\n return !!(formats['table'] && !range.length);\r\n };\r\n TableUI.prototype.getColCount = function (range) {\r\n if (range === void 0) { range = null; }\r\n if (!range) {\r\n range = this.quill.getSelection();\r\n }\r\n if (!range) {\r\n return 0;\r\n }\r\n var table = this.table.getTable(range)[0];\r\n if (!table) {\r\n return 0;\r\n }\r\n var maxColumns = table.rows().reduce(function (max, row) {\r\n return Math.max(row.children.length, max);\r\n }, 0);\r\n return maxColumns;\r\n };\r\n TableUI.prototype.showMenu = function () {\r\n var _this = this;\r\n this.hideMenu();\r\n this.menu = this.quill.addContainer('ql-table-menu');\r\n this.menuItems.forEach(function (it) {\r\n _this.menu.appendChild(_this.createMenuItem(it));\r\n });\r\n positionElements(this.toggle, this.menu, DEFAULT_PLACEMENT, false);\r\n document.addEventListener('click', this.docClickHandler);\r\n };\r\n TableUI.prototype.hideMenu = function () {\r\n if (this.menu) {\r\n this.menu.remove();\r\n this.menu = null;\r\n document.removeEventListener('click', this.docClickHandler);\r\n }\r\n };\r\n TableUI.prototype.createMenuItem = function (item) {\r\n var _this = this;\r\n var node = document.createElement('div');\r\n node.classList.add('ql-table-menu__item');\r\n var iconSpan = document.createElement('span');\r\n iconSpan.classList.add('ql-table-menu__item-icon');\r\n iconSpan.innerHTML = item.icon;\r\n var textSpan = document.createElement('span');\r\n textSpan.classList.add('ql-table-menu__item-text');\r\n textSpan.innerText = item.title;\r\n node.appendChild(iconSpan);\r\n node.appendChild(textSpan);\r\n node.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n _this.quill.focus();\r\n item.handler();\r\n _this.hideMenu();\r\n _this.detectButton(_this.quill.getSelection());\r\n }, false);\r\n return node;\r\n };\r\n TableUI.prototype.detectButton = function (range) {\r\n if (range == null) {\r\n return;\r\n }\r\n var show = this.isTable(range);\r\n if (show) {\r\n var _a = this.quill.getLine(range.index), cell = _a[0], offset = _a[1];\r\n var containerBounds = this.quill.container.getBoundingClientRect();\r\n var bounds = cell.domNode.getBoundingClientRect();\r\n bounds = {\r\n bottom: bounds.bottom - containerBounds.top,\r\n height: bounds.height,\r\n left: bounds.left - containerBounds.left,\r\n right: bounds.right - containerBounds.left,\r\n top: bounds.top - containerBounds.top,\r\n width: bounds.width,\r\n };\r\n this.showToggle(bounds);\r\n }\r\n else {\r\n this.hideToggle();\r\n this.hideMenu();\r\n }\r\n };\r\n TableUI.prototype.showToggle = function (position) {\r\n this.position = position;\r\n this.toggle.classList.remove('ql-table-toggle_hidden');\r\n this.toggle.style.top = position.top + \"px\";\r\n this.toggle.style.left = position.left + \"px\";\r\n };\r\n TableUI.prototype.hideToggle = function () {\r\n this.toggle.classList.add('ql-table-toggle_hidden');\r\n };\r\n TableUI.prototype.toggleMenu = function () {\r\n if (this.menu) {\r\n this.hideToggle();\r\n }\r\n else {\r\n this.showMenu();\r\n }\r\n };\r\n TableUI.prototype.destroy = function () {\r\n this.hideMenu();\r\n this.quill.off(QuillEvents.EDITOR_CHANGE, this.editorChangeHandler);\r\n this.quill.root.removeEventListener('contextmenu', this.contextMenuHandler);\r\n this.toggle.removeEventListener('click', this.toggleClickHandler);\r\n this.toggle.remove();\r\n this.toggle = null;\r\n this.options = this.DEFAULTS;\r\n this.menu = null;\r\n this.table = null;\r\n this.quill = null;\r\n };\r\n return TableUI;\r\n}());\r\nexport default TableUI;\r\n//# sourceMappingURL=index.js.map","import * as Y from 'yjs'\nimport {\n WebsocketProvider\n} from 'y-websocket'\nimport {\n QuillBinding\n} from 'y-quill'\nimport Quill from 'quill'\nimport QuillCursors from 'quill-cursors'\nimport tippy from 'tippy.js';\nimport * as QuillTableUI from 'quill-table-ui'\nimport MagicUrl from 'quill-magic-url'\nimport { ImageDrop } from 'quill-image-drop-module'\nimport BlotFormatter from 'quill-blot-formatter'\n\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageDrop', ImageDrop)\nQuill.register('modules/magicUrl', MagicUrl);\nQuill.register('modules/cursors', QuillCursors)\nQuill.register({\n 'modules/tableUI': QuillTableUI.default\n}, true)\n\nwindow.addEventListener('load', () => {\n const ydoc = new Y.Doc()\n var provider = new WebsocketProvider('ws://localhost:9000', documentUUID, ydoc)\n const type = ydoc.getText(documentUUID)\n\n let editor = new Quill('#full-container .editor', {\n bounds: '#full-container .editor',\n modules: {\n 'cursors': true,\n 'syntax': true,\n 'toolbar': { container: '.toolbar' },\n 'table': true,\n 'tableUI': true,\n 'magicUrl': true,\n 'imageDrop': true,\n 'blotFormatter': {}\n },\n\n theme: 'snow'\n });\n\n editorInstance = editor\n providerInstance = provider\n\n const binding = new QuillBinding(type, editor, provider.awareness)\n\n provider.awareness.setLocalStateField('user', {\n name: divergent_name,\n color: divergent_color\n })\n\n tippy('.ql-bold', {\n content: 'Kalın'\n })\n tippy('.ql-italic', {\n content: 'Eğik'\n })\n tippy('.ql-underline', {\n content: 'Altı Çizili'\n })\n tippy('.ql-strike', {\n content: 'Üstü Çizili'\n })\n tippy('.ql-blockquote', {\n content: 'Alıntı'\n })\n tippy('.ql-code-block', {\n content: 'Kod Bloğu'\n })\n tippy('[value=\"ordered\"]', {\n content: 'Sıralı Liste'\n })\n tippy('[value=\"bullet\"]', {\n content: 'Liste'\n })\n tippy('[value=\"+1\"]', {\n content: 'İçe Adım'\n })\n tippy('[value=\"-1\"]', {\n content: 'Dışa Adım'\n })\n tippy('.ql-link', {\n content: 'Link'\n })\n tippy('.ql-image', {\n content: 'Resim'\n })\n tippy('.ql-clean', {\n content: 'Biçimlendirmeyi Temizle'\n })\n\n\n // Auto-save AJAX\n let save = () => {\n $.ajax(saveRoute, {\n type: 'POST',\n data: {\n '_token': csrfToken,\n 'data': $(\".ql-editor\").html()\n },\n success: function (data, status, xhr) {\n //console.log('status: ' + status + ', data: ' + data);\n },\n error: function (jqXhr, textStatus, errorMessage) {\n clearInterval(saveLoop);\n console.log('Error' + errorMessage);\n }\n })\n }\n\n let saveLoop = setInterval(() => {\n save()\n }, 9999999)\n\n let checker = false;\n\n $(\".editor\").keypress(function () {\n if (!checker) {\n clearInterval(saveLoop)\n saveLoop = setInterval(() => {\n save()\n }, 8000)\n checker = true\n }\n\n })\n})\n\n","/**\n * Custom module for quilljs to allow user to drag images from their file system into the editor\n * and paste images from clipboard (Works on Chrome, Firefox, Edge, not on Safari)\n * @see https://quilljs.com/blog/building-a-custom-module/\n */\nexport class ImageDrop {\n\n\t/**\n\t * Instantiate the module given a quill instance and any options\n\t * @param {Quill} quill\n\t * @param {Object} options\n\t */\n\tconstructor(quill, options = {}) {\n\t\t// save the quill reference\n\t\tthis.quill = quill;\n\t\t// bind handlers to this instance\n\t\tthis.handleDrop = this.handleDrop.bind(this);\n\t\tthis.handlePaste = this.handlePaste.bind(this);\n\t\t// listen for drop and paste events\n\t\tthis.quill.root.addEventListener('drop', this.handleDrop, false);\n\t\tthis.quill.root.addEventListener('paste', this.handlePaste, false);\n\t}\n\n\t/**\n\t * Handler for drop event to read dropped files from evt.dataTransfer\n\t * @param {Event} evt\n\t */\n\thandleDrop(evt) {\n\t\tevt.preventDefault();\n\t\tif (evt.dataTransfer && evt.dataTransfer.files && evt.dataTransfer.files.length) {\n\t\t\tif (document.caretRangeFromPoint) {\n\t\t\t\tconst selection = document.getSelection();\n\t\t\t\tconst range = document.caretRangeFromPoint(evt.clientX, evt.clientY);\n\t\t\t\tif (selection && range) {\n\t\t\t\t\tselection.setBaseAndExtent(range.startContainer, range.startOffset, range.startContainer, range.startOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.readFiles(evt.dataTransfer.files, this.insert.bind(this));\n\t\t}\n\t}\n\n\t/**\n\t * Handler for paste event to read pasted files from evt.clipboardData\n\t * @param {Event} evt\n\t */\n\thandlePaste(evt) {\n\t\tif (evt.clipboardData && evt.clipboardData.items && evt.clipboardData.items.length) {\n\t\t\tthis.readFiles(evt.clipboardData.items, dataUrl => {\n\t\t\t\tconst selection = this.quill.getSelection();\n\t\t\t\tif (selection) {\n\t\t\t\t\t// we must be in a browser that supports pasting (like Firefox)\n\t\t\t\t\t// so it has already been placed into the editor\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// otherwise we wait until after the paste when this.quill.getSelection()\n\t\t\t\t\t// will return a valid index\n\t\t\t\t\tsetTimeout(() => this.insert(dataUrl), 0);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Insert the image into the document at the current cursor position\n\t * @param {String} dataUrl The base64-encoded image URI\n\t */\n\tinsert(dataUrl) {\n\t\tconst index = (this.quill.getSelection() || {}).index || this.quill.getLength();\n\t\tthis.quill.insertEmbed(index, 'image', dataUrl, 'user');\n\t}\n\n\t/**\n\t * Extract image URIs a list of files from evt.dataTransfer or evt.clipboardData\n\t * @param {File[]} files One or more File objects\n\t * @param {Function} callback A function to send each data URI to\n\t */\n\treadFiles(files, callback) {\n\t\t// check each file for an image\n\t\t[].forEach.call(files, file => {\n\t\t\tif (!file.type.match(/^image\\/(gif|jpe?g|a?png|svg|webp|bmp|vnd\\.microsoft\\.icon)/i)) {\n\t\t\t\t// file is not an image\n\t\t\t\t// Note that some file formats such as psd start with image/* but are not readable\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// set up file reader\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = (evt) => {\n\t\t\t\tcallback(evt.target.result);\n\t\t\t};\n\t\t\t// read the clipboard item or file\n\t\t\tconst blob = file.getAsFile ? file.getAsFile() : file;\n\t\t\tif (blob instanceof Blob) {\n\t\t\t\treader.readAsDataURL(blob);\n\t\t\t}\n\t\t});\n\t}\n\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/public/editor/quill.css b/server/public/editor/quill.css new file mode 100644 index 0000000..e105bb4 --- /dev/null +++ b/server/public/editor/quill.css @@ -0,0 +1,1631 @@ +/*! + * Quill Editor v1.3.7 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ + +.ql-container.ql-disabled .ql-tooltip { + visibility: hidden; +} + +.ql-container.ql-disabled .ql-editor ul[data-checked]>li::before { + pointer-events: none; +} + +.ql-clipboard { + left: -100000px; + height: 1px; + overflow-y: hidden; + position: absolute; + top: 50%; +} + +.ql-clipboard p { + margin: 0; + padding: 0; +} + +.ql-editor { + box-sizing: border-box; + line-height: 1.42; + height: 100%; + outline: none; + overflow-y: auto; + padding: 12px 15px; + tab-size: 4; + -moz-tab-size: 4; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word; +} + +.ql-editor>* { + cursor: text; +} + +.ql-editor p, +.ql-editor ol, +.ql-editor ul, +.ql-editor pre, +.ql-editor blockquote, +.ql-editor h1, +.ql-editor h2, +.ql-editor h3, +.ql-editor h4, +.ql-editor h5, +.ql-editor h6 { + margin: 0; + padding: 0; + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol, +.ql-editor ul { + padding-left: 1.5em; +} + +.ql-editor ol>li, +.ql-editor ul>li { + list-style-type: none; +} + +.ql-editor ul>li::before { + content: '\2022'; +} + +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} + +.ql-editor ul[data-checked=true]>li *, +.ql-editor ul[data-checked=false]>li * { + pointer-events: all; +} + +.ql-editor ul[data-checked=true]>li::before, +.ql-editor ul[data-checked=false]>li::before { + color: #777; + cursor: pointer; + pointer-events: all; +} + +.ql-editor ul[data-checked=true]>li::before { + content: '\2611'; +} + +.ql-editor ul[data-checked=false]>li::before { + content: '\2610'; +} + +.ql-editor li::before { + display: inline-block; + white-space: nowrap; + width: 1.2em; +} + +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} + +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} + +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} + +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 1.5em; +} + +.ql-editor ol li { + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; + counter-increment: list-0; +} + +.ql-editor ol li:before { + content: counter(list-0, decimal) '. '; +} + +.ql-editor ol li.ql-indent-1 { + counter-increment: list-1; +} + +.ql-editor ol li.ql-indent-1:before { + content: counter(list-1, lower-alpha) '. '; +} + +.ql-editor ol li.ql-indent-1 { + counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-2 { + counter-increment: list-2; +} + +.ql-editor ol li.ql-indent-2:before { + content: counter(list-2, lower-roman) '. '; +} + +.ql-editor ol li.ql-indent-2 { + counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-3 { + counter-increment: list-3; +} + +.ql-editor ol li.ql-indent-3:before { + content: counter(list-3, decimal) '. '; +} + +.ql-editor ol li.ql-indent-3 { + counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-4 { + counter-increment: list-4; +} + +.ql-editor ol li.ql-indent-4:before { + content: counter(list-4, lower-alpha) '. '; +} + +.ql-editor ol li.ql-indent-4 { + counter-reset: list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-5 { + counter-increment: list-5; +} + +.ql-editor ol li.ql-indent-5:before { + content: counter(list-5, lower-roman) '. '; +} + +.ql-editor ol li.ql-indent-5 { + counter-reset: list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-6 { + counter-increment: list-6; +} + +.ql-editor ol li.ql-indent-6:before { + content: counter(list-6, decimal) '. '; +} + +.ql-editor ol li.ql-indent-6 { + counter-reset: list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-7 { + counter-increment: list-7; +} + +.ql-editor ol li.ql-indent-7:before { + content: counter(list-7, lower-alpha) '. '; +} + +.ql-editor ol li.ql-indent-7 { + counter-reset: list-8 list-9; +} + +.ql-editor ol li.ql-indent-8 { + counter-increment: list-8; +} + +.ql-editor ol li.ql-indent-8:before { + content: counter(list-8, lower-roman) '. '; +} + +.ql-editor ol li.ql-indent-8 { + counter-reset: list-9; +} + +.ql-editor ol li.ql-indent-9 { + counter-increment: list-9; +} + +.ql-editor ol li.ql-indent-9:before { + content: counter(list-9, decimal) '. '; +} + +.ql-editor .ql-indent-1:not(.ql-direction-rtl) { + padding-left: 3em; +} + +.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { + padding-left: 4.5em; +} + +.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 3em; +} + +.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 4.5em; +} + +.ql-editor .ql-indent-2:not(.ql-direction-rtl) { + padding-left: 6em; +} + +.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { + padding-left: 7.5em; +} + +.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 6em; +} + +.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 7.5em; +} + +.ql-editor .ql-indent-3:not(.ql-direction-rtl) { + padding-left: 9em; +} + +.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { + padding-left: 10.5em; +} + +.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 9em; +} + +.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 10.5em; +} + +.ql-editor .ql-indent-4:not(.ql-direction-rtl) { + padding-left: 12em; +} + +.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { + padding-left: 13.5em; +} + +.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 12em; +} + +.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 13.5em; +} + +.ql-editor .ql-indent-5:not(.ql-direction-rtl) { + padding-left: 15em; +} + +.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { + padding-left: 16.5em; +} + +.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 15em; +} + +.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 16.5em; +} + +.ql-editor .ql-indent-6:not(.ql-direction-rtl) { + padding-left: 18em; +} + +.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { + padding-left: 19.5em; +} + +.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 18em; +} + +.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 19.5em; +} + +.ql-editor .ql-indent-7:not(.ql-direction-rtl) { + padding-left: 21em; +} + +.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { + padding-left: 22.5em; +} + +.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 21em; +} + +.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 22.5em; +} + +.ql-editor .ql-indent-8:not(.ql-direction-rtl) { + padding-left: 24em; +} + +.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { + padding-left: 25.5em; +} + +.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 24em; +} + +.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 25.5em; +} + +.ql-editor .ql-indent-9:not(.ql-direction-rtl) { + padding-left: 27em; +} + +.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { + padding-left: 28.5em; +} + +.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 27em; +} + +.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 28.5em; +} + +.ql-editor .ql-video { + display: block; + max-width: 100%; +} + +.ql-editor .ql-video.ql-align-center { + margin: 0 auto; +} + +.ql-editor .ql-video.ql-align-right { + margin: 0 0 0 auto; +} + +.ql-editor .ql-bg-black { + background-color: #000; +} + +.ql-editor .ql-bg-red { + background-color: #e60000; +} + +.ql-editor .ql-bg-orange { + background-color: #f90; +} + +.ql-editor .ql-bg-yellow { + background-color: #ff0; +} + +.ql-editor .ql-bg-green { + background-color: #008a00; +} + +.ql-editor .ql-bg-blue { + background-color: #06c; +} + +.ql-editor .ql-bg-purple { + background-color: #93f; +} + +.ql-editor .ql-color-white { + color: #fff; +} + +.ql-editor .ql-color-red { + color: #e60000; +} + +.ql-editor .ql-color-orange { + color: #f90; +} + +.ql-editor .ql-color-yellow { + color: #ff0; +} + +.ql-editor .ql-color-green { + color: #008a00; +} + +.ql-editor .ql-color-blue { + color: #06c; +} + +.ql-editor .ql-color-purple { + color: #93f; +} + +.ql-editor .ql-font-serif { + font-family: Georgia, Times New Roman, serif; +} + +.ql-editor .ql-font-monospace { + font-family: Monaco, Courier New, monospace; +} + +.ql-editor .ql-size-small { + font-size: 0.75em; +} + +.ql-editor .ql-size-large { + font-size: 1.5em; +} + +.ql-editor .ql-size-huge { + font-size: 2.5em; +} + +.ql-editor .ql-direction-rtl { + direction: rtl; + text-align: inherit; +} + +.ql-editor .ql-align-center { + text-align: center; +} + +.ql-editor .ql-align-justify { + text-align: justify; +} + +.ql-editor .ql-align-right { + text-align: right; +} + +.ql-editor.ql-blank::before { + color: rgba(0, 0, 0, 0.6); + content: attr(data-placeholder); + font-style: italic; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} + +.ql-snow.ql-toolbar:after, +.ql-snow .ql-toolbar:after { + clear: both; + content: ''; + display: table; +} + +.ql-snow.ql-toolbar button, +.ql-snow .ql-toolbar button { + background: none; + border: none; + cursor: pointer; + display: inline-block; + float: left; + height: 28px; + padding: 3px 5px; + width: 32px; +} + +.ql-snow.ql-toolbar button svg, +.ql-snow .ql-toolbar button svg { + float: left; + height: 100%; +} + +.ql-snow.ql-toolbar button:active:hover, +.ql-snow .ql-toolbar button:active:hover { + outline: none; +} + +.ql-snow.ql-toolbar input.ql-image[type=file], +.ql-snow .ql-toolbar input.ql-image[type=file] { + display: none; +} + +.ql-snow.ql-toolbar button:hover, +.ql-snow .ql-toolbar button:hover, +.ql-snow.ql-toolbar button:focus, +.ql-snow .ql-toolbar button:focus, +.ql-snow.ql-toolbar button.ql-active, +.ql-snow .ql-toolbar button.ql-active, +.ql-snow.ql-toolbar .ql-picker-label:hover, +.ql-snow .ql-toolbar .ql-picker-label:hover, +.ql-snow.ql-toolbar .ql-picker-label.ql-active, +.ql-snow .ql-toolbar .ql-picker-label.ql-active, +.ql-snow.ql-toolbar .ql-picker-item:hover, +.ql-snow .ql-toolbar .ql-picker-item:hover, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected { + color: #06c; +} + +.ql-snow.ql-toolbar button:hover .ql-fill, +.ql-snow .ql-toolbar button:hover .ql-fill, +.ql-snow.ql-toolbar button:focus .ql-fill, +.ql-snow .ql-toolbar button:focus .ql-fill, +.ql-snow.ql-toolbar button.ql-active .ql-fill, +.ql-snow .ql-toolbar button.ql-active .ql-fill, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { + fill: #06c; +} + +.ql-snow.ql-toolbar button:hover .ql-stroke, +.ql-snow .ql-toolbar button:hover .ql-stroke, +.ql-snow.ql-toolbar button:focus .ql-stroke, +.ql-snow .ql-toolbar button:focus .ql-stroke, +.ql-snow.ql-toolbar button.ql-active .ql-stroke, +.ql-snow .ql-toolbar button.ql-active .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-snow.ql-toolbar button:hover .ql-stroke-miter, +.ql-snow .ql-toolbar button:hover .ql-stroke-miter, +.ql-snow.ql-toolbar button:focus .ql-stroke-miter, +.ql-snow .ql-toolbar button:focus .ql-stroke-miter, +.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, +.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { + stroke: #06c; +} + +@media (pointer: coarse) { + + .ql-snow.ql-toolbar button:hover:not(.ql-active), + .ql-snow .ql-toolbar button:hover:not(.ql-active) { + color: #444; + } + + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #444; + } + + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #444; + } +} + +.ql-snow { + box-sizing: border-box; +} + +.ql-snow * { + box-sizing: border-box; +} + +.ql-snow .ql-hidden { + display: none; +} + +.ql-snow .ql-out-bottom, +.ql-snow .ql-out-top { + visibility: hidden; +} + +.ql-snow .ql-tooltip { + position: absolute; + transform: translateY(10px); +} + +.ql-snow .ql-tooltip a { + cursor: pointer; + text-decoration: none; +} + +.ql-snow .ql-tooltip.ql-flip { + transform: translateY(-10px); +} + +.ql-snow .ql-formats { + display: inline-block; + vertical-align: middle; +} + +.ql-snow .ql-formats:after { + clear: both; + content: ''; + display: table; +} + +.ql-snow .ql-stroke { + fill: none; + stroke: #444; + stroke-linecap: round; + stroke-linejoin: round; + stroke-width: 2; +} + +.ql-snow .ql-stroke-miter { + fill: none; + stroke: #444; + stroke-miterlimit: 10; + stroke-width: 2; +} + +.ql-snow .ql-fill, +.ql-snow .ql-stroke.ql-fill { + fill: #444; +} + +.ql-snow .ql-empty { + fill: none; +} + +.ql-snow .ql-even { + fill-rule: evenodd; +} + +.ql-snow .ql-thin, +.ql-snow .ql-stroke.ql-thin { + stroke-width: 1; +} + +.ql-snow .ql-transparent { + opacity: 0.4; +} + +.ql-snow .ql-direction svg:last-child { + display: none; +} + +.ql-snow .ql-direction.ql-active svg:last-child { + display: inline; +} + +.ql-snow .ql-direction.ql-active svg:first-child { + display: none; +} + +.ql-snow .ql-editor h1 { + font-size: 2em; +} + +.ql-snow .ql-editor h2 { + font-size: 1.5em; +} + +.ql-snow .ql-editor h3 { + font-size: 1.17em; +} + +.ql-snow .ql-editor h4 { + font-size: 1em; +} + +.ql-snow .ql-editor h5 { + font-size: 0.83em; +} + +.ql-snow .ql-editor h6 { + font-size: 0.67em; +} + +.ql-snow .ql-editor a { + text-decoration: underline; +} + +.ql-snow .ql-editor blockquote { + border-left: 4px solid #ccc; + margin-bottom: 5px; + margin-top: 5px; + padding-left: 16px; +} + +.ql-snow .ql-editor code, +.ql-snow .ql-editor pre { + background-color: #f0f0f0; + border-radius: 3px; +} + +.ql-snow .ql-editor pre { + white-space: pre-wrap; + margin-bottom: 5px; + margin-top: 5px; + padding: 5px 10px; +} + +.ql-snow .ql-editor code { + font-size: 85%; + padding: 2px 4px; +} + +.ql-snow .ql-editor pre.ql-syntax { + background-color: #23241f; + color: #f8f8f2; + overflow: visible; +} + +.ql-snow .ql-editor img { + max-width: 100%; +} + +.ql-snow .ql-picker { + color: #444; + display: inline-block; + float: left; + font-size: 14px; + font-weight: 500; + height: 28px; + position: relative; + vertical-align: middle; +} + +.ql-snow .ql-picker-label { + cursor: pointer; + display: inline-block; + height: 100%; + padding-left: 8px; + padding-right: 2px; + position: relative; + width: 100%; + font-size: 16px; +} + +.ql-snow .ql-picker-label::before { + display: inline-block; + line-height: 22px; +} + +.ql-snow .ql-picker-options { + background-color: #fff; + display: none; + min-width: 100%; + padding: 4px 8px; + position: absolute; + white-space: nowrap; +} + +.ql-snow .ql-picker-options .ql-picker-item { + cursor: pointer; + display: block; + padding-bottom: 5px; + padding-top: 5px; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label { + color: #ccc; + z-index: 2; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { + fill: #ccc; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { + stroke: #ccc; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-options { + display: block; + margin-top: -1px; + top: 100%; + z-index: 1; +} + +.ql-snow .ql-color-picker, +.ql-snow .ql-icon-picker { + width: 32px; +} + +.ql-snow .ql-color-picker .ql-picker-label, +.ql-snow .ql-icon-picker .ql-picker-label { + padding: 2px 4px; +} + +.ql-snow .ql-color-picker .ql-picker-label svg, +.ql-snow .ql-icon-picker .ql-picker-label svg { + right: 4px; +} + +.ql-snow .ql-icon-picker .ql-picker-options { + padding: 4px 0px; +} + +.ql-snow .ql-icon-picker .ql-picker-item { + height: 24px; + width: 24px; + padding: 2px 4px; +} + +.ql-snow .ql-color-picker .ql-picker-options { + padding: 3px 5px; + width: 152px; +} + +.ql-snow .ql-color-picker .ql-picker-item { + border: 1px solid transparent; + float: left; + height: 16px; + margin: 2px; + padding: 0px; + width: 16px; +} + +.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { + position: absolute; + margin-top: -9px; + right: 0; + top: 50%; + width: 18px; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before { + content: attr(data-label); +} + +.ql-snow .ql-picker.ql-header { + width: 98px; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label::before, +.ql-snow .ql-picker.ql-header .ql-picker-item::before { + content: 'Paragraf'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + content: 'Başlık 1'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + content: 'Başlık 2'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + content: 'Başlık 3'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + content: 'Heading 4'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + content: 'Heading 5'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + content: 'Heading 6'; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + font-size: 2em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + font-size: 1.5em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + font-size: 1.17em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + font-size: 1em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + font-size: 0.83em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + font-size: 0.67em; +} + +.ql-snow .ql-picker.ql-font { + width: 108px; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label::before, +.ql-snow .ql-picker.ql-font .ql-picker-item::before { + content: 'Sans Serif'; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + content: 'Serif'; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + content: 'Monospace'; +} + +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + font-family: Georgia, Times New Roman, serif; +} + +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + font-family: Monaco, Courier New, monospace; +} + +.ql-snow .ql-picker.ql-size { + width: 98px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item::before { + content: 'Normal'; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label::before { + content: 'Boyut'; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + content: 'Küçük'; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + content: 'Büyük'; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + content: 'En Büyük'; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + font-size: 10px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + font-size: 18px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + font-size: 32px; +} + +.ql-snow .ql-color-picker.ql-background .ql-picker-item { + background-color: #fff; +} + +.ql-snow .ql-color-picker.ql-color .ql-picker-item { + background-color: #000; +} + +.ql-toolbar.ql-snow { + border: 1px solid #ccc; + box-sizing: border-box; + padding: 8px; +} + +.ql-toolbar.ql-snow .ql-formats { + margin-right: 15px; +} + +.ql-toolbar.ql-snow .ql-picker-label { + border: 1px solid transparent; +} + +.ql-toolbar.ql-snow .ql-picker-options { + border: 1px solid transparent; + box-shadow: rgba(0, 0, 0, 0.2) 0 2px 8px; +} + +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { + border-color: #ccc; +} + +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { + border-color: #ccc; +} + +.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, +.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { + border-color: #000; +} + +.ql-toolbar.ql-snow+.ql-container.ql-snow { + border-top: 0px; +} + +.ql-snow .ql-tooltip { + background-color: #fff; + border: 1px solid #ccc; + box-shadow: 0px 0px 5px #ddd; + color: #444; + padding: 5px 12px; + white-space: nowrap; +} + +.ql-snow .ql-tooltip::before { + content: "URL'i ziyaret edin: "; + line-height: 26px; + margin-right: 8px; +} + +.ql-snow .ql-tooltip input[type=text] { + display: none; + border: 1px solid #ccc; + font-size: 13px; + height: 26px; + margin: 0px; + padding: 3px 5px; + width: 170px; +} + +.ql-snow .ql-tooltip a.ql-preview { + display: inline-block; + max-width: 200px; + overflow-x: hidden; + text-overflow: ellipsis; + vertical-align: top; +} + +.ql-snow .ql-tooltip a.ql-action::after { + border-right: 1px solid #ccc; + content: 'Düzenle'; + margin-left: 16px; + padding-right: 8px; +} + +.ql-snow .ql-tooltip a.ql-remove::before { + content: 'Sil'; + margin-left: 8px; +} + +.ql-snow .ql-tooltip a { + line-height: 26px; +} + +.ql-snow .ql-tooltip.ql-editing a.ql-preview, +.ql-snow .ql-tooltip.ql-editing a.ql-remove { + display: none; +} + +.ql-snow .ql-tooltip.ql-editing input[type=text] { + display: inline-block; +} + +.ql-snow .ql-tooltip.ql-editing a.ql-action::after { + border-right: 0px; + content: 'Kaydet'; + padding-right: 0px; +} + +.ql-snow .ql-tooltip[data-mode=link]::before { + content: "Link:"; +} + +.ql-snow .ql-tooltip[data-mode=formula]::before { + content: "Formül: "; +} + +.ql-snow .ql-tooltip[data-mode=video]::before { + content: "Video:"; +} + +.ql-snow a { + color: #06c; +} + + +/* User styles */ +.ql-formats { + border-right: 1px #ddd solid; + margin-right: 0 !important; + padding-left: 10px; + padding-right: 10px; +} + +.ql-formats:last-child { + border-right: 0 !important; +} + +.ql-toolbar { + margin-bottom: 15px; + border: 0 !important; + display: flex; + align-items: center; + justify-content: center; + background: #fff; + border: 1px #ddd solid !important; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), + 0 1px 2px 0 rgba(0, 0, 0, .06); +} + + +.ql-container { + border: 1px #ddd solid !important; +} + + +.editor { + background-color: #f2f2f2; + border: 1px solid #c4c4c4; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06); +} + + +.ql-editor { + margin: 2.5rem auto; + width: 18.5cm; + height: 100%; + min-height: 26.25cm; + padding: 1.75cm 1.5cm; + border: 1px solid #d3d3d3; + background-color: #fff; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), + 0 1px 2px 0 rgba(0, 0, 0, .06); + overflow: hidden; +} + +.ql-table-toggle { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + background: #fff; + border: 2px solid #e9ebf0; + border-radius: 50%; + margin: 3px 0 0 -22px; + width: 18px; + height: 18px; + top: 0; + left: 0; + cursor: pointer; + fill: #b9bec7 +} + +.ql-table-toggle_hidden { + display: none +} + +.ql-table-toggle:hover { + border-color: #b9bec7 +} + +.ql-table-menu { + top: 0; + left: 0; + position: absolute; + background: #fff; + z-index: 2100; + box-shadow: rgba(15, 15, 15, 0.05) 0 0 0 1px, rgba(15, 15, 15, 0.1) 0 3px 6px, rgba(15, 15, 15, 0.2) 0 9px 24px; + border-radius: 4px; + animation: fadeIn 0.05s ease-in forwards +} + +.ql-table-menu__item { + display: flex; + align-items: center; + cursor: pointer; + min-height: 32px; + padding: 5px +} + +.ql-table-menu__item:hover { + background-color: #fafbfc +} + +.ql-table-menu__item-icon { + margin-right: 5px +} + +.ql-table-menu__item-text { + font: 300 12px +} + +.ql-container .qlbt-selection-line.qlbt-selection-line-left::before { + position: absolute; + left: -2px; + top: -2px; + content: ''; + width: 5px; + height: 5px; + background-color: #0589f3; + border-radius: 5px; +} + +.ql-container .qlbt-selection-line.qlbt-selection-line-right::before { + position: absolute; + right: -2px; + bottom: -3px; + content: ''; + width: 5px; + height: 5px; + background-color: #0589f3; + border-radius: 5px; +} + +.quill-better-table-wrapper { + overflow-x: auto; +} + +table.quill-better-table { + table-layout: fixed; + border-collapse: collapse; +} + +table.quill-better-table td { + border: 1px solid #000; + padding: 2px 5px; +} + +.qlbt-operation-menu { + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + font-size: 14px; + z-index: 100; + overflow: hidden; +} + +.qlbt-operation-menu .qlbt-operation-menu-dividing { + height: 1px; + background-color: #efefef; +} + +.qlbt-operation-menu .qlbt-operation-menu-subtitle { + color: #999; + font-size: 14px; + padding: 5px 16px; +} + +.qlbt-operation-menu .qlbt-operation-color-picker { + display: flex; + align-items: center; + flex-wrap: wrap; + padding: 0 16px 10px; + background-color: #fff; + overflow: hidden; +} + +.qlbt-operation-menu .qlbt-operation-color-picker .qlbt-operation-color-picker-item { + width: 20px; + height: 20px; + border: 1px solid #595959; + margin-right: 5px; + margin-bottom: 5px; + cursor: pointer; +} + +.qlbt-operation-menu .qlbt-operation-menu-item { + display: flex; + align-items: center; + padding: 10px 16px; + background-color: #fff; + cursor: pointer; + color: #595959; + overflow: hidden; + text-overflow: ellipsis; +} + +.qlbt-operation-menu .qlbt-operation-menu-item:hover { + background-color: #efefef; +} + +.qlbt-operation-menu .qlbt-operation-menu-item .qlbt-operation-menu-icon { + margin-right: 8px; + height: 20px; + width: 20px; + font-size: 0; +} + +.qlbt-col-tool { + position: absolute; + display: flex; + align-items: flex-end; + overflow: hidden; + z-index: 99; + height: 16px; +} + +.qlbt-col-tool .qlbt-col-tool-cell { + position: relative; + background-color: #fff; + border-top: 1px solid #000; + border-right: 1px solid #000; + border-bottom: 1px solid #000; +} + +.qlbt-col-tool .qlbt-col-tool-cell:first-child { + border-left: 1px solid #000; +} + +.qlbt-col-tool .qlbt-col-tool-cell-holder { + position: absolute; + right: -1px; + top: 0; + bottom: 0; + z-index: 3; + width: 1px; + background-color: transparent; + cursor: ew-resize; +} + +.qlbt-col-tool .qlbt-col-tool-cell-holder:hover { + background-color: #0589f3; +} + +.qlbt-col-tool .qlbt-col-tool-cell-holder::before { + content: ""; + position: absolute; + top: 0; + left: -6px; + display: block; + width: 8px; + height: 100%; +} + +.qlbt-col-tool .qlbt-col-tool-cell-holder::after { + content: ""; + position: absolute; + top: 0; + right: -6px; + display: block; + width: 8px; + height: 100%; +} + +.tippy-box[data-animation=fade][data-state=hidden] { + opacity: 0 +} + +[data-tippy-root] { + max-width: calc(100vw - 10px) +} + +.tippy-box { + position: relative; + background-color: #333; + color: #fff; + border-radius: 4px; + font-size: 14px; + line-height: 1.4; + outline: 0; + transition-property: transform, visibility, opacity +} + +.tippy-box[data-placement^=top]>.tippy-arrow { + bottom: 0 +} + +.tippy-box[data-placement^=top]>.tippy-arrow:before { + bottom: -7px; + left: 0; + border-width: 8px 8px 0; + border-top-color: initial; + transform-origin: center top +} + +.tippy-box[data-placement^=bottom]>.tippy-arrow { + top: 0 +} + +.tippy-box[data-placement^=bottom]>.tippy-arrow:before { + top: -7px; + left: 0; + border-width: 0 8px 8px; + border-bottom-color: initial; + transform-origin: center bottom +} + +.tippy-box[data-placement^=left]>.tippy-arrow { + right: 0 +} + +.tippy-box[data-placement^=left]>.tippy-arrow:before { + border-width: 8px 0 8px 8px; + border-left-color: initial; + right: -7px; + transform-origin: center left +} + +.tippy-box[data-placement^=right]>.tippy-arrow { + left: 0 +} + +.tippy-box[data-placement^=right]>.tippy-arrow:before { + left: -7px; + border-width: 8px 8px 8px 0; + border-right-color: initial; + transform-origin: center right +} + +.tippy-box[data-inertia][data-state=visible] { + transition-timing-function: cubic-bezier(.54, 1.5, .38, 1.11) +} + +.tippy-arrow { + width: 16px; + height: 16px; + color: #333 +} + +.tippy-arrow:before { + content: ""; + position: absolute; + border-color: transparent; + border-style: solid +} + +.tippy-content { + position: relative; + padding: 5px 9px; + z-index: 1 +} + +h1, +h2, +h3, +h4 { + font-weight: 600; + margin-bottom: 10px +} + +h1 { + font-size: 24px; +} + +h2 { + font-size: 22px; +} + +h3 { + font-size: 20px; +} + +h4 { + font-size: 18px; +} + +table, +th, +td { + border: 1px solid black; + padding: 7px; +} + +.ql-code-block-container { + background-color: #23241f; + color: #fff; + font-family: 'Courier New', Courier, monospace; + padding: 10px; + border-radius: 5px; + margin-bottom: 10px; +} + +.ql-ui { + color: #000; + margin-bottom: 5px; +} + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2 +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e +} + +.hljs-strong { + font-weight: bold +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672 +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2 +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} diff --git a/server/public/js/app.js b/server/public/js/app.js index c3b401f..cbac546 100644 --- a/server/public/js/app.js +++ b/server/public/js/app.js @@ -1,2 +1 @@ -/*! For license information please see app.js.LICENSE.txt */ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=1)}([function(e,t,n){e.exports=n(6)},function(e,t,n){n(2),e.exports=n(8)},function(e,t,n){n(3),n(4);var r=new CKSource.Watchdog;function i(e){console.error("Oops, something went wrong!"),console.error("Please, report the following error on https://github.com/ckeditor/ckeditor5/issues with the build id and the error stack trace:"),console.warn("Build id: 5jcczxx0mw2e-ci4x3qg1m4f4"),console.error(e)}window.watchdog=r,r.setCreator((function(e,t){return CKSource.Editor.create(e,t).then((function(e){return document.querySelector(".document-editor__toolbar").appendChild(e.ui.view.toolbar.element),document.querySelector(".ck-toolbar").classList.add("ck-reset_all"),e}))})),r.setDestructor((function(e){return document.querySelector(".document-editor__toolbar").removeChild(e.ui.view.toolbar.element),e.destroy()})),r.on("error",i),r.create(document.querySelector(".editor"),{simpleUpload:{uploadUrl:"http://127.0.0.1/my-upload-endpoint"},toolbar:{items:["heading","|","fontSize","fontFamily","|","bold","italic","underline","strikethrough","highlight","|","alignment","|","numberedList","bulletedList","|","indent","outdent","|","link","blockQuote","imageUpload","insertTable","mediaEmbed","|","undo","redo","|","code","codeBlock"]},language:"tr",image:{toolbar:["imageTextAlternative","imageStyle:full","imageStyle:side","linkImage"]},table:{contentToolbar:["tableColumn","tableRow","mergeTableCells","tableCellProperties","tableProperties"]}}).catch(i)},function(e,t){},function(e,t,n){"use strict";n.r(t),function(e){var t,r,i=n(0),o=n.n(i);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function h(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||f(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1},function(t,r){"object"==("undefined"==typeof exports?"undefined":E(exports))&&"object"==E(e)?e.exports=r():"function"==typeof define&&n(7)?define([],r):"object"==("undefined"==typeof exports?"undefined":E(exports))?exports.CKSource=r():t.CKSource=r()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==E(e)&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=69)}([function(e,t,n){n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"b",(function(){return o}));var r=function(e){k(n,e);var t=b(n);function n(e,r,i){var o;return m(this,n),(o=t.call(this,"".concat(e).concat(i?" "+JSON.stringify(i):"").concat(a(e)))).name="CKEditorError",o.context=r,o.data=i,o}return p(n,[{key:"is",value:function(e){return"CKEditorError"===e}}],[{key:"rethrowUnexpectedError",value:function(e,t){if(e.is&&e.is("CKEditorError"))throw e;var r=new n(e.message,t);throw r.stack=e.stack,r}}]),n}(C(Error));function i(e,t){var n;(n=console).warn.apply(n,h(s(e,t)))}function o(e,t){var n;(n=console).error.apply(n,h(s(e,t)))}function a(e){return"\nRead more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-"+e}function s(e,t){var n=a(e);return t?[e,t,n]:[e,n]}},function(e,t,n){var r,i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),o=[];function a(e){for(var t=-1,n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CAPA,yJCAE,qCDOF,CAJC,oEERA,YAAa,CACb,2BAA2B,CCF3B,qCHYA,CAGD,+BACC,aAAc,CACd,oCAAqC,CACrC,4BAwBD,CAtBC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CACC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,mDACD,CAIA,gEACC,gDACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_focus.css";\n@import "../../mixins/_button.css";\n\n:root {\n\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\n}\n\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\n\t@mixin ck-rounded-corners;\n\n\t&.ck-focused {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t}\n}\n\n.ck.ck-editor__editable_inline {\n\toverflow: auto;\n\tpadding: 0 var(--ck-spacing-standard);\n\tborder: 1px solid transparent;\n\n\t&[dir="ltr"] {\n\t\ttext-align: left;\n\t}\n\n\t&[dir="rtl"] {\n\t\ttext-align: right;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\n\t& > *:first-child {\n\t\tmargin-top: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\n\t& > *:last-child {\n\t\tmargin-bottom: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\n\t&.ck-blurred ::selection {\n\t\tbackground: var(--ck-color-editable-blur-selection);\n\t}\n}\n\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"] {\n\t&::after {\n\t\tborder-bottom-color: var(--ck-color-base-foreground);\n\t}\n}\n\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"] {\n\t&::after {\n\t\tborder-top-color: var(--ck-color-base-foreground);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAOA,gBACC,oBAAqB,CACrB,iBAyDD,CAvDC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UAOD,CCcA,iEACC,YACD,CDdA,oCAGC,kCAAmC,CAEnC,YAAa,CACb,yBAA0B,CAE1B,iBA8BD,CA5BC,+DACC,oBACD,CAEA,oHAEC,WACD,CAEA,oHAMC,QAAS,CACT,WACD,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAQF,mCACC,mCACD,CEhEA,MACC,sDACD,CAEA,gBAEC,iBAiED,CA/DC,oCACC,mCACD,CAGC,8CACC,gCAAiC,CAGjC,sCACD,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEACC,SAAU,CACV,eAAgB,CAChB,sBACD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAIF,uBExEC,eFoGD,CA5BA,qFEpEE,qCFgGF,CA5BA,uBG1EC,oCAA8B,CH8E9B,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CAGT,cAmBD,CAfC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import \"../tooltip/mixins/_tooltip.css\";\n\n.ck.ck-dropdown {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t& .ck-dropdown__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n\n\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\n\t& .ck-button.ck-dropdown__button {\n\t\twidth: 100%;\n\n\t\t/* Disable main button's tooltip when the dropdown is open. Otherwise the panel may\n\t\tpartially cover the tooltip */\n\t\t&.ck-on {\n\t\t\t@mixin ck-tooltip_disabled;\n\t\t}\n\t}\n\n\t& .ck-dropdown__panel {\n\t\t/* This is to get rid of flickering when the tooltip is shown under the panel,\n\t\twhich looks like the panel moves vertically a pixel down and up. */\n\t\t-webkit-backface-visibility: hidden;\n\n\t\tdisplay: none;\n\t\tz-index: var(--ck-z-modal);\n\n\t\tposition: absolute;\n\n\t\t&.ck-dropdown__panel-visible {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_nw {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-dropdown__panel_se,\n\t\t&.ck-dropdown__panel_sw {\n\t\t\t/*\n\t\t\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\n\t\t\t */\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_se {\n\t\t\tleft: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_sw {\n\t\t\tright: 0px;\n\t\t}\n\t}\n}\n\n/*\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\n * See https://github.com/ckeditor/ckeditor5/issues/7874\n */\n.ck.ck-toolbar .ck-dropdown__panel {\n\tz-index: calc( var(--ck-z-modal) + 1 );\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Enables the tooltip, which is the tooltip is in DOM but\n * not yet displayed.\n */\n@define-mixin ck-tooltip_enabled {\n\t& .ck-tooltip {\n\t\tdisplay: block;\n\n\t\t/*\n\t\t * Don't display tooltips in devices which don't support :hover.\n\t\t * In fact, it's all about iOS, which forces user to click UI elements twice to execute\n\t\t * the primary action, when tooltips are enabled.\n\t\t *\n\t\t * Q: OK, but why not the following query?\n\t\t *\n\t\t * @media (hover) {\n\t\t * display: block;\n\t\t * }\n\t\t *\n\t\t * A: Because FF does not support it and it would completely disable tooltips\n\t\t * in that browser.\n\t\t *\n\t\t * More in https://github.com/ckeditor/ckeditor5/issues/920.\n\t\t */\n\t\t@media (hover:none) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/**\n * Disables the tooltip making it disappear from DOM.\n */\n@define-mixin ck-tooltip_disabled {\n\t& .ck-tooltip {\n\t\tdisplay: none;\n\t}\n}\n\n/**\n * Shows the tooltip, which is already in DOM.\n * Requires `ck-tooltip_enabled` first.\n */\n@define-mixin ck-tooltip_visible {\n\t& .ck-tooltip {\n\t\tvisibility: visible;\n\t\topacity: 1;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-dropdown {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-dropdown__arrow {\n\t\twidth: var(--ck-dropdown-arrow-size);\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-dropdown__arrow {\n\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-dropdown__arrow {\n\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-dropdown__arrow {\n\t\t@mixin ck-disabled;\n\t}\n\n\t& .ck-button.ck-dropdown__button {\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t/* #23 */\n\t\t& .ck-button__label {\n\t\t\twidth: 7em;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t\t&.ck-disabled .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t&.ck-dropdown__button_label-width_auto .ck-button__label {\n\t\t\twidth: auto;\n\t\t}\n\t}\n}\n\n.ck.ck-dropdown__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\n\t/* Make sure the panel is at least as wide as the drop-down\'s button. */\n\tmin-width: 100%;\n\n\t/* Disabled corner border radius to be consistent with the .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-dropdown__panel_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{width:var(--ck-icon-size);height:var(--ck-icon-size);font-size:.8333350694em;will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css"],names:[],mappings:"AAKA,YACC,qBACD,CCFA,MACC,0EACD,CAEA,YACC,yBAA0B,CAC1B,0BAA2B,CAG3B,uBAAwB,CAQxB,qBAcD,CAZC,0BARA,aAAc,CAGd,cAgBA,CAJC,yBAEC,iBACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-icon {\n\tvertical-align: middle;\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\n}\n\n.ck.ck-icon {\n\twidth: var(--ck-icon-size);\n\theight: var(--ck-icon-size);\n\n\t/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */\n\tfont-size: .8333350694em;\n\n\tcolor: inherit;\n\n\t/* Inherit cursor style (#5). */\n\tcursor: inherit;\n\n\t/* This will prevent blurry icons on Firefox. See #340. */\n\twill-change: transform;\n\n\t& * {\n\t\t/* Inherit cursor style (#5). */\n\t\tcursor: inherit;\n\n\t\t/* Allows dynamic coloring of the icons. */\n\t\tcolor: inherit;\n\n\t\t&:not([fill]) {\n\t\t\t/* Needed by FF. */\n\t\t\tfill: currentColor;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{position:absolute;pointer-events:none;-webkit-backface-visibility:hidden}.ck.ck-tooltip{visibility:hidden;opacity:0;display:none;z-index:var(--ck-z-modal)}.ck.ck-tooltip .ck-tooltip__text{display:inline-block}.ck.ck-tooltip .ck-tooltip__text:after{content:"";width:0;height:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{font-size:.9em;line-height:1.5;color:var(--ck-color-tooltip-text);padding:var(--ck-spacing-small) var(--ck-spacing-medium);background:var(--ck-color-tooltip-background);position:relative;left:-50%}.ck.ck-tooltip .ck-tooltip__text:after{transition:opacity .2s ease-in-out .2s;border-style:solid;left:50%}.ck.ck-tooltip.ck-tooltip_s,.ck.ck-tooltip.ck-tooltip_sw{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{top:calc(var(--ck-tooltip-arrow-size)*-1 + 1px);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:var(--ck-color-tooltip-background);border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:0}.ck.ck-tooltip.ck-tooltip_sw{right:50%;left:auto}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text{left:auto;right:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{left:auto;right:0}.ck.ck-tooltip.ck-tooltip_n{top:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent;border-top-color:var(--ck-color-tooltip-background);border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:0;border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,sDAEC,iBAAkB,CAGlB,mBAAoB,CAIpB,kCACD,CAEA,eAEC,iBAAkB,CAClB,SAAU,CACV,YAAa,CACb,yBAWD,CATC,iCACC,oBAOD,CALC,uCACC,UAAW,CACX,OAAQ,CACR,QACD,CCxBF,MACC,2BACD,CAEA,eACC,QAAS,CAMT,KAAM,CAON,sCA6FD,CA3FC,iCChBA,eDqCA,CArBA,yGCZC,qCDiCD,CArBA,iCAGC,cAAe,CACf,eAAgB,CAChB,kCAAmC,CACnC,wDAAyD,CACzD,6CAA8C,CAC9C,iBAAkB,CAClB,SAYD,CAVC,uCAMC,sCAAuC,CACvC,kBAAmB,CACnB,QACD,CAYD,yDAEC,4CAA+C,CAC/C,0BASD,CAPC,yGAEC,+CAAkD,CAClD,0BAA6B,CAC7B,6BAAoF,CAApF,sDAAoF,CAApF,8BAAoF,CAApF,4BAAoF,CACpF,8CAAsG,CAAtG,gDAAsG,CAAtG,+CAAsG,CAAtG,kBACD,CAaD,6BACC,SAAU,CACV,SAWD,CATC,+CACC,SAAU,CACV,2CACD,CAEA,qDACC,SAAU,CACV,OACD,CAYD,4BACC,yCAA4C,CAC5C,2BAQD,CANC,oDACC,4CAA+C,CAC/C,0BAA6B,CAC7B,6BAAoF,CAApF,+BAAoF,CAApF,8BAAoF,CAApF,mDAAoF,CACpF,8CAAsG,CAAtG,qBAAsG,CAAtG,+CAAsG,CAAtG,6CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-tooltip,\n.ck.ck-tooltip .ck-tooltip__text::after {\n\tposition: absolute;\n\n\t/* Without this, hovering the tooltip could keep it visible. */\n\tpointer-events: none;\n\n\t/* This is to get rid of flickering when transitioning opacity in Chrome.\n\tIt\'s weird but it works. */\n\t-webkit-backface-visibility: hidden;\n}\n\n.ck.ck-tooltip {\n\t/* Tooltip is hidden by default. */\n\tvisibility: hidden;\n\topacity: 0;\n\tdisplay: none;\n\tz-index: var(--ck-z-modal);\n\n\t& .ck-tooltip__text {\n\t\tdisplay: inline-block;\n\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-tooltip-arrow-size: 5px;\n}\n\n.ck.ck-tooltip {\n\tleft: 50%;\n\n\t/*\n\t * Prevent blurry tooltips in LoDPI environments.\n\t * See https://github.com/ckeditor/ckeditor5/issues/1802.\n\t */\n\ttop: 0;\n\n\t/*\n\t * For the transition to work, the tooltip must be controlled\n\t * using visibility+opacity. A delay prevents a "tooltip avalanche"\n\t * i.e. when scanning the toolbar with mouse cursor.\n\t */\n\ttransition: opacity .2s ease-in-out .2s;\n\n\t& .ck-tooltip__text {\n\t\t@mixin ck-rounded-corners;\n\n\t\tfont-size: .9em;\n\t\tline-height: 1.5;\n\t\tcolor: var(--ck-color-tooltip-text);\n\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\tbackground: var(--ck-color-tooltip-background);\n\t\tposition: relative;\n\t\tleft: -50%;\n\n\t\t&::after {\n\t\t\t/*\n\t\t\t * For the transition to work, the tooltip must be controlled\n\t\t\t * using visibility+opacity. A delay prevents a "tooltip avalanche"\n\t\t\t * i.e. when scanning the toolbar with mouse cursor.\n\t\t\t */\n\t\t\ttransition: opacity .2s ease-in-out .2s;\n\t\t\tborder-style: solid;\n\t\t\tleft: 50%;\n\t\t}\n\t}\n\n\t/**\n\t * A class that displays the tooltip south of the element.\n\t *\n\t * [element]\n\t * ^\n\t * +-----------+\n\t * | Tooltip |\n\t * +-----------+\n\t */\n\t&.ck-tooltip_s,\n\t&.ck-tooltip_sw {\n\t\tbottom: calc(-1 * var(--ck-tooltip-arrow-size));\n\t\ttransform: translateY( 100% );\n\n\t\t& .ck-tooltip__text::after {\n\t\t\t/* 1px addresses gliches in rendering causing gap between the triangle and the text */\n\t\t\ttop: calc(-1 * var(--ck-tooltip-arrow-size) + 1px);\n\t\t\ttransform: translateX( -50% );\n\t\t\tborder-color: transparent transparent var(--ck-color-tooltip-background) transparent;\n\t\t\tborder-width: 0 var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size);\n\t\t}\n\t}\n\n\t/**\n\t * A class that displays the tooltip south-west of the element.\n\t *\n\t * [element]\n\t * ^\n\t * +-----------+\n\t * | Tooltip |\n\t * +-----------+\n\t */\n\n\t&.ck-tooltip_sw {\n\t\tright: 50%;\n\t\tleft: auto;\n\n\t\t& .ck-tooltip__text {\n\t\t\tleft: auto;\n\t\t\tright: calc( -2 * var(--ck-tooltip-arrow-size));\n\t\t}\n\n\t\t& .ck-tooltip__text::after {\n\t\t\tleft: auto;\n\t\t\tright: 0;\n\t\t}\n\t}\n\n\t/**\n\t * A class that displays the tooltip north of the element.\n\t *\n\t * +-----------+\n\t * | Tooltip |\n\t * +-----------+\n\t * V\n\t * [element]\n\t */\n\t&.ck-tooltip_n {\n\t\ttop: calc(-1 * var(--ck-tooltip-arrow-size));\n\t\ttransform: translateY( -100% );\n\n\t\t& .ck-tooltip__text::after {\n\t\t\tbottom: calc(-1 * var(--ck-tooltip-arrow-size));\n\t\t\ttransform: translateX( -50% );\n\t\t\tborder-color: var(--ck-color-tooltip-background) transparent transparent transparent;\n\t\t\tborder-width: var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) 0 var(--ck-tooltip-arrow-size);\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{position:relative;display:inline-flex;align-items:center;justify-content:left}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{visibility:visible;opacity:1}.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{white-space:nowrap;cursor:default;vertical-align:middle;padding:var(--ck-spacing-tiny);text-align:center;min-width:var(--ck-ui-component-min-height);min-height:var(--ck-ui-component-min-height);line-height:1;font-size:inherit;border:1px solid transparent;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;-webkit-appearance:none}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{font-size:inherit;font-weight:inherit;color:inherit;cursor:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__icon{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-right:calc(var(--ck-spacing-small)*-1);margin-left:var(--ck-spacing-small)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css"],names:[],mappings:"AAQA,6BCCC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6BD,CE/BC,qDACC,aAqBD,CAHC,oBAnBD,qDAoBE,YAEF,CADC,CFvBF,6BAKC,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,oBAyBD,CAvBC,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CEkBA,iEACC,kBAAmB,CACnB,SACD,CAbA,yFACC,YACD,CC7BD,6BCAC,oDD0ID,CCvIE,6EACC,0DACD,CAEA,+EACC,2DAA4C,CAC5C,uEACD,CAID,qDACC,6DACD,CDhBD,6BEDC,eF2ID,CA1IA,wIEGE,qCFuIF,CA1IA,6BAKC,kBAAmB,CACnB,cAAe,CACf,qBAAsB,CACtB,8BAA+B,CAC/B,iBAAkB,CAGlB,2CAA4C,CAC5C,4CAA6C,CAI7C,aAAc,CAGd,iBAAkB,CAGlB,4BAA6B,CAG7B,4DAA8D,CAG9D,uBA6GD,CA3GC,oFGjCA,YAAa,CACb,2BAA2B,CCF3B,2CJsCA,CAIC,kJAEC,aACD,CAGD,iEAEC,iBAAkB,CAClB,mBAAoB,CACpB,aAAc,CACd,cAAe,CAIf,qBASD,CAlBA,qFAYE,eAMF,CAlBA,qFAgBE,gBAEF,CAEA,yEACC,aAYD,CAbA,6FAIE,mCASF,CAbA,6FAQE,oCAKF,CAbA,yEAWC,eAAiB,CACjB,UACD,CAIC,oIIrFD,oDJyFC,CAEA,uFK3FD,kCL6FC,CAGA,yFKhGD,kCLkGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAcD,CAXC,2HAEE,4CAA+C,CAC/C,oCAOF,CAVA,2HAOE,6CAAgD,CAChD,mCAEF,CAKA,mHACC,WACD,CAID,yCC/HA,+CDiIA,CC9HC,yFACC,qDACD,CAEA,2FACC,sDAA4C,CAC5C,kEACD,CAID,iEACC,wDACD,CDmHA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CC7IC,mDDkJD,CC/IE,2FACC,yDACD,CAEA,6FACC,0DAA4C,CAC5C,sEACD,CAID,mEACC,4DACD,CD6HD,2CAIC,wCACD,CAEA,uCAEC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n@import "../tooltip/mixins/_tooltip.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-unselectable;\n\t@mixin ck-tooltip_enabled;\n\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: left;\n\n\t& .ck-button__label {\n\t\tdisplay: none;\n\t}\n\n\t&.ck-button_with-text {\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t/* Center the icon horizontally in a button without text. */\n\t&:not(.ck-button_with-text) {\n\t\tjustify-content: center;\n\t}\n\n\t&:hover {\n\t\t@mixin ck-tooltip_visible;\n\t}\n\n\t/* Get rid of the native focus outline around the tooltip when focused (but not :hover). */\n\t&:focus:not(:hover) {\n\t\t@mixin ck-tooltip_disabled;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Enables the tooltip, which is the tooltip is in DOM but\n * not yet displayed.\n */\n@define-mixin ck-tooltip_enabled {\n\t& .ck-tooltip {\n\t\tdisplay: block;\n\n\t\t/*\n\t\t * Don't display tooltips in devices which don't support :hover.\n\t\t * In fact, it's all about iOS, which forces user to click UI elements twice to execute\n\t\t * the primary action, when tooltips are enabled.\n\t\t *\n\t\t * Q: OK, but why not the following query?\n\t\t *\n\t\t * @media (hover) {\n\t\t * display: block;\n\t\t * }\n\t\t *\n\t\t * A: Because FF does not support it and it would completely disable tooltips\n\t\t * in that browser.\n\t\t *\n\t\t * More in https://github.com/ckeditor/ckeditor5/issues/920.\n\t\t */\n\t\t@media (hover:none) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/**\n * Disables the tooltip making it disappear from DOM.\n */\n@define-mixin ck-tooltip_disabled {\n\t& .ck-tooltip {\n\t\tdisplay: none;\n\t}\n}\n\n/**\n * Shows the tooltip, which is already in DOM.\n * Requires `ck-tooltip_enabled` first.\n */\n@define-mixin ck-tooltip_visible {\n\t& .ck-tooltip {\n\t\tvisibility: visible;\n\t\topacity: 1;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-button-colors --ck-color-button-default;\n\t@mixin ck-rounded-corners;\n\n\twhite-space: nowrap;\n\tcursor: default;\n\tvertical-align: middle;\n\tpadding: var(--ck-spacing-tiny);\n\ttext-align: center;\n\n\t/* A very important piece of styling. Go to variable declaration to learn more. */\n\tmin-width: var(--ck-ui-component-min-height);\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Normalize the height of the line. Removing this will break consistent height\n\tamong text and text-less buttons (with icons). */\n\tline-height: 1;\n\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t/* Avoid flickering when the foucs border shows up. */\n\tborder: 1px solid transparent;\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\n\t-webkit-appearance: none;\n\n\t&:active,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t/* Allow icon coloring using the text "color" property. */\n\t& .ck-button__icon {\n\t\t& use,\n\t\t& use * {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t& .ck-button__label {\n\t\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\t\tfont-size: inherit;\n\t\tfont-weight: inherit;\n\t\tcolor: inherit;\n\t\tcursor: inherit;\n\n\t\t/* Must be consistent with .ck-icon\'s vertical align. Otherwise, buttons with and\n\t\twithout labels (but with icons) have different sizes in Chrome */\n\t\tvertical-align: middle;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& .ck-button__keystroke {\n\t\tcolor: inherit;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t}\n\n\t\tfont-weight: bold;\n\t\topacity: .7;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t&.ck-disabled {\n\t\t&:active,\n\t\t&:focus {\n\t\t\t/* The disabled button should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t\t& .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t& .ck-button__keystroke {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&.ck-button_with-text {\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-button_with-keystroke {\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t/* A style of the button which is currently on, e.g. its feature is active. */\n\t&.ck-on {\n\t\t@mixin ck-button-colors --ck-color-button-on;\n\t}\n\n\t&.ck-button-save {\n\t\tcolor: var(--ck-color-button-save);\n\t}\n\n\t&.ck-button-cancel {\n\t\tcolor: var(--ck-color-button-cancel);\n\t}\n}\n\n/* A style of the button which handles the primary action. */\n.ck.ck-button-action,\na.ck.ck-button-action {\n\t@mixin ck-button-colors --ck-color-button-action;\n\n\tcolor: var(--ck-color-button-action-text);\n}\n\n.ck.ck-button-bold,\na.ck.ck-button-bold {\n\tfont-weight: bold;\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements a button of given background color.\n *\n * @param {String} $background - Background color of the button.\n * @param {String} $border - Border color of the button.\n */\n@define-mixin ck-button-colors $prefix {\n\tbackground: var($(prefix)-background);\n\n\t&:not(.ck-disabled) {\n\t\t&:hover {\n\t\t\tbackground: var($(prefix)-hover-background);\n\t\t}\n\n\t\t&:active {\n\t\t\tbackground: var($(prefix)-active-background);\n\t\t\tbox-shadow: inset 0 2px 2px var($(prefix)-active-shadow);\n\t\t}\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t&.ck-disabled {\n\t\tbackground: var($(prefix)-disabled-background);\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(var(--ck-line-height-base)*0.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*0.4*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,YCEC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBAAgB,CDFhB,YAAa,CACb,qBAcD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEfD,YCEC,eDGD,CALA,+DCME,qCDDF,CALA,YAGC,oBAAqB,CACrB,0CACD,CAEA,kBACC,cAAe,CACf,cA2DD,CAzDC,6BACC,gBAAiB,CACjB,UAAW,CACX,eAAgB,CAChB,eAAgB,CAKhB,mIAiCD,CA7BC,+CAEC,yEACD,CAEA,oCACC,eACD,CAEA,mCACC,oDAAqD,CACrD,yCAaD,CAXC,0CACC,eACD,CAEA,2DACC,0DACD,CAEA,2DACC,4CACD,CAGD,qDACC,uDACD,CAMA,yCACC,0CAA2C,CAC3C,aAMD,CAJC,iEACC,uDAAwD,CACxD,aACD,CAKH,uBACC,UAAW,CACX,UAAW,CACX,sCACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-list {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t& .ck-list__item,\n\t& .ck-list__separator {\n\t\tdisplay: block;\n\t}\n\n\t/* Make sure that whatever child of the list item gets focus, it remains on the\n\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\n\tadjacent list items. */\n\t& .ck-list__item > *:focus {\n\t\tposition: relative;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n.ck.ck-list {\n\t@mixin ck-rounded-corners;\n\n\tlist-style-type: none;\n\tbackground: var(--ck-color-list-background);\n}\n\n.ck.ck-list__item {\n\tcursor: default;\n\tmin-width: 12em;\n\n\t& .ck-button {\n\t\tmin-height: unset;\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t\tborder-radius: 0;\n\n\t\t/* List items should have the same height. Use absolute units to make sure it is so\n\t\t because e.g. different heading styles may have different height\n\t\t https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\tpadding:\n\t\t\tcalc(.2 * var(--ck-line-height-base) * var(--ck-font-size-base))\n\t\t\tcalc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base));\n\n\t\t& .ck-button__label {\n\t\t\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\t\tline-height: calc(1.2 * var(--ck-line-height-base) * var(--ck-font-size-base));\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-button-on-background);\n\t\t\tcolor: var(--ck-color-list-button-on-text);\n\n\t\t\t&:active {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-on-background-focus);\n\t\t\t}\n\n\t\t\t&:focus:not(.ck-disabled) {\n\t\t\t\tborder-color: var(--ck-color-base-background);\n\t\t\t}\n\t\t}\n\n\t\t&:hover:not(.ck-disabled) {\n\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t}\n\t}\n\n\t/* It\'s unnecessary to change the background/text of a switch toggle; it has different ways\n\tof conveying its state (like the switcher) */\n\t& .ck-switchbutton {\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-background);\n\t\t\tcolor: inherit;\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-list__separator {\n\theight: 1px;\n\twidth: 100%;\n\tbackground: var(--ck-color-base-border);\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - var(--ck-switch-button-toggle-spacing)*2)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*0.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var(--ck-switch-button-translation)*-1))}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css"],names:[],mappings:"AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,mDAAoD,CACpD,qCAAsC,CACtC,gKAKD,CAGC,0DAGE,4CAOF,CAVA,0DAQE,2CAEF,CAEA,iDC3BA,eDoEA,CAzCA,yICvBC,qCDgED,CAzCA,2DAKE,gBAoCF,CAzCA,2DAUE,iBA+BF,CAzCA,iDAcC,8BAAiC,CAEjC,0CAA2C,CAC3C,uDAwBD,CAtBC,2EC9CD,eD2DC,CAbA,6LC1CA,qCAAsC,CD4CpC,+CAWF,CAbA,2EAMC,6CAA8C,CAC9C,+CAAgD,CAChD,gDAAiD,CACjD,yDAA0D,CAG1D,uBACD,CAEA,uDACC,6DAKD,CAHC,iFACC,+DACD,CAIF,6DExEA,kCF0EA,CAEA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CAEA,2FAKE,yDAMF,CAXA,2FASE,kEAEF",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-button.ck-switchbutton {\n\t& .ck-button__toggle {\n\t\tdisplay: block;\n\n\t\t& .ck-button__toggle__inner {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\nof the component, floating–point numbers have been used which, for the default font size\n(see: --ck-font-size-base), will generate simple integers. */\n:root {\n\t/* 34px at 13px font-size */\n\t--ck-switch-button-toggle-width: 2.6153846154em;\n\t/* 14px at 13px font-size */\n\t--ck-switch-button-toggle-inner-size: 1.0769230769em;\n\t--ck-switch-button-toggle-spacing: 1px;\n\t--ck-switch-button-translation: calc(\n\t\tvar(--ck-switch-button-toggle-width) -\n\t\tvar(--ck-switch-button-toggle-inner-size) -\n\t\t2 * var(--ck-switch-button-toggle-spacing)\n\t);\n}\n\n.ck.ck-button.ck-switchbutton {\n\t& .ck-button__label {\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-right: calc(2 * var(--ck-spacing-large));\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-left: calc(2 * var(--ck-spacing-large));\n\t\t}\n\t}\n\n\t& .ck-button__toggle {\n\t\t@mixin ck-rounded-corners;\n\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Make sure the toggle is always to the right as far as possible. */\n\t\t\tmargin-left: auto;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Make sure the toggle is always to the left as far as possible. */\n\t\t\tmargin-right: auto;\n\t\t}\n\n\t\t/* Gently animate the background color of the toggle switch */\n\t\ttransition: background 400ms ease;\n\n\t\twidth: var(--ck-switch-button-toggle-width);\n\t\tbackground: var(--ck-color-switch-button-off-background);\n\n\t\t& .ck-button__toggle__inner {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-radius: calc(.5 * var(--ck-border-radius));\n\t\t\t}\n\n\t\t\t/* Leave some tiny bit of space around the inner part of the switch */\n\t\t\tmargin: var(--ck-switch-button-toggle-spacing);\n\t\t\twidth: var(--ck-switch-button-toggle-inner-size);\n\t\t\theight: var(--ck-switch-button-toggle-inner-size);\n\t\t\tbackground: var(--ck-color-switch-button-inner-background);\n\n\t\t\t/* Gently animate the inner part of the toggle switch */\n\t\t\ttransition: all 300ms ease;\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-switch-button-off-hover-background);\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\tbox-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-button__toggle {\n\t\t@mixin ck-disabled;\n\t}\n\n\t&.ck-on .ck-button__toggle {\n\t\tbackground: var(--ck-color-switch-button-on-background);\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-switch-button-on-hover-background);\n\t\t}\n\n\t\t& .ck-button__toggle__inner {\n\t\t\t/*\n\t\t\t * Move the toggle switch to the right. It will be animated.\n\t\t\t */\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\ttransform: translateX( var( --ck-switch-button-translation ) );\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-toolbar-dropdown .ck.ck-toolbar .ck.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar-dropdown .ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css"],names:[],mappings:"AAMC,6DACC,gBACD,CAGC,6DACC,qCACD,CCRF,oCACC,QACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-toolbar-dropdown {\n\t& .ck.ck-toolbar .ck.ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t& .ck-dropdown__panel .ck-button {\n\t\t&:focus {\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-toolbar-dropdown .ck-toolbar {\n\tborder: 0;\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,6CCIC,eDqBD,CAzBA,iICQE,qCAAsC,CDJtC,wBAqBF,CAfE,mFCND,eDYC,CANA,6MCFA,qCAAsC,CDIpC,wBAAyB,CACzB,2BAA4B,CAC5B,4BAEF,CAEA,kFCdD,eDmBC,CALA,2MCVA,qCAAsC,CDYpC,wBAAyB,CACzB,yBAEF",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-dropdown .ck-dropdown__panel .ck-list {\n\t/* Disabled radius of top-left border to be consistent with .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t/* Make sure the button belonging to the first/last child of the list goes well with the\n\tborder radius of the entire panel. */\n\t& .ck-list__item {\n\t\t&:first-child .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\n\t\t&:last-child .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;background:var(--ck-color-toolbar-border);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items>*{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>*,.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,eCEC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBAAgB,CDFhB,YAAa,CACb,oBAAqB,CACrB,kBAyCD,CAvCC,kCACC,YAAa,CACb,kBAAmB,CACnB,kBAAmB,CACnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE3CF,eCGC,eD0FD,CA7FA,qECOE,qCDsFF,CA7FA,eAGC,6CAA8C,CAC9C,iCAAkC,CAClC,+CAwFD,CAtFC,yCACC,kBAAmB,CACnB,SAAU,CACV,aAAc,CACd,yCAA0C,CAM1C,kCAAmC,CACnC,qCACD,CAGC,oCAEC,kCAAmC,CACnC,qCAAsC,CAGtC,oCACD,CAIA,kEACC,YACD,CAGD,oFAGC,kCAAmC,CACnC,qCACD,CAEA,mCAEC,SAgBD,CAbC,0DAEC,UAAW,CAGX,QAAS,CAGT,eAAgB,CAGhB,QACD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAvFF,qCA2FE,QAEF,CAYC,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JACC,wBAAyB,CACzB,2BACD,CAGA,2JACC,yBAA0B,CAC1B,4BACD,CAID,qGACC,mCACD,CAGA,yLACC,mCACD,CAWA,qHACC,cACD,CAIC,6JACC,yBAA0B,CAC1B,4BACD,CAGA,2JACC,wBAAyB,CACzB,2BACD,CAID,qGACC,oCACD,CAGA,yLACC,oCACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\n\t& > .ck-toolbar__items {\n\t\tdisplay: flex;\n\t\tflex-flow: row wrap;\n\t\talign-items: center;\n\t\tflex-grow: 1;\n\n\t}\n\n\t& .ck.ck-toolbar__separator {\n\t\tdisplay: inline-block;\n\n\t\t/*\n\t\t * A leading or trailing separator makes no sense (separates from nothing on one side).\n\t\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\n\t\t * moved to another toolbar in the dropdown.\n\t\t */\n\t\t&:first-child,\n\t\t&:last-child {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&.ck-toolbar_grouping > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t&.ck-toolbar_vertical > .ck-toolbar__items {\n\t\tflex-direction: column;\n\t}\n\n\t&.ck-toolbar_floating > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t& > .ck-dropdown__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-toolbar-background);\n\tpadding: 0 var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\n\t& .ck.ck-toolbar__separator {\n\t\talign-self: stretch;\n\t\twidth: 1px;\n\t\tmin-width: 1px;\n\t\tbackground: var(--ck-color-toolbar-border);\n\n\t\t/*\n\t\t * These margins make the separators look better in balloon toolbars (when aligned with the "tip").\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\n\t\t */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t& > .ck-toolbar__items {\n\t\t& > * {\n\t\t\t/* Make sure items wrapped to the next line have v-spacing */\n\t\t\tmargin-top: var(--ck-spacing-small);\n\t\t\tmargin-bottom: var(--ck-spacing-small);\n\n\t\t\t/* (#11) Separate toolbar items. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t/* Don\'t display a separator after an empty items container, for instance,\n\t\twhen all items were grouped */\n\t\t&:empty + .ck.ck-toolbar__separator {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& > .ck-toolbar__items > *,\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/* Make sure items wrapped to the next line have v-spacing */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t&.ck-toolbar_vertical {\n\t\t/* Items in a vertical toolbar span the entire width. */\n\t\tpadding: 0;\n\n\t\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\n\t\t& > .ck-toolbar__items > .ck {\n\t\t\t/* Items in a vertical toolbar should span the horizontal space. */\n\t\t\twidth: 100%;\n\n\t\t\t/* Items in a vertical toolbar should have no margin. */\n\t\t\tmargin: 0;\n\n\t\t\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\n\t\t\tborder-radius: 0;\n\n\t\t\t/* Items in a vertical toolbar span the entire width so any border is pointless. */\n\t\t\tborder: 0;\n\t\t}\n\t}\n\n\t&.ck-toolbar_compact {\n\t\t/* No spacing around items. */\n\t\tpadding: 0;\n\n\t\t& > .ck-toolbar__items > * {\n\t\t\t/* Compact toolbar items have no spacing between them. */\n\t\t\tmargin: 0;\n\n\t\t\t/* "Middle" children should have no rounded corners. */\n\t\t\t&:not(:first-child):not(:last-child) {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/*\n\t\t * Dropdown button has asymmetric padding to fit the arrow.\n\t\t * This button has no arrow so let\'s revert that padding back to normal.\n\t\t */\n\t\t& > .ck.ck-button.ck-dropdown__button {\n\t\t\tpadding-left: var(--ck-spacing-tiny);\n\t\t}\n\t}\n\n\t@nest .ck-toolbar-container & {\n\t\tborder: 0;\n\t}\n}\n\n/* stylelint-disable */\n\n/*\n * Styles for RTL toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="rtl"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="rtl"] {\n\t& > .ck-toolbar__items > .ck {\n\t\tmargin-right: 0;\n\t}\n\n\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\n\t\t/* (#11) Separate toolbar items. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-left: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n/*\n * Styles for LTR toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="ltr"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="ltr"] {\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-right: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n}\n\n/* stylelint-enable */\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css"],names:[],mappings:"AAKA,uBAEC,eAAgB,CAGhB,mBAAoB,CACpB,kBAAmB,CAEnB,aAAc,CACd,cAAe,CACf,iBAAkB,CAClB,0BACD,CAEA,gCACC,aAAc,CACd,2BACD",sourcesContent:['/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content blockquote {\n\t/* See #12 */\n\toverflow: hidden;\n\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\n\tpadding-right: 1.5em;\n\tpadding-left: 1.5em;\n\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tfont-style: italic;\n\tborder-left: solid 5px hsl(0, 0%, 80%);\n}\n\n.ck-content[dir="rtl"] blockquote {\n\tborder-left: 0;\n\tborder-right: solid 5px hsl(0, 0%, 80%);\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content code{background-color:hsla(0,0%,78%,.3);padding:.15em;border-radius:2px}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css"],names:[],mappings:"AAKA,iBACC,kCAAuC,CACvC,aAAc,CACd,iBACD,CAEA,0CACC,kCACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content code {\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\n\tpadding: .15em;\n\tborder-radius: 2px;\n}\n\n.ck.ck-editor__editable .ck-code_selected {\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-right-radius:unset;border-bottom-right-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-left-radius:unset;border-bottom-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-radius:0}.ck-rounded-corners [dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow,[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:unset;border-bottom-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-right-radius:unset;border-bottom-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-left-color:var(--ck-color-split-button-hover-border)}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-right-color:var(--ck-color-split-button-hover-border)}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,mBAEC,iBAUD,CARC,iDACC,qCACD,CC0BA,8DACC,YACD,CClCD,MACC,gDAAyD,CACzD,4CACD,CAMC,qDAGE,6BAA8B,CAC9B,gCAQF,CAZA,qDASE,4BAA6B,CAC7B,+BAEF,CAEA,0CAGC,eAmBD,CAtBA,oDCnBA,eDyCA,CAtBA,+ICfC,qCAAsC,CDuBpC,4BAA6B,CAC7B,+BAaH,CAtBA,oDAeE,6BAA8B,CAC9B,gCAMF,CAHC,8CACC,mCACD,CASA,0KACC,wDACD,CAGC,sKACC,2DACD,CAIA,sKACC,4DACD,CAMF,uCCpEA,eD8EA,CAVA,qHChEC,qCD0ED,CARE,qKACC,2BACD,CAEA,mKACC,4BACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../tooltip/mixins/_tooltip.css";\n\n.ck.ck-splitbutton {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-splitbutton__action:focus {\n\t\tz-index: calc(var(--ck-z-default) + 1);\n\t}\n\n\t/* Disable tooltips for the buttons when the button is "open" */\n\t&.ck-splitbutton_open > .ck-button {\n\t\t@mixin ck-tooltip_disabled;\n\t}\n}\n\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Enables the tooltip, which is the tooltip is in DOM but\n * not yet displayed.\n */\n@define-mixin ck-tooltip_enabled {\n\t& .ck-tooltip {\n\t\tdisplay: block;\n\n\t\t/*\n\t\t * Don't display tooltips in devices which don't support :hover.\n\t\t * In fact, it's all about iOS, which forces user to click UI elements twice to execute\n\t\t * the primary action, when tooltips are enabled.\n\t\t *\n\t\t * Q: OK, but why not the following query?\n\t\t *\n\t\t * @media (hover) {\n\t\t * display: block;\n\t\t * }\n\t\t *\n\t\t * A: Because FF does not support it and it would completely disable tooltips\n\t\t * in that browser.\n\t\t *\n\t\t * More in https://github.com/ckeditor/ckeditor5/issues/920.\n\t\t */\n\t\t@media (hover:none) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/**\n * Disables the tooltip making it disappear from DOM.\n */\n@define-mixin ck-tooltip_disabled {\n\t& .ck-tooltip {\n\t\tdisplay: none;\n\t}\n}\n\n/**\n * Shows the tooltip, which is already in DOM.\n * Requires `ck-tooltip_enabled` first.\n */\n@define-mixin ck-tooltip_visible {\n\t& .ck-tooltip {\n\t\tvisibility: visible;\n\t\topacity: 1;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\n\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\n}\n\n.ck.ck-splitbutton {\n\t/*\n\t * Note: ck-rounded and ck-dir mixins don\'t go together (because they both use @nest).\n\t */\n\t& > .ck-splitbutton__action {\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the action button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the action button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\t}\n\n\t& > .ck-splitbutton__arrow {\n\t\t/* It\'s a text-less button and since the icon is positioned absolutely in such situation,\n\t\tit must get some arbitrary min-width. */\n\t\tmin-width: unset;\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the arrow button on the left side */\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: unset;\n\t\t\t\tborder-bottom-left-radius: unset;\n\t\t\t}\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the arrow button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\t\t}\n\t}\n\n\t/* When the split button is "open" (the arrow is on) or being hovered, it should get some styling\n\tas a whole. The background of both buttons should stand out and there should be a visual\n\tseparation between both buttons. */\n\t&.ck-splitbutton_open,\n\t&:hover {\n\t\t/* When the split button hovered as a whole, not as individual buttons. */\n\t\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\n\t\t\tbackground: var(--ck-color-split-button-hover-background);\n\t\t}\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled) {\n\t\t\t\tborder-left-color: var(--ck-color-split-button-hover-border);\n\t\t\t}\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled) {\n\t\t\t\tborder-right-color: var(--ck-color-split-button-hover-border);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Don\'t round the bottom left and right corners of the buttons when "open"\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-splitbutton_open {\n\t\t@mixin ck-rounded-corners {\n\t\t\t& > .ck-splitbutton__action {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t}\n\n\t\t\t& > .ck-splitbutton__arrow {\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content pre{padding:1em;color:#353535;background:hsla(0,0%,78%,.3);border:1px solid #c4c4c4;border-radius:2px;text-align:left;direction:ltr;tab-size:4;white-space:pre-wrap;font-style:normal;min-width:200px}.ck-content pre code{background:unset;padding:0;border-radius:0}.ck.ck-editor__editable pre{position:relative}.ck.ck-editor__editable pre[data-language]:after{content:attr(data-language);position:absolute}:root{--ck-color-code-block-label-background:#757575}.ck.ck-editor__editable pre[data-language]:after{top:-1px;right:10px;background:var(--ck-color-code-block-label-background);font-size:10px;font-family:var(--ck-font-face);line-height:16px;padding:var(--ck-spacing-tiny) var(--ck-spacing-medium);color:#fff;white-space:nowrap}.ck.ck-code-block-dropdown .ck-dropdown__panel{max-height:250px;overflow-y:auto;overflow-x:hidden}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-code-block/theme/codeblock.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-code-block/codeblock.css"],names:[],mappings:"AAKA,gBACC,WAAY,CACZ,aAAwB,CACxB,4BAAiC,CACjC,wBAAiC,CACjC,iBAAkB,CAGlB,eAAgB,CAChB,aAAc,CAEd,UAAW,CACX,oBAAqB,CAGrB,iBAAkB,CAGlB,eAOD,CALC,qBACC,gBAAiB,CACjB,SAAU,CACV,eACD,CAGD,4BACC,iBAMD,CAJC,iDACC,2BAA4B,CAC5B,iBACD,CCjCD,MACC,8CACD,CAEA,iDACC,QAAS,CACT,UAAW,CACX,sDAAuD,CAEvD,cAAe,CACf,+BAAgC,CAChC,gBAAiB,CACjB,uDAAwD,CACxD,UAAuB,CACvB,kBACD,CAEA,+CAEC,gBAAiB,CACjB,eAAgB,CAChB,iBACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content pre {\n\tpadding: 1em;\n\tcolor: hsl(0, 0%, 20.8%);\n\tbackground: hsla(0, 0%, 78%, 0.3);\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\n\t/* Code block are language direction–agnostic. */\n\ttext-align: left;\n\tdirection: ltr;\n\n\ttab-size: 4;\n\twhite-space: pre-wrap;\n\n\t/* Don't inherit the style, e.g. when in a block quote. */\n\tfont-style: normal;\n\n\t/* Don't let the code be squashed e.g. when in a table cell. */\n\tmin-width: 200px;\n\n\t& code {\n\t\tbackground: unset;\n\t\tpadding: 0;\n\t\tborder-radius: 0;\n\t}\n}\n\n.ck.ck-editor__editable pre {\n\tposition: relative;\n\n\t&[data-language]::after {\n\t\tcontent: attr(data-language);\n\t\tposition: absolute;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-code-block-label-background: hsl(0, 0%, 46%);\n}\n\n.ck.ck-editor__editable pre[data-language]::after {\n\ttop: -1px;\n\tright: 10px;\n\tbackground: var(--ck-color-code-block-label-background);\n\n\tfont-size: 10px;\n\tfont-family: var(--ck-font-face);\n\tline-height: 16px;\n\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-medium);\n\tcolor: hsl(0, 0%, 100%);\n\twhite-space: nowrap;\n}\n\n.ck.ck-code-block-dropdown .ck-dropdown__panel {\n\t/* There could be dozens of languages available. Use scroll to prevent a 10e6px dropdown. */\n\tmax-height: 250px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#000}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{width:var(--ck-color-grid-tile-size);height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;border:0}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{display:none;color:var(--ck-color-color-grid-check-icon)}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css"],names:[],mappings:"AAKA,kBACC,YACD,CCAA,MACC,8BAA+B,CAK/B,qCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBACC,oCAAqC,CACrC,qCAAsC,CACtC,wCAAyC,CACzC,yCAA0C,CAC1C,SAAU,CACV,8BAA+B,CAC/B,QAmCD,CAjCC,oCACC,YAAa,CACb,gBACD,CAEA,4DACC,gDACD,CAEA,oCACC,YAAa,CACb,2CACD,CAEA,8BACC,8FAKD,CAHC,0CACC,aACD,CAGD,8HAIC,QACD,CAEA,gGAEC,iGACD,CAGD,yBACC,oCACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-color-grid {\n\tdisplay: grid;\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-grid-tile-size: 24px;\n\n\t/* Not using global colors here because these may change but some colors in a pallette\n\t * require special treatment. For instance, this ensures no matter what the UI text color is,\n\t * the check icon will look good on the black color tile. */\n\t--ck-color-color-grid-check-icon: hsl(0, 0%, 0%);\n}\n\n.ck.ck-color-grid {\n\tgrid-gap: 5px;\n\tpadding: 8px;\n}\n\n.ck.ck-color-grid__tile {\n\twidth: var(--ck-color-grid-tile-size);\n\theight: var(--ck-color-grid-tile-size);\n\tmin-width: var(--ck-color-grid-tile-size);\n\tmin-height: var(--ck-color-grid-tile-size);\n\tpadding: 0;\n\ttransition: .2s ease box-shadow;\n\tborder: 0;\n\n\t&.ck-disabled {\n\t\tcursor: unset;\n\t\ttransition: unset;\n\t}\n\n\t&.ck-color-table__color-tile_bordered {\n\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\n\t}\n\n\t& .ck.ck-icon {\n\t\tdisplay: none;\n\t\tcolor: var(--ck-color-color-grid-check-icon);\n\t}\n\n\t&.ck-on {\n\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\n\n\t\t& .ck.ck-icon {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t&.ck-on,\n\t&:focus:not( .ck-disabled ),\n\t&:hover:not( .ck-disabled ) {\n\t\t/* Disable the default .ck-button\'s border ring. */\n\t\tborder: 0;\n\t}\n\n\t&:focus:not( .ck-disabled ),\n\t&:hover:not( .ck-disabled ) {\n\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t}\n}\n\n.ck.ck-color-grid__label {\n\tpadding: 0 var(--ck-spacing-standard);\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css"],names:[],mappings:"AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tdisplay: block;\n}\n\n.ck.ck-voice-label {\n\tdisplay: none;\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck .ck-button.ck-color-table__remove-color{display:flex;align-items:center;width:100%}label.ck.ck-color-grid__label{font-weight:unset}.ck .ck-button.ck-color-table__remove-color{padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck .ck-button.ck-color-table__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-base-border)}[dir=ltr] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-font/theme/fontcolor.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-font/fontcolor.css"],names:[],mappings:"AAKA,4CACC,YAAa,CACb,kBAAmB,CACnB,UACD,CAEA,8BACC,iBACD,CCNA,4CACC,qEAAyE,CACzE,2BAA4B,CAC5B,4BAeD,CAbC,wDACC,mDACD,CAEA,kEAEE,uCAMF,CARA,kEAME,sCAEF",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-button.ck-color-table__remove-color {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n}\n\nlabel.ck.ck-color-grid__label {\n\tfont-weight: unset;\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck .ck-button.ck-color-table__remove-color {\n\tpadding: calc(var(--ck-spacing-standard) / 2 ) var(--ck-spacing-standard);\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n\n\t&:not(:focus) {\n\t\tborder-bottom: 1px solid var(--ck-color-base-border);\n\t}\n\n\t& .ck.ck-icon {\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-right: var(--ck-spacing-standard);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content .text-tiny{font-size:.7em}.ck-content .text-small{font-size:.85em}.ck-content .text-big{font-size:1.4em}.ck-content .text-huge{font-size:1.8em}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-font/theme/fontsize.css"],names:[],mappings:"AAUC,uBACC,cACD,CAEA,wBACC,eACD,CAEA,sBACC,eACD,CAEA,uBACC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* The values should be synchronized with the "FONT_SIZE_PRESET_UNITS" object in the "/src/fontsize/utils.js" file. */\n\n/* Styles should be prefixed with the `.ck-content` class.\nSee https://github.com/ckeditor/ckeditor5/issues/6636 */\n.ck-content {\n\t& .text-tiny {\n\t\tfont-size: .7em;\n\t}\n\n\t& .text-small {\n\t\tfont-size: .85em;\n\t}\n\n\t& .text-big {\n\t\tfont-size: 1.4em;\n\t}\n\n\t& .text-huge {\n\t\tfont-size: 1.8em;\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-heading/theme/heading.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css"],names:[],mappings:"AAKA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-heading_heading1 {\n\tfont-size: 20px;\n}\n\n.ck.ck-heading_heading2 {\n\tfont-size: 17px;\n}\n\n.ck.ck-heading_heading3 {\n\tfont-size: 14px;\n}\n\n.ck[class*="ck-heading_heading"] {\n\tfont-weight: bold;\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Resize dropdown's button label. */\n.ck.ck-dropdown.ck-heading-dropdown {\n\t& .ck-dropdown__button .ck-button__label {\n\t\twidth: 8em;\n\t}\n\n\t& .ck-dropdown__panel .ck-list__item {\n\t\tmin-width: 18em;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,":root{--ck-highlight-marker-yellow:#fdfd77;--ck-highlight-marker-green:#62f962;--ck-highlight-marker-pink:#fc7899;--ck-highlight-marker-blue:#72ccfd;--ck-highlight-pen-red:#e71313;--ck-highlight-pen-green:#128a00}.ck-content .marker-yellow{background-color:var(--ck-highlight-marker-yellow)}.ck-content .marker-green{background-color:var(--ck-highlight-marker-green)}.ck-content .marker-pink{background-color:var(--ck-highlight-marker-pink)}.ck-content .marker-blue{background-color:var(--ck-highlight-marker-blue)}.ck-content .pen-red{color:var(--ck-highlight-pen-red);background-color:transparent}.ck-content .pen-green{color:var(--ck-highlight-pen-green);background-color:transparent}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css"],names:[],mappings:"AAKA,MACC,oCAA+C,CAC/C,mCAA+C,CAC/C,kCAA8C,CAC9C,kCAA8C,CAC9C,8BAAwC,CACxC,gCACD,CAGC,2BACC,kDACD,CAFA,0BACC,iDACD,CAFA,yBACC,gDACD,CAFA,yBACC,gDACD,CAIA,qBACC,iCAAqC,CAGrC,4BACD,CALA,uBACC,mCAAqC,CAGrC,4BACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-highlight-marker-yellow: hsl(60, 97%, 73%);\n\t--ck-highlight-marker-green: hsl(120, 93%, 68%);\n\t--ck-highlight-marker-pink: hsl(345, 96%, 73%);\n\t--ck-highlight-marker-blue: hsl(201, 97%, 72%);\n\t--ck-highlight-pen-red: hsl(0, 85%, 49%);\n\t--ck-highlight-pen-green: hsl(112, 100%, 27%);\n}\n\n@define-mixin highlight-marker-color $color {\n\t.ck-content .marker-$color {\n\t\tbackground-color: var(--ck-highlight-marker-$color);\n\t}\n}\n\n@define-mixin highlight-pen-color $color {\n\t.ck-content .pen-$color {\n\t\tcolor: var(--ck-highlight-pen-$color);\n\n\t\t/* Override default yellow background of `` from user agent stylesheet */\n\t\tbackground-color: transparent;\n\t}\n}\n\n@mixin highlight-marker-color yellow;\n@mixin highlight-marker-color green;\n@mixin highlight-marker-color pink;\n@mixin highlight-marker-color blue;\n\n@mixin highlight-pen-color red;\n@mixin highlight-pen-color green;\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border);filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBCJC,eD4ID,CAxIA,iFCAE,qCDwIF,CAxIA,qBENC,oCAA8B,CFU9B,eAAgB,CAEhB,2CAA4C,CAC5C,6CAiID,CA9HE,+GAEC,OAAQ,CACR,QAAS,CACT,kBACD,CAIA,uFAEC,oDAAoH,CAApH,kDAAoH,CAApH,qDAAoH,CAApH,kBACD,CAEA,4CACC,gDACD,CAEA,uFAHC,6BAA8E,CAA9E,8BAA8E,CAA9E,4BAMD,CAHA,2CACC,oDAAkF,CAClF,yCACD,CAIA,uFAEC,oDAAoH,CAApH,qBAAoH,CAApH,qDAAoH,CAApH,+CACD,CAEA,4CACC,6CAAkE,CAClE,uDACD,CAEA,uFAJC,6BAAkE,CAAlE,+BAAkE,CAAlE,8BAOD,CAHA,2CACC,iDAAkF,CAClF,4CACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,8CACD,CAIA,2GAEC,+CAAkD,CAClD,8CACD,CAIA,2GAEC,gDAAmD,CACnD,8CACD,CAIA,6GAEC,SAAU,CACV,uDAA0D,CAC1D,8CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,8CACD,CAIA,6GAEC,SAAU,CACV,uDAA0D,CAC1D,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* Make sure the balloon arrow does not float over its children. */\n\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\n}\n\n.ck.ck-balloon-panel {\n\tdisplay: none;\n\tposition: absolute;\n\n\tz-index: var(--ck-z-modal);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_visible {\n\t\tdisplay: block;\n\t}\n}\n','/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-arrow-offset: 2px;\n\t--ck-balloon-arrow-height: 10px;\n\t--ck-balloon-arrow-half-width: 8px;\n\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\n}\n\n.ck.ck-balloon-panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: 1px solid var(--ck-color-panel-border);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\n\t\t\tmargin-top: var(--ck-balloon-arrow-offset);\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: var(--ck-color-panel-border) transparent transparent;\n\t\t\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\n\t\t\tmargin-bottom: var(--ck-balloon-arrow-offset);\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_n {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_ne {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_s {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_se {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_smw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nmw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck .ck-widget .ck-widget__type-around__button{display:block;position:absolute;overflow:hidden;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{position:absolute;top:50%;left:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{top:calc(var(--ck-widget-outline-thickness)*-0.5);left:min(10%,30px);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-0.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;position:absolute;top:1px;left:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;position:absolute;left:0;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{top:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{width:var(--ck-widget-type-around-button-size);height:var(--ck-widget-type-around-button-size);background:var(--ck-color-widget-type-around-button);border-radius:100px;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);opacity:0;pointer-events:none}.ck .ck-widget .ck-widget__type-around__button svg{width:10px;height:8px;transform:translate(-50%,-50%);transition:transform .5s ease;margin-top:1px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{width:calc(var(--ck-widget-type-around-button-size) - 2px);height:calc(var(--ck-widget-type-around-button-size) - 2px);border-radius:100px;background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3))}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{pointer-events:none;height:1px;animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;outline:1px solid hsla(0,0%,100%,.5);background:var(--ck-color-base-text)}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer{opacity:0}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css"],names:[],mappings:"AASC,+CACC,aAAc,CACd,iBAAkB,CAClB,eAAgB,CAChB,2BAwBD,CAtBC,mDACC,iBAAkB,CAClB,OAAQ,CACR,QAAS,CACT,qCACD,CAEA,qFAEC,iDAAoD,CACpD,kBAAoB,CAEpB,0BACD,CAEA,oFAEC,oDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CACd,iBAAkB,CAClB,OAAQ,CACR,QAAS,CACT,qCACD,CAMD,2EACC,YAAa,CACb,iBAAkB,CAClB,MAAO,CACP,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHACC,qDAA0D,CAC1D,aACD,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CACC,8CAA+C,CAC/C,+CAAgD,CAChD,oDAAqD,CACrD,mBAAoB,CACpB,uMAAyM,CAb1M,SAAU,CACV,mBA0DA,CA1CC,mDACC,UAAW,CACX,UAAW,CACX,8BAA+B,CAC/B,6BAA8B,CAC9B,cAgBD,CAdC,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DAcD,CARE,kEACC,oDACD,CAEA,8DACC,wDACD,CAUF,uKAvED,SAAU,CACV,mBAwEC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLACC,0DAA2D,CAC3D,2DAA4D,CAC5D,mBAAoB,CACpB,uEACD,CAOD,8GACC,gBACD,CAKA,mDACC,mBAAoB,CACpB,UAAW,CACX,mFAAoF,CAMpF,oCAAwC,CACxC,oCACD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAlJD,SAAU,CACV,mBAmJC,CASE,0jBACC,SACD,CASF,mPACC,SACD,CAcC,iRAxLF,SAAU,CACV,mBAyLE,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\toverflow: hidden;\n\t\tz-index: var(--ck-z-default);\n\n\t\t& svg {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\tz-index: calc(var(--ck-z-default) + 2);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_before {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tleft: min(10%, 30px);\n\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_after {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tright: min(10%, 30px);\n\n\t\t\ttransform: translateY(50%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n\n\t/*\n\t * When the widget is hovered the "fake caret" would normally be narrower than the\n\t * extra outline displayed around the widget. Let\'s extend the "fake caret" to match\n\t * the full width of the widget.\n\t */\n\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\n\t\tright: calc( -1 * var(--ck-widget-outline-thickness) );\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n}\n\n/*\n * Integration with the read-only mode of the editor.\n */\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the restricted editing mode (feature) of the editor.\n */\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\n */\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\n\tdisplay: none;\n}\n','/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-widget-type-around-button-size: 20px;\n\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\n\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\n\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\n\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\n\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\n\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\n}\n\n@define-mixin ck-widget-type-around-button-visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n@define-mixin ck-widget-type-around-button-hidden {\n\topacity: 0;\n\tpointer-events: none;\n}\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\twidth: var(--ck-widget-type-around-button-size);\n\t\theight: var(--ck-widget-type-around-button-size);\n\t\tbackground: var(--ck-color-widget-type-around-button);\n\t\tborder-radius: 100px;\n\t\ttransition: opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve), background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t@mixin ck-widget-type-around-button-hidden;\n\n\t\t& svg {\n\t\t\twidth: 10px;\n\t\t\theight: 8px;\n\t\t\ttransform: translate(-50%,-50%);\n\t\t\ttransition: transform .5s ease;\n\t\t\tmargin-top: 1px;\n\n\t\t\t& * {\n\t\t\t\tstroke-dasharray: 10;\n\t\t\t\tstroke-dashoffset: 0;\n\n\t\t\t\tfill: none;\n\t\t\t\tstroke: var(--ck-color-widget-type-around-button-icon);\n\t\t\t\tstroke-width: 1.5px;\n\t\t\t\tstroke-linecap: round;\n\t\t\t\tstroke-linejoin: round;\n\t\t\t}\n\n\t\t\t& line {\n\t\t\t\tstroke-dasharray: 7;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\t/*\n\t\t\t * Display the "sonar" around the button when hovered.\n\t\t\t */\n\t\t\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\n\n\t\t\t/*\n\t\t\t * Animate active button\'s icon.\n\t\t\t */\n\t\t\t& svg {\n\t\t\t\t& polyline {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-dash 2s linear;\n\t\t\t\t}\n\n\t\t\t\t& line {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Show type around buttons when the widget gets selected or being hovered.\n\t */\n\t&.ck-widget_selected,\n\t&:hover {\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-visible;\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\n\t * and still can be hovered).\n\t */\n\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\tbackground: var(--ck-color-widget-type-around-button-hover);\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\tbackground: var(--ck-color-widget-type-around-button-active);\n\n\t\t&::after {\n\t\t\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\tborder-radius: 100px;\n\t\t\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the "before" button when the widget has a selection handle. Because some space\n\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\n\t */\n\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\n\t\tmargin-left: 20px;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& .ck-widget__type-around__fake-caret {\n\t\tpointer-events: none;\n\t\theight: 1px;\n\t\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\n\n\t\t/*\n\t\t * The semi-transparent-outline+background combo improves the contrast\n\t\t * when the background underneath the fake caret is dark.\n\t\t */\n\t\toutline: solid 1px hsla(0, 0%, 100%, .5);\n\t\tbackground: var(--ck-color-base-text);\n\t}\n\n\t/*\n\t * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t * Despite the widget being physically selected in the model, its outline should disappear.\n\t */\n\t&.ck-widget_selected {\n\t\t&.ck-widget_type-around_show-fake-caret_before,\n\t\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t\toutline-color: transparent;\n\t\t}\n\t}\n\n\t&.ck-widget_type-around_show-fake-caret_before,\n\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t/*\n\t\t * When the "fake caret" is visible we simulate that the widget is not selected\n\t\t * (despite being physically selected), so the outline color should be for the\n\t\t * unselected widget.\n\t\t */\n\t\t&.ck-widget_selected:hover {\n\t\t\toutline-color: var(--ck-color-widget-hover-border);\n\t\t}\n\n\t\t/*\n\t\t * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\n\t\t */\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\n\t\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\n\t\t */\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t&.ck-widget_selected,\n\t\t\t&.ck-widget_selected:hover {\n\t\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\t\topacity: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\n\t\t * hide the resize UI because it creates too much noise. It can be visible when the user\n\t\t * hovers the widget, though.\n\t\t */\n\t\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\n\t\t\topacity: 0\n\t\t}\n\t}\n}\n\n/*\n * Hide type around buttons when the widget is selected as a child of a selected\n * nested editable (e.g. mulit-cell table selection).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\n */\n.ck-editor__nested-editable.ck-editor__editable_selected {\n\t& .ck-widget {\n\t\t&.ck-widget_selected,\n\t\t&:hover {\n\t\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\n */\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\n\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\n\n\t& svg * {\n\t\tstroke: hsl(0,0%,60%);\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-dash {\n\t0% {\n\t\tstroke-dashoffset: 10;\n\t}\n\t20%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-tip-dash {\n\t0%, 20% {\n\t\tstroke-dashoffset: 7;\n\t}\n\t40%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-button-sonar {\n\t0% {\n\t\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n\t50% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\n\t}\n\t100% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n}\n\n@keyframes ck-widget-type-around-fake-caret-pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t49% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t99% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-resizer-size:10px;--ck-resizer-border-width:1px;--ck-resizer-border-radius:2px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-tooltip-offset:10px;--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,MACC,+CAAgD,CAChD,sBAAuB,CACvB,6BAA8B,CAC9B,8BAA+B,CAG/B,yDAAiE,CAEjE,gCAAiC,CACjC,6CAAsD,CACtD,uCACD,CAOA,8DAEC,iBAuBD,CArBC,4EACC,iBAOD,CALC,qFAGC,aACD,CAWD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CACtD,0CAA2C,CAC3C,qDAAsD,CACtD,6CAA8C,CAC9C,kCAAmC,CACnC,aAAc,CACd,+BA4BD,CA1BC,gLAIC,iBACD,CAEA,0CACC,oCAAuC,CACvC,qCACD,CAEA,2CACC,oCAAuC,CACvC,sCACD,CAEA,8CACC,uCAA0C,CAC1C,sCACD,CAEA,6CACC,uCAA0C,CAC1C,qCACD,CC7ED,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eACC,gDAAiD,CACjD,mBAAoB,CACpB,yBAA0B,CAC1B,6GAUD,CARC,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAWD,CAPC,yGC/BA,YAAa,CACb,2BAA2B,CCF3B,qCAA8B,CFqC7B,iEACD,CAIA,4EACC,WAAY,CACZ,qBAAsB,CAGtB,4BAA6B,CAC7B,SAAU,CAMV,6SAG6F,CAG7F,iEAAkE,CAGlE,2BAA4B,CAC5B,mDAqBD,CAnBC,qFAEC,wCAAyC,CACzC,yCAA0C,CAC1C,oDASD,CANC,kHACC,SAAU,CAGV,+DACD,CAID,wHACC,SACD,CAID,kFACC,SAAU,CACV,oDACD,CAKC,oMACC,SAAU,CACV,6CAMD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-resizer: var(--ck-color-focus-border);\n\t--ck-resizer-size: 10px;\n\t--ck-resizer-border-width: 1px;\n\t--ck-resizer-border-radius: 2px;\n\n\t/* Set the resizer with a 50% offset. */\n\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\n\n\t--ck-resizer-tooltip-offset: 10px;\n\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\n\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\n}\n\n.ck .ck-widget {\n\t/* This is neccessary for type around UI to be positioned properly. */\n\tposition: relative;\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n\n\t& .ck-widget__selection-handle {\n\t\tposition: absolute;\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the icon in not a subject to font-size or line-height to avoid\n\t\t\tunnecessary spacing around it. */\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t/* Show the selection handle on mouse hover over the widget. */\n\t&:hover {\n\t\t& .ck-widget__selection-handle {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n\n\t/* Show the selection handle when the widget is selected. */\n\t&.ck-widget_selected .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n}\n\n.ck .ck-size-view {\n\tbackground: var(--ck-color-resizer-tooltip-background);\n\tcolor: var(--ck-color-resizer-tooltip-text);\n\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\n\tborder-radius: var(--ck-resizer-border-radius);\n\tfont-size: var(--ck-font-size-tiny);\n\tdisplay: block;\n\tpadding: var(--ck-spacing-small);\n\n\t&.ck-orientation-top-left,\n\t&.ck-orientation-top-right,\n\t&.ck-orientation-bottom-right,\n\t&.ck-orientation-bottom-left {\n\t\tposition: absolute;\n\t}\n\n\t&.ck-orientation-top-left {\n\t\ttop: var( --ck-resizer-tooltip-offset );\n\t\tleft: var( --ck-resizer-tooltip-offset );\n\t}\n\n\t&.ck-orientation-top-right {\n\t\ttop: var( --ck-resizer-tooltip-offset );\n\t\tright: var( --ck-resizer-tooltip-offset );\n\t}\n\n\t&.ck-orientation-bottom-right {\n\t\tbottom: var( --ck-resizer-tooltip-offset );\n\t\tright: var( --ck-resizer-tooltip-offset );\n\t}\n\n\t&.ck-orientation-bottom-left {\n\t\tbottom: var( --ck-resizer-tooltip-offset );\n\t\tleft: var( --ck-resizer-tooltip-offset );\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n\n:root {\n\t--ck-widget-outline-thickness: 3px;\n\t--ck-widget-handler-icon-size: 16px;\n\t--ck-widget-handler-animation-duration: 200ms;\n\t--ck-widget-handler-animation-curve: ease;\n\n\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\n\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\n\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\n\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\n}\n\n.ck .ck-widget {\n\toutline-width: var(--ck-widget-outline-thickness);\n\toutline-style: solid;\n\toutline-color: transparent;\n\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\n\t}\n\n\t&:hover {\n\t\toutline-color: var(--ck-color-widget-hover-border);\n\t}\n}\n\n.ck .ck-editor__nested-editable {\n\tborder: 1px solid transparent;\n\n\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\n\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\n\t&.ck-editor__nested-editable_focused,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\n\t\tbackground-color: var(--ck-color-widget-editable-focus-background);\n\t}\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t& .ck-widget__selection-handle {\n\t\tpadding: 4px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\n\t\tbackground-color: transparent;\n\t\topacity: 0;\n\n\t\t/* Transition:\n\t\t * background-color for the .ck-widget_selected state change,\n\t\t * visibility for hiding the handler,\n\t\t * opacity for the proper look of the icon when the handler disappears. */\n\t\ttransition:\n\t\t\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t/* Make only top corners round. */\n\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\n\t\t/* Place the drag handler outside the widget wrapper. */\n\t\ttransform: translateY(-100%);\n\t\tleft: calc(0px - var(--ck-widget-outline-thickness));\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\n\t\t\twidth: var(--ck-widget-handler-icon-size);\n\t\t\theight: var(--ck-widget-handler-icon-size);\n\t\t\tcolor: var(--ck-color-widget-drag-handler-icon-color);\n\n\t\t\t/* The "selected" part of the icon is invisible by default */\n\t\t\t& .ck-icon__selected-indicator {\n\t\t\t\topacity: 0;\n\n\t\t\t\t/* Note: The animation is longer on purpose. Simply feels better. */\n\t\t\t\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\n\t\t\t}\n\t\t}\n\n\t\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\n\t\t&:hover .ck-icon .ck-icon__selected-indicator {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t/* Show the selection handler on mouse hover over the widget. */\n\t&:hover .ck-widget__selection-handle {\n\t\topacity: 1;\n\t\tbackground-color: var(--ck-color-widget-hover-border);\n\t}\n\n\t/* Show the selection handler when the widget is selected. */\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\t& .ck-widget__selection-handle {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--ck-color-focus-border);\n\n\t\t\t/* When the widget is selected, notify the user using the proper look of the icon. */\n\t\t\t& .ck-icon .ck-icon__selected-indicator {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* In a RTL environment, align the selection handler to the right side of the widget */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\n\tleft: auto;\n\tright: calc(0px - var(--ck-widget-outline-thickness));\n}\n\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\n.ck.ck-editor__editable.ck-read-only .ck-widget {\n\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\n\ttransition: none;\n\n\t&:not(.ck-widget_selected) {\n\t\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\n\t\t *\n\t\t * Leave the unit because this custom property is used in calc() by other features.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\n\t\t */\n\t\t--ck-widget-outline-thickness: 0px;\n\t}\n\n\t&.ck-widget_with-selection-handle {\n\t\t& .ck-widget__selection-handle,\n\t\t& .ck-widget__selection-handle:hover {\n\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t}\n\t}\n}\n\n/* Style the widget when it\'s selected but the editable it belongs to lost focus. */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck.ck-editor__editable.ck-blurred .ck-widget {\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline-color: var(--ck-color-widget-blurred-border);\n\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t& .ck-widget__selection-handle,\n\t\t\t& .ck-widget__selection-handle:hover {\n\t\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\n\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\n\tIn fact, anything with overflow: hidden.\n\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\n\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view>.ck.ck-label{width:100%;text-overflow:ellipsis;overflow:hidden}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css"],names:[],mappings:"AAKA,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBACD,CAEA,+DACC,gCACD,CAEA,uCACC,UAAW,CACX,sBAAuB,CACvB,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-labeled-field-view .ck-labeled-field-view__status {\n\tfont-size: var(--ck-font-size-small);\n\tmargin-top: var(--ck-spacing-small);\n\n\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\n\tThe status could be very long. */\n\twhite-space: normal;\n}\n\n.ck.ck-labeled-field-view .ck-labeled-field-view__status_error {\n\tcolor: var(--ck-color-base-error);\n}\n\n.ck.ck-labeled-field-view > .ck.ck-label {\n\twidth: 100%;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{box-shadow:var(--ck-inner-shadow),0 0;background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .2s ease-in-out,border .2s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),var(--ck-inner-shadow)}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/inputtext/inputtext.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css"],names:[],mappings:"AASA,MACC,0BACD,CAEA,kBCFC,eDyCD,CAvCA,2ECEE,qCDqCF,CAvCA,kBEJC,qCAA8B,CFQ9B,2CAA4C,CAC5C,6CAA8C,CAC9C,6DAA8D,CAC9D,oCAAqC,CAGrC,4CAA6C,CAG7C,4DA0BD,CAxBC,wBGlBA,YAAa,CACb,2BAA2B,CDF3B,8DFsBA,CAEA,4BACC,sDAAuD,CACvD,oDAAqD,CACrD,yCAMD,CAJC,kCE7BD,uEFgCC,CAGD,2BACC,+CAAgD,CAChD,2CAKD,CAHC,iCEvCD,oEFyCC,CAIF,+BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-input-text-width: 18em;\n}\n\n.ck.ck-input-text {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\n\tbackground: var(--ck-color-input-background);\n\tborder: 1px solid var(--ck-color-input-border);\n\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\n\tmin-width: var(--ck-input-text-width);\n\n\t/* This is important to stay of the same height as surrounding buttons */\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow), var(--ck-inner-shadow);\n\t}\n\n\t&[readonly] {\n\t\tborder: 1px solid var(--ck-color-input-disabled-border);\n\t\tbackground: var(--ck-color-input-disabled-background);\n\t\tcolor: var(--ck-color-input-disabled-text);\n\n\t\t&:focus {\n\t\t\t/* The read-only input should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow), var(--ck-inner-shadow);\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\tborder-color: var(--ck-color-input-error-border);\n\t\tanimation: ck-text-input-shake .3s ease both;\n\n\t\t&:focus {\n\t\t\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow), var(--ck-inner-shadow);\n\t\t}\n\t}\n}\n\n@keyframes ck-text-input-shake {\n\t20% {\n\t\ttransform: translateX(-2px);\n\t}\n\n\t40% {\n\t\ttransform: translateX(2px);\n\t}\n\n\t60% {\n\t\ttransform: translateX(-1px);\n\t}\n\n\t80% {\n\t\ttransform: translateX(1px);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-text-alternative-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-standard)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css"],names:[],mappings:"AAOA,mCACC,UAAW,CACX,OAAQ,CACR,iBAAkB,CAClB,UAAW,CACX,2BAA4B,CAC5B,8BAA+B,CAC/B,SACD,CCTC,oCDaC,wCACC,UAAW,CACX,OAAQ,CACR,iBAAkB,CAClB,UAAW,CACX,2BAA4B,CAC5B,8BAA+B,CAC/B,SACD,CCnBD,CCAD,qDACC,kDACD,CAEA,uBACC,kCAkED,CAhEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,0CA6CF,CA3CE,8CACC,8DAWD,CATC,6DACC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAID,iGAEC,kCAAmC,CACnC,qCAAsC,CAEtC,eAAgB,CAChB,QAAS,CACT,gDAaD,CApBA,0OAcE,aAMF,CAGC,yMACC,kDACD,CDpEF",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck-vertical-form .ck-button::after {\n\tcontent: "";\n\twidth: 0;\n\tposition: absolute;\n\tright: -1px;\n\ttop: var(--ck-spacing-small);\n\tbottom: var(--ck-spacing-small);\n\tz-index: 1;\n}\n\n.ck.ck-responsive-form {\n\t@mixin ck-media-phone {\n\t\t& .ck-button::after {\n\t\t\tcontent: "";\n\t\t\twidth: 0;\n\t\t\tposition: absolute;\n\t\t\tright: -1px;\n\t\t\ttop: var(--ck-spacing-small);\n\t\t\tbottom: var(--ck-spacing-small);\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\n\tborder-right: 1px solid var(--ck-color-base-border);\n}\n\n.ck.ck-responsive-form {\n\tpadding: var(--ck-spacing-standard);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& > :not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& > :not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tpadding: 0;\n\t\twidth: calc(.8 * var(--ck-input-text-width));\n\n\t\t& .ck-labeled-field-view {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-input-text {\n\t\t\t\tmin-width: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t/* Let the long error messages wrap in the narrow form. */\n\t\t\t& .ck-labeled-field-view__error {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\t\t}\n\n\t\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\n\t\t& > .ck-button:nth-last-child(1),\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\tpadding: var(--ck-spacing-standard);\n\t\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t\tborder-radius: 0;\n\t\t\tborder: 0;\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\t&::after {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css"],names:[],mappings:"AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCACC,oCAAqC,CACrC,kCAAmC,CACnC,qCACD,CAGA,iEACC,uCAAwC,CAGxC,mCACD,CAMA,2DACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\n */\n.ck .ck-balloon-rotator__content .ck-toolbar {\n\tjustify-content: center;\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tbackground: var(--ck-color-toolbar-background);\n\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\n\tpadding: 0 var(--ck-spacing-small);\n\n\t/* Let's keep similar appearance to `ck-toolbar`. */\n\t& > * {\n\t\tmargin-right: var(--ck-spacing-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t/* Gives counter more breath than buttons. */\n\t& .ck-balloon-rotator__counter {\n\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t/* We need to use smaller margin because of previous button's right margin. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n.ck .ck-balloon-rotator__content {\n\n\t/* Disable default annotation shadow inside rotator with fake panels. */\n\t& .ck.ck-annotation-wrapper {\n\t\tbox-shadow: none;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBCJC,oCAA8B,CDO9B,eAAgB,CAEhB,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CAEtC,UAAW,CACX,WACD,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-fake-panel {\n\tposition: absolute;\n\n\t/* Fake panels should be placed under main balloon content. */\n\tz-index: calc(var(--ck-z-modal) - 1);\n}\n\n.ck .ck-fake-panel div {\n\tposition: absolute;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tz-index: 2;\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tz-index: 1;\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-fake-panel-offset-horizontal: 6px;\n\t--ck-balloon-fake-panel-offset-vertical: 6px;\n}\n\n/* Let\'s use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\n.ck .ck-fake-panel div {\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: 1px solid var(--ck-color-panel-border);\n\tborder-radius: var(--ck-border-radius);\n\n\twidth: 100%;\n\theight: 100%;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\n\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\n}\n.ck .ck-fake-panel div:nth-child( 3 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\n}\n\n/* If balloon is positioned above element, we need to move fake panel to the top. */\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\n\t--ck-balloon-fake-panel-offset-vertical: -6px;\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content .image{display:table;clear:both;text-align:center;margin:1em auto}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:50px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/image.css"],names:[],mappings:"AAKA,mBACC,aAAc,CACd,UAAW,CACX,iBAAkB,CAGlB,eAeD,CAbC,uBAEC,aAAc,CAGd,aAAc,CAGd,cAAe,CAGf,cACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .image {\n\tdisplay: table;\n\tclear: both;\n\ttext-align: center;\n\n\t/* Make sure there is some space between the content and the image. Center image by default. */\n\tmargin: 1em auto;\n\n\t& img {\n\t\t/* Prevent unnecessary margins caused by line-height (see #44). */\n\t\tdisplay: block;\n\n\t\t/* Center the image if its width is smaller than the content's width. */\n\t\tmargin: 0 auto;\n\n\t\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\n\t\tmax-width: 100%;\n\n\t\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\n\t\tmin-width: 50px;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:#333;background-color:#f7f7f7;padding:.6em;font-size:.75em;outline-offset:-1px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css"],names:[],mappings:"AAKA,8BACC,qBAAsB,CACtB,mBAAoB,CACpB,qBAAsB,CACtB,UAAsB,CACtB,wBAAiC,CACjC,YAAa,CACb,eAAgB,CAChB,mBACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .image > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: bottom;\n\tword-break: break-word;\n\tcolor: hsl(0, 0%, 20%);\n\tbackground-color: hsl(0, 0%, 97%);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,":root{--ck-image-style-spacing:1.5em}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css"],names:[],mappings:"AAKA,MACC,8BACD,CAGC,8BACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,sCACC,gBAAiB,CACjB,iBACD,CAEA,qCACC,WAAY,CACZ,yCACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-image-style-spacing: 1.5em;\n}\n\n.ck-content {\n\t& .image-style-side {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t\tmax-width: 50%;\n\t}\n\n\t& .image-style-align-left {\n\t\tfloat: left;\n\t\tmargin-right: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-align-center {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t}\n\n\t& .image-style-align-right {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-editor__editable .image{position:relative}.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css"],names:[],mappings:"AAKA,+BACC,iBACD,CAGA,gDACC,iBAAkB,CAClB,KAAM,CACN,MACD,CCPC,yCACC,oBACD,CAID,gDACC,UAAW,CACX,OAAQ,CACR,gDAAiD,CACjD,oBACD,CAEA,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable .image {\n\tposition: relative;\n}\n\n/* Upload progress bar. */\n.ck.ck-editor__editable .image .ck-progress-bar {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable .image {\n\t/* Showing animation. */\n\t&.ck-appear {\n\t\tanimation: fadeIn 700ms;\n\t}\n}\n\n/* Upload progress bar. */\n.ck.ck-editor__editable .image .ck-progress-bar {\n\theight: 2px;\n\twidth: 0;\n\tbackground: var(--ck-color-upload-bar-background);\n\ttransition: width 100ms;\n}\n\n@keyframes fadeIn {\n\tfrom { opacity: 0; }\n\tto { opacity: 1; }\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck-image-upload-complete-icon{display:block;position:absolute;top:10px;right:10px;border-radius:50%}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20px;--ck-image-upload-icon-width:2px}.ck-image-upload-complete-icon{width:var(--ck-image-upload-icon-size);height:var(--ck-image-upload-icon-size);opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:var(--ck-image-upload-icon-size);animation-delay:0ms,3s}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css"],names:[],mappings:"AAKA,+BACC,aAAc,CACd,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,iBAMD,CAJC,qCACC,UAAW,CACX,iBACD,CCVD,MACC,iCAA8C,CAC9C,+CAA4D,CAE5D,gCAAiC,CACjC,gCACD,CAEA,+BACC,sCAAuC,CACvC,uCAAwC,CACxC,SAAU,CACV,uDAAwD,CACxD,wEAA0E,CAC1E,qCAAuC,CACvC,0BAAgC,CAGhC,0CAA2C,CAG3C,sBAyBD,CAtBC,qCAEC,QAAS,CAET,OAAQ,CACR,SAAU,CACV,QAAS,CACT,OAAQ,CAER,mCAAoC,CACpC,yBAA0B,CAC1B,oFAAqF,CACrF,sFAAuF,CAEvF,4CAA6C,CAC7C,sBAAyB,CACzB,mBAAsB,CACtB,4BAA6B,CAG7B,qBACD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GACC,SAAU,CACV,OAAQ,CACR,QACD,CACA,IACC,UAAY,CACZ,QACD,CACA,GACC,SAAU,CACV,UAAY,CACZ,YACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-image-upload-complete-icon {\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tborder-radius: 50%;\n\n\t&::after {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t}\n}\n','/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\n\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\n\n\t--ck-image-upload-icon-size: 20px;\n\t--ck-image-upload-icon-width: 2px;\n}\n\n.ck-image-upload-complete-icon {\n\twidth: var(--ck-image-upload-icon-size);\n\theight: var(--ck-image-upload-icon-size);\n\topacity: 0;\n\tbackground: var(--ck-color-image-upload-icon-background);\n\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\n\tanimation-fill-mode: forwards, forwards;\n\tanimation-duration: 500ms, 500ms;\n\n\t/* To make animation scalable. */\n\tfont-size: var(--ck-image-upload-icon-size);\n\n\t/* Hide completed upload icon after 3 seconds. */\n\tanimation-delay: 0ms, 3000ms;\n\n\t/* This is check icon element made from border-width mixed with animations. */\n\t&::after {\n\t\t/* Because of border transformation we need to "hard code" left position. */\n\t\tleft: 25%;\n\n\t\ttop: 50%;\n\t\topacity: 0;\n\t\theight: 0;\n\t\twidth: 0;\n\n\t\ttransform: scaleX(-1) rotate(135deg);\n\t\ttransform-origin: left top;\n\t\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\t\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\n\t\tanimation-name: ck-upload-complete-icon-check;\n\t\tanimation-duration: 500ms;\n\t\tanimation-delay: 500ms;\n\t\tanimation-fill-mode: forwards;\n\n\t\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\n\t\tbox-sizing: border-box;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-show {\n\tfrom {\n\t\topacity: 0;\n\t}\n\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-hide {\n\tfrom {\n\t\topacity: 1;\n\t}\n\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-check {\n\t0% {\n\t\topacity: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t33% {\n\t\twidth: 0.3em;\n\t\theight: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t\twidth: 0.3em;\n\t\theight: 0.45em;\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css"],names:[],mappings:"AAKA,kCACC,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,KAAM,CACN,MAMD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCACD,CAEA,iCAEC,UAAW,CACX,QACD,CAEA,kCACC,UAAW,CACX,WAUD,CARC,yCACC,8CAA+C,CAC/C,+CAAgD,CAChD,iBAAkB,CAClB,8DAA+D,CAC/D,kCAAmC,CACnC,yDACD,CAGD,wCACC,GACC,uBACD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-upload-placeholder-loader {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttop: 0;\n\tleft: 0;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: relative;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\n\t--ck-upload-placeholder-loader-size: 32px;\n}\n\n.ck .ck-image-upload-placeholder {\n\t/* We need to control the full width of the SVG gray background. */\n\twidth: 100%;\n\tmargin: 0;\n}\n\n.ck .ck-upload-placeholder-loader {\n\twidth: 100%;\n\theight: 100%;\n\n\t&::before {\n\t\twidth: var(--ck-upload-placeholder-loader-size);\n\t\theight: var(--ck-upload-placeholder-loader-size);\n\t\tborder-radius: 50%;\n\t\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\n\t\tborder-right: 2px solid transparent;\n\t\tanimation: ck-upload-placeholder-loader 1s linear infinite;\n\t}\n}\n\n@keyframes ck-upload-placeholder-loader {\n\tto {\n\t\ttransform: rotate( 360deg );\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{height:100%;border-right:1px solid var(--ck-color-base-text);margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/link.css"],names:[],mappings:"AAMA,sBACC,mDACD,CAMA,4BACC,8CACD,CAGA,sCACC,WAAY,CACZ,gDAAiD,CACjD,iBAAkB,CAClB,oCACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Class added to span element surrounding currently selected link. */\n.ck .ck-link_selected {\n\tbackground: var(--ck-color-link-selected-background);\n}\n\n/*\n * Classes used by the "fake visual selection" displayed in the content when an input\n * in the link UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-link-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-link-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block;padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin-left:0}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css"],names:[],mappings:"AAOA,iBACC,YAiBD,CAfC,2BACC,YACD,CCNA,oCDCD,iBAQE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CCfD,CDuBD,iCACC,aAAc,CEpBd,SAAU,CACV,oCFoBD,CElBC,wDACC,oFAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CACC,kCAAmC,CACnC,QAAS,CACT,eAAgB,CAChB,QAAS,CACT,gDAAiD,CACjD,SAaD,CAnBA,4GAaE,aAMF,CAJE,mEACC,kDACD,CAKF,6CACC,aAUD,CARC,wEACC,QAAS,CACT,UAKD,CAHC,8EACC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-form {\n\tdisplay: flex;\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tdisplay: block;\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tpadding: 0;\n\tmin-width: var(--ck-input-text-width);\n\n\t& .ck-labeled-field-view {\n\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) var(--ck-spacing-small);\n\n\t\t& .ck-input-text {\n\t\t\tmin-width: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t& .ck-button {\n\t\tpadding: var(--ck-spacing-standard);\n\t\tmargin: 0;\n\t\tborder-radius: 0;\n\t\tborder: 0;\n\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\twidth: 50%;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: 0;\n\n\t\t\t&:last-of-type {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\n\t& .ck.ck-list {\n\t\tmargin-left: 0;\n\n\t\t& .ck-button.ck-switchbutton {\n\t\t\tborder: 0;\n\t\t\twidth: 100%;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css"],names:[],mappings:"AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCKA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EACC,kCAAmC,CACnC,kCAAmC,CACnC,sBAAuB,CACvB,cAAe,CAIf,oCAAqC,CACrC,aAAc,CACd,iBAKD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDvDD,oCC2DC,wDACC,8DAMD,CAJC,0EACC,WAAY,CACZ,cACD,CAGD,gJAME,aAEF,CD1ED",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-link-actions__preview {\n\t\tdisplay: inline-block;\n\n\t\t& .ck-button__label {\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-link-actions__preview {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\t& .ck-button.ck-link-actions__preview {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\n\t\t& .ck-button__label {\n\t\t\tpadding: 0 var(--ck-spacing-medium);\n\t\t\tcolor: var(--ck-color-link-default);\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: pointer;\n\n\t\t\t/* Match the box model of the link editor form\'s input so the balloon\n\t\t\tdoes not change width when moving between actions and the form. */\n\t\t\tmax-width: var(--ck-input-text-width);\n\t\t\tmin-width: 3em;\n\t\t\ttext-align: center;\n\n\t\t\t&:hover {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t\t&,\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t& .ck-button__label {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-button:not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-button:not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\t& .ck-button.ck-link-actions__preview {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-button__label {\n\t\t\t\tmin-width: 0;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-link-image_icon{position:absolute;top:var(--ck-spacing-medium);right:var(--ck-spacing-medium);width:28px;height:28px;padding:4px;box-sizing:border-box;border-radius:var(--ck-border-radius)}.ck.ck-link-image_icon svg{fill:currentColor}.ck.ck-link-image_icon{color:#fff;background:rgba(0,0,0,.4)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css"],names:[],mappings:"AAKA,uBACC,iBAAkB,CAClB,4BAA6B,CAC7B,8BAA+B,CAC/B,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,qBAAsB,CACtB,qCAKD,CAHC,2BACC,iBACD,CCZD,uBACC,UAAuB,CACvB,yBACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-link-image_icon {\n\tposition: absolute;\n\ttop: var(--ck-spacing-medium);\n\tright: var(--ck-spacing-medium);\n\twidth: 28px;\n\theight: 28px;\n\tpadding: 4px;\n\tbox-sizing: border-box;\n\tborder-radius: var(--ck-border-radius);\n\n\t& svg {\n\t\tfill: currentColor;\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-link-image_icon {\n\tcolor: hsl(0, 0%, 100%);\n\tbackground: hsla(0, 0%, 0%, .4);\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck-media__wrapper .ck-media__placeholder{display:flex;flex-direction:column;align-items:center}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:block}@media (hover:none){.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:none}}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url:hover .ck-tooltip{visibility:visible;opacity:1}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{overflow:hidden;display:block}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{padding:calc(var(--ck-spacing-standard)*3);background:var(--ck-color-base-foreground)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{min-width:var(--ck-media-embed-placeholder-icon-size);height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);background-position:50%;background-size:cover}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{width:100%;height:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);white-space:nowrap;text-align:center;font-style:italic;text-overflow:ellipsis}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-width:300px;max-height:380px}.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMDAzLjc4IDEuNjFoNDkuNjIxYzEuNjk0IDAgMy4xOS0uNzk4IDQuMTQ2LTIuMDM3eiIgZmlsbD0iIzVjODhjNSIvPjxwYXRoIGQ9Ik0yMjYuNzQyIDIyMi45ODhjLTkuMjY2IDAtMTYuNzc3IDcuMTctMTYuNzc3IDE2LjAxNC4wMDcgMi43NjIuNjYzIDUuNDc0IDIuMDkzIDcuODc1LjQzLjcwMy44MyAxLjQwOCAxLjE5IDIuMTA3LjMzMy41MDIuNjUgMS4wMDUuOTUgMS41MDguMzQzLjQ3Ny42NzMuOTU3Ljk4OCAxLjQ0IDEuMzEgMS43NjkgMi41IDMuNTAyIDMuNjM3IDUuMTY4Ljc5MyAxLjI3NSAxLjY4MyAyLjY0IDIuNDY2IDMuOTkgMi4zNjMgNC4wOTQgNC4wMDcgOC4wOTIgNC42IDEzLjkxNHYuMDEyYy4xODIuNDEyLjUxNi42NjYuODc5LjY2Ny40MDMtLjAwMS43NjgtLjMxNC45My0uNzk5LjYwMy01Ljc1NiAyLjIzOC05LjcyOSA0LjU4NS0xMy43OTQuNzgyLTEuMzUgMS42NzMtMi43MTUgMi40NjUtMy45OSAxLjEzNy0xLjY2NiAyLjMyOC0zLjQgMy42MzgtNS4xNjkuMzE1LS40ODIuNjQ1LS45NjIuOTg4LTEuNDM5LjMtLjUwMy42MTctMS4wMDYuOTUtMS41MDguMzU5LS43Ljc2LTEuNDA0IDEuMTktMi4xMDcgMS40MjYtMi40MDIgMi01LjExNCAyLjAwNC03Ljg3NSAwLTguODQ0LTcuNTExLTE2LjAxNC0xNi43NzYtMTYuMDE0eiIgZmlsbD0iI2RkNGIzZSIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48ZWxsaXBzZSByeT0iNS41NjQiIHJ4PSI1LjgyOCIgY3k9IjIzOS4wMDIiIGN4PSIyMjYuNzQyIiBmaWxsPSIjODAyZDI3IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0xOTAuMzAxIDIzNy4yODNjLTQuNjcgMC04LjQ1NyAzLjg1My04LjQ1NyA4LjYwNnMzLjc4NiA4LjYwNyA4LjQ1NyA4LjYwN2MzLjA0MyAwIDQuODA2LS45NTggNi4zMzctMi41MTYgMS41My0xLjU1NyAyLjA4Ny0zLjkxMyAyLjA4Ny02LjI5IDAtLjM2Mi0uMDIzLS43MjItLjA2NC0xLjA3OWgtOC4yNTd2My4wNDNoNC44NWMtLjE5Ny43NTktLjUzMSAxLjQ1LTEuMDU4IDEuOTg2LS45NDIuOTU4LTIuMDI4IDEuNTQ4LTMuOTAxIDEuNTQ4LTIuODc2IDAtNS4yMDgtMi4zNzItNS4yMDgtNS4yOTkgMC0yLjkyNiAyLjMzMi01LjI5OSA1LjIwOC01LjI5OSAxLjM5OSAwIDIuNjE4LjQwNyAzLjU4NCAxLjI5M2wyLjM4MS0yLjM4YzAtLjAwMi0uMDAzLS4wMDQtLjAwNC0uMDA1LTEuNTg4LTEuNTI0LTMuNjItMi4yMTUtNS45NTUtMi4yMTV6bTQuNDMgNS42NmwuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxNS4xODQgMjUxLjkyOWwtNy45OCA3Ljk3OSAyOC40NzcgMjguNDc1YTUuMjMzIDUuMjMzIDAgMDAuNDQ5LTIuMTIzdi0zMS4xNjVjLS40NjkuNjc1LS45MzQgMS4zNDktMS4zODIgMi4wMDUtLjc5MiAxLjI3NS0xLjY4MiAyLjY0LTIuNDY1IDMuOTktMi4zNDcgNC4wNjUtMy45ODIgOC4wMzgtNC41ODUgMTMuNzk0LS4xNjIuNDg1LS41MjcuNzk4LS45My43OTktLjM2My0uMDAxLS42OTctLjI1NS0uODc5LS42Njd2LS4wMTJjLS41OTMtNS44MjItMi4yMzctOS44Mi00LjYtMTMuOTE0LS43ODMtMS4zNS0xLjY3My0yLjcxNS0yLjQ2Ni0zLjk5LTEuMTM3LTEuNjY2LTIuMzI3LTMuNC0zLjYzNy01LjE2OWwtLjAwMi0uMDAzeiIgZmlsbD0iI2MzYzNjMyIvPjxwYXRoIGQ9Ik0yMTIuOTgzIDI0OC40OTVsLTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAwNS4yMzggNS4yMzhoMS4wMTVsMzUuNjY2LTM1LjY2NmExMzYuMjc1IDEzNi4yNzUgMCAwMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAwLS45ODktMS40NCAzNS4xMjcgMzUuMTI3IDAgMDAtLjk1LTEuNTA4Yy0uMDgzLS4xNjItLjE3Ni0uMzI2LS4yNjQtLjQ4OXoiIGZpbGw9IiNmZGRjNGYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxMS45OTggMjYxLjA4M2wtNi4xNTIgNi4xNTEgMjQuMjY0IDI0LjI2NGguNzgxYTUuMjI3IDUuMjI3IDAgMDA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OXptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OXoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzN6bTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1ek00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaembedediting.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-media-embed/mediaembedediting.css"],names:[],mappings:"AAQC,0CACC,YAAa,CACb,qBAAsB,CACtB,kBAmBD,CCpBA,kFACC,aAqBD,CAHC,oBAnBD,kFAoBE,YAEF,CADC,CDlBA,sEAIC,cAAe,CAEf,iBAUD,CCoBD,wFACC,kBAAmB,CACnB,SACD,CD3BE,wGACC,eAAgB,CAChB,aACD,CAQD,+UACC,YACD,CAYF,2LACC,mBACD,CE/CA,MACC,0CAA2C,CAE3C,mDAA4D,CAC5D,2EACD,CAEA,mBACC,aA4FD,CA1FC,0CACC,0CAA+C,CAC/C,0CA4BD,CA1BC,uEACC,qDAAsD,CACtD,kDAAmD,CACnD,qCAAsC,CACtC,uBAA2B,CAC3B,qBAMD,CAJC,gFACC,UAAW,CACX,WACD,CAGD,4EACC,sDAAuD,CACvD,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CAClB,sBAOD,CALC,kFACC,4DAA6D,CAC7D,cAAe,CACf,yBACD,CAIF,wDACC,eAAgB,CAChB,gBACD,CAEA,oFACC,gvGACD,CAEA,2EACC,kBAaD,CAXC,wGACC,orBACD,CAEA,6GACC,UAKD,CAHC,mHACC,UACD,CAIF,4EACC,2DAcD,CAZC,yGACC,4jHACD,CAGA,8GACC,aAKD,CAHC,oHACC,UACD,CAIF,6EAEC,iDAaD,CAXC,0GACC,48BACD,CAEA,+GACC,aAKD,CAHC,qHACC,UACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/components/tooltip/mixins/_tooltip.css";\n\n.ck-media__wrapper {\n\t& .ck-media__placeholder {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t& .ck-media__placeholder__url {\n\t\t\t@mixin ck-tooltip_enabled;\n\n\t\t\t/* Otherwise the URL will overflow when the content is very narrow. */\n\t\t\tmax-width: 100%;\n\n\t\t\tposition: relative;\n\n\t\t\t&:hover {\n\t\t\t\t@mixin ck-tooltip_visible;\n\t\t\t}\n\n\t\t\t& .ck-media__placeholder__url__text {\n\t\t\t\toverflow: hidden;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"],\n\t&[data-oembed-url*="google.com/maps"],\n\t&[data-oembed-url*="facebook.com"],\n\t&[data-oembed-url*="instagram.com"] {\n\t\t& .ck-media__placeholder__icon * {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/* Disable all mouse interaction as long as the editor is not read–only.\n https://github.com/ckeditor/ckeditor5-media-embed/issues/58 */\n.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper > *:not(.ck-media__placeholder) {\n\tpointer-events: none;\n}\n\n/* Disable all mouse interaction when the widget is not selected (e.g. to avoid opening links by accident).\n https://github.com/ckeditor/ckeditor5-media-embed/issues/18 */\n.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder {\n\tpointer-events: none;\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Enables the tooltip, which is the tooltip is in DOM but\n * not yet displayed.\n */\n@define-mixin ck-tooltip_enabled {\n\t& .ck-tooltip {\n\t\tdisplay: block;\n\n\t\t/*\n\t\t * Don't display tooltips in devices which don't support :hover.\n\t\t * In fact, it's all about iOS, which forces user to click UI elements twice to execute\n\t\t * the primary action, when tooltips are enabled.\n\t\t *\n\t\t * Q: OK, but why not the following query?\n\t\t *\n\t\t * @media (hover) {\n\t\t * display: block;\n\t\t * }\n\t\t *\n\t\t * A: Because FF does not support it and it would completely disable tooltips\n\t\t * in that browser.\n\t\t *\n\t\t * More in https://github.com/ckeditor/ckeditor5/issues/920.\n\t\t */\n\t\t@media (hover:none) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/**\n * Disables the tooltip making it disappear from DOM.\n */\n@define-mixin ck-tooltip_disabled {\n\t& .ck-tooltip {\n\t\tdisplay: none;\n\t}\n}\n\n/**\n * Shows the tooltip, which is already in DOM.\n * Requires `ck-tooltip_enabled` first.\n */\n@define-mixin ck-tooltip_visible {\n\t& .ck-tooltip {\n\t\tvisibility: visible;\n\t\topacity: 1;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-media-embed-placeholder-icon-size: 3em;\n\n\t--ck-color-media-embed-placeholder-url-text: hsl(0, 0%, 46%);\n\t--ck-color-media-embed-placeholder-url-text-hover: var(--ck-color-base-text);\n}\n\n.ck-media__wrapper {\n\tmargin: 0 auto;\n\n\t& .ck-media__placeholder {\n\t\tpadding: calc( 3 * var(--ck-spacing-standard) );\n\t\tbackground: var(--ck-color-base-foreground);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tmin-width: var(--ck-media-embed-placeholder-icon-size);\n\t\t\theight: var(--ck-media-embed-placeholder-icon-size);\n\t\t\tmargin-bottom: var(--ck-spacing-large);\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: cover;\n\n\t\t\t& .ck-icon {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text);\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: center;\n\t\t\tfont-style: italic;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\t&:hover {\n\t\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text-hover);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="open.spotify.com"] {\n\t\tmax-width: 300px;\n\t\tmax-height: 380px;\n\t}\n\n\t&[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon {\n\t\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMCAwIDMuNzggMS42MWg0OS42MjFjMS42OTQgMCAzLjE5LS43OTggNC4xNDYtMi4wMzd6IiBmaWxsPSIjNWM4OGM1Ii8+PHBhdGggZD0iTTIyNi43NDIgMjIyLjk4OGMtOS4yNjYgMC0xNi43NzcgNy4xNy0xNi43NzcgMTYuMDE0LjAwNyAyLjc2Mi42NjMgNS40NzQgMi4wOTMgNy44NzUuNDMuNzAzLjgzIDEuNDA4IDEuMTkgMi4xMDcuMzMzLjUwMi42NSAxLjAwNS45NSAxLjUwOC4zNDMuNDc3LjY3My45NTcuOTg4IDEuNDQgMS4zMSAxLjc2OSAyLjUgMy41MDIgMy42MzcgNS4xNjguNzkzIDEuMjc1IDEuNjgzIDIuNjQgMi40NjYgMy45OSAyLjM2MyA0LjA5NCA0LjAwNyA4LjA5MiA0LjYgMTMuOTE0di4wMTJjLjE4Mi40MTIuNTE2LjY2Ni44NzkuNjY3LjQwMy0uMDAxLjc2OC0uMzE0LjkzLS43OTkuNjAzLTUuNzU2IDIuMjM4LTkuNzI5IDQuNTg1LTEzLjc5NC43ODItMS4zNSAxLjY3My0yLjcxNSAyLjQ2NS0zLjk5IDEuMTM3LTEuNjY2IDIuMzI4LTMuNCAzLjYzOC01LjE2OS4zMTUtLjQ4Mi42NDUtLjk2Mi45ODgtMS40MzkuMy0uNTAzLjYxNy0xLjAwNi45NS0xLjUwOC4zNTktLjcuNzYtMS40MDQgMS4xOS0yLjEwNyAxLjQyNi0yLjQwMiAyLTUuMTE0IDIuMDA0LTcuODc1IDAtOC44NDQtNy41MTEtMTYuMDE0LTE2Ljc3Ni0xNi4wMTR6IiBmaWxsPSIjZGQ0YjNlIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxlbGxpcHNlIHJ5PSI1LjU2NCIgcng9IjUuODI4IiBjeT0iMjM5LjAwMiIgY3g9IjIyNi43NDIiIGZpbGw9IiM4MDJkMjciIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTE5MC4zMDEgMjM3LjI4M2MtNC42NyAwLTguNDU3IDMuODUzLTguNDU3IDguNjA2czMuNzg2IDguNjA3IDguNDU3IDguNjA3YzMuMDQzIDAgNC44MDYtLjk1OCA2LjMzNy0yLjUxNiAxLjUzLTEuNTU3IDIuMDg3LTMuOTEzIDIuMDg3LTYuMjkgMC0uMzYyLS4wMjMtLjcyMi0uMDY0LTEuMDc5aC04LjI1N3YzLjA0M2g0Ljg1Yy0uMTk3Ljc1OS0uNTMxIDEuNDUtMS4wNTggMS45ODYtLjk0Mi45NTgtMi4wMjggMS41NDgtMy45MDEgMS41NDgtMi44NzYgMC01LjIwOC0yLjM3Mi01LjIwOC01LjI5OSAwLTIuOTI2IDIuMzMyLTUuMjk5IDUuMjA4LTUuMjk5IDEuMzk5IDAgMi42MTguNDA3IDMuNTg0IDEuMjkzbDIuMzgxLTIuMzhjMC0uMDAyLS4wMDMtLjAwNC0uMDA0LS4wMDUtMS41ODgtMS41MjQtMy42Mi0yLjIxNS01Ljk1NS0yLjIxNXptNC40MyA1LjY2bC4wMDMuMDA2di0uMDAzeiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjE1LjE4NCAyNTEuOTI5bC03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVjLjI4Ny0uNjQ5LjQ0OS0xLjM2Ni40NDktMi4xMjN2LTMxLjE2NWMtLjQ2OS42NzUtLjkzNCAxLjM0OS0xLjM4MiAyLjAwNS0uNzkyIDEuMjc1LTEuNjgyIDIuNjQtMi40NjUgMy45OS0yLjM0NyA0LjA2NS0zLjk4MiA4LjAzOC00LjU4NSAxMy43OTQtLjE2Mi40ODUtLjUyNy43OTgtLjkzLjc5OS0uMzYzLS4wMDEtLjY5Ny0uMjU1LS44NzktLjY2N3YtLjAxMmMtLjU5My01LjgyMi0yLjIzNy05LjgyLTQuNi0xMy45MTQtLjc4My0xLjM1LTEuNjczLTIuNzE1LTIuNDY2LTMuOTktMS4xMzctMS42NjYtMi4zMjctMy40LTMuNjM3LTUuMTY5bC0uMDAyLS4wMDN6IiBmaWxsPSIjYzNjM2MzIi8+PHBhdGggZD0iTTIxMi45ODMgMjQ4LjQ5NWwtMzYuOTUyIDM2Ljk1M3YuODEyYTUuMjI3IDUuMjI3IDAgMCAwIDUuMjM4IDUuMjM4aDEuMDE1bDM1LjY2Ni0zNS42NjZhMTM2LjI3NSAxMzYuMjc1IDAgMCAwLTIuNzY0LTMuOSAzNy41NzUgMzcuNTc1IDAgMCAwLS45ODktMS40NGMtLjI5OS0uNTAzLS42MTYtMS4wMDYtLjk1LTEuNTA4LS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjExLjk5OCAyNjEuMDgzbC02LjE1MiA2LjE1MSAyNC4yNjQgMjQuMjY0aC43ODFhNS4yMjcgNS4yMjcgMCAwIDAgNS4yMzktNS4yMzh2LTEuMDQ1eiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48L2c+PC9zdmc+);\n\t}\n\n\t&[data-oembed-url*="facebook.com"] .ck-media__placeholder {\n\t\tbackground: hsl(220, 46%, 48%);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMDI0cHgiIGhlaWdodD0iMTAyNHB4IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgICAgICAgPHRpdGxlPkZpbGwgMTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImZMb2dvX1doaXRlIiBmaWxsPSIjRkZGRkZFIj4gICAgICAgICAgICA8cGF0aCBkPSJNOTY3LjQ4NCwwIEw1Ni41MTcsMCBDMjUuMzA0LDAgMCwyNS4zMDQgMCw1Ni41MTcgTDAsOTY3LjQ4MyBDMCw5OTguNjk0IDI1LjI5NywxMDI0IDU2LjUyMiwxMDI0IEw1NDcsMTAyNCBMNTQ3LDYyOCBMNDE0LDYyOCBMNDE0LDQ3MyBMNTQ3LDQ3MyBMNTQ3LDM1OS4wMjkgQzU0NywyMjYuNzY3IDYyNy43NzMsMTU0Ljc0NyA3NDUuNzU2LDE1NC43NDcgQzgwMi4yNjksMTU0Ljc0NyA4NTAuODQyLDE1OC45NTUgODY1LDE2MC44MzYgTDg2NSwyOTkgTDc4My4zODQsMjk5LjAzNyBDNzE5LjM5MSwyOTkuMDM3IDcwNywzMjkuNTI5IDcwNywzNzQuMjczIEw3MDcsNDczIEw4NjAuNDg3LDQ3MyBMODQwLjUwMSw2MjggTDcwNyw2MjggTDcwNywxMDI0IEw5NjcuNDg0LDEwMjQgQzk5OC42OTcsMTAyNCAxMDI0LDk5OC42OTcgMTAyNCw5NjcuNDg0IEwxMDI0LDU2LjUxNSBDMTAyNCwyNS4zMDMgOTk4LjY5NywwIDk2Ny40ODQsMCIgaWQ9IkZpbGwtMSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(220, 100%, 90%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="instagram.com"] .ck-media__placeholder {\n\t\tbackground: linear-gradient(-135deg,hsl(246, 100%, 39%),hsl(302, 100%, 36%),hsl(0, 100%, 48%));\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI1MDRweCIgaGVpZ2h0PSI1MDRweCIgdmlld0JveD0iMCAwIDUwNCA1MDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+Z2x5cGgtbG9nb19NYXkyMDE2PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtMSIgcG9pbnRzPSIwIDAuMTU5IDUwMy44NDEgMC4xNTkgNTAzLjg0MSA1MDMuOTQgMCA1MDMuOTQiPjwvcG9seWdvbj4gICAgPC9kZWZzPiAgICA8ZyBpZD0iZ2x5cGgtbG9nb19NYXkyMDE2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJHcm91cC0zIj4gICAgICAgICAgICA8bWFzayBpZD0ibWFzay0yIiBmaWxsPSJ3aGl0ZSI+ICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+ICAgICAgICAgICAgPC9tYXNrPiAgICAgICAgICAgIDxnIGlkPSJDbGlwLTIiPjwvZz4gICAgICAgICAgICA8cGF0aCBkPSJNMjUxLjkyMSwwLjE1OSBDMTgzLjUwMywwLjE1OSAxNzQuOTI0LDAuNDQ5IDE0OC4wNTQsMS42NzUgQzEyMS4yNCwyLjg5OCAxMDIuOTI3LDcuMTU3IDg2LjkwMywxMy4zODUgQzcwLjMzNywxOS44MjIgNTYuMjg4LDI4LjQzNiA0Mi4yODIsNDIuNDQxIEMyOC4yNzcsNTYuNDQ3IDE5LjY2Myw3MC40OTYgMTMuMjI2LDg3LjA2MiBDNi45OTgsMTAzLjA4NiAyLjczOSwxMjEuMzk5IDEuNTE2LDE0OC4yMTMgQzAuMjksMTc1LjA4MyAwLDE4My42NjIgMCwyNTIuMDggQzAsMzIwLjQ5NyAwLjI5LDMyOS4wNzYgMS41MTYsMzU1Ljk0NiBDMi43MzksMzgyLjc2IDYuOTk4LDQwMS4wNzMgMTMuMjI2LDQxNy4wOTcgQzE5LjY2Myw0MzMuNjYzIDI4LjI3Nyw0NDcuNzEyIDQyLjI4Miw0NjEuNzE4IEM1Ni4yODgsNDc1LjcyMyA3MC4zMzcsNDg0LjMzNyA4Ni45MDMsNDkwLjc3NSBDMTAyLjkyNyw0OTcuMDAyIDEyMS4yNCw1MDEuMjYxIDE0OC4wNTQsNTAyLjQ4NCBDMTc0LjkyNCw1MDMuNzEgMTgzLjUwMyw1MDQgMjUxLjkyMSw1MDQgQzMyMC4zMzgsNTA0IDMyOC45MTcsNTAzLjcxIDM1NS43ODcsNTAyLjQ4NCBDMzgyLjYwMSw1MDEuMjYxIDQwMC45MTQsNDk3LjAwMiA0MTYuOTM4LDQ5MC43NzUgQzQzMy41MDQsNDg0LjMzNyA0NDcuNTUzLDQ3NS43MjMgNDYxLjU1OSw0NjEuNzE4IEM0NzUuNTY0LDQ0Ny43MTIgNDg0LjE3OCw0MzMuNjYzIDQ5MC42MTYsNDE3LjA5NyBDNDk2Ljg0Myw0MDEuMDczIDUwMS4xMDIsMzgyLjc2IDUwMi4zMjUsMzU1Ljk0NiBDNTAzLjU1MSwzMjkuMDc2IDUwMy44NDEsMzIwLjQ5NyA1MDMuODQxLDI1Mi4wOCBDNTAzLjg0MSwxODMuNjYyIDUwMy41NTEsMTc1LjA4MyA1MDIuMzI1LDE0OC4yMTMgQzUwMS4xMDIsMTIxLjM5OSA0OTYuODQzLDEwMy4wODYgNDkwLjYxNiw4Ny4wNjIgQzQ4NC4xNzgsNzAuNDk2IDQ3NS41NjQsNTYuNDQ3IDQ2MS41NTksNDIuNDQxIEM0NDcuNTUzLDI4LjQzNiA0MzMuNTA0LDE5LjgyMiA0MTYuOTM4LDEzLjM4NSBDNDAwLjkxNCw3LjE1NyAzODIuNjAxLDIuODk4IDM1NS43ODcsMS42NzUgQzMyOC45MTcsMC40NDkgMzIwLjMzOCwwLjE1OSAyNTEuOTIxLDAuMTU5IFogTTI1MS45MjEsNDUuNTUgQzMxOS4xODYsNDUuNTUgMzI3LjE1NCw0NS44MDcgMzUzLjcxOCw0Ny4wMTkgQzM3OC4yOCw0OC4xMzkgMzkxLjYxOSw1Mi4yNDMgNDAwLjQ5Niw1NS42OTMgQzQxMi4yNTUsNjAuMjYzIDQyMC42NDcsNjUuNzIyIDQyOS40NjIsNzQuNTM4IEM0MzguMjc4LDgzLjM1MyA0NDMuNzM3LDkxLjc0NSA0NDguMzA3LDEwMy41MDQgQzQ1MS43NTcsMTEyLjM4MSA0NTUuODYxLDEyNS43MiA0NTYuOTgxLDE1MC4yODIgQzQ1OC4xOTMsMTc2Ljg0NiA0NTguNDUsMTg0LjgxNCA0NTguNDUsMjUyLjA4IEM0NTguNDUsMzE5LjM0NSA0NTguMTkzLDMyNy4zMTMgNDU2Ljk4MSwzNTMuODc3IEM0NTUuODYxLDM3OC40MzkgNDUxLjc1NywzOTEuNzc4IDQ0OC4zMDcsNDAwLjY1NSBDNDQzLjczNyw0MTIuNDE0IDQzOC4yNzgsNDIwLjgwNiA0MjkuNDYyLDQyOS42MjEgQzQyMC42NDcsNDM4LjQzNyA0MTIuMjU1LDQ0My44OTYgNDAwLjQ5Niw0NDguNDY2IEMzOTEuNjE5LDQ1MS45MTYgMzc4LjI4LDQ1Ni4wMiAzNTMuNzE4LDQ1Ny4xNCBDMzI3LjE1OCw0NTguMzUyIDMxOS4xOTEsNDU4LjYwOSAyNTEuOTIxLDQ1OC42MDkgQzE4NC42NSw0NTguNjA5IDE3Ni42ODQsNDU4LjM1MiAxNTAuMTIzLDQ1Ny4xNCBDMTI1LjU2MSw0NTYuMDIgMTEyLjIyMiw0NTEuOTE2IDEwMy4zNDUsNDQ4LjQ2NiBDOTEuNTg2LDQ0My44OTYgODMuMTk0LDQzOC40MzcgNzQuMzc5LDQyOS42MjEgQzY1LjU2NCw0MjAuODA2IDYwLjEwNCw0MTIuNDE0IDU1LjUzNCw0MDAuNjU1IEM1Mi4wODQsMzkxLjc3OCA0Ny45OCwzNzguNDM5IDQ2Ljg2LDM1My44NzcgQzQ1LjY0OCwzMjcuMzEzIDQ1LjM5MSwzMTkuMzQ1IDQ1LjM5MSwyNTIuMDggQzQ1LjM5MSwxODQuODE0IDQ1LjY0OCwxNzYuODQ2IDQ2Ljg2LDE1MC4yODIgQzQ3Ljk4LDEyNS43MiA1Mi4wODQsMTEyLjM4MSA1NS41MzQsMTAzLjUwNCBDNjAuMTA0LDkxLjc0NSA2NS41NjMsODMuMzUzIDc0LjM3OSw3NC41MzggQzgzLjE5NCw2NS43MjIgOTEuNTg2LDYwLjI2MyAxMDMuMzQ1LDU1LjY5MyBDMTEyLjIyMiw1Mi4yNDMgMTI1LjU2MSw0OC4xMzkgMTUwLjEyMyw0Ny4wMTkgQzE3Ni42ODcsNDUuODA3IDE4NC42NTUsNDUuNTUgMjUxLjkyMSw0NS41NSBaIiBpZD0iRmlsbC0xIiBmaWxsPSIjRkZGRkZGIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4gICAgICAgIDwvZz4gICAgICAgIDxwYXRoIGQ9Ik0yNTEuOTIxLDMzNi4wNTMgQzIwNS41NDMsMzM2LjA1MyAxNjcuOTQ3LDI5OC40NTcgMTY3Ljk0NywyNTIuMDggQzE2Ny45NDcsMjA1LjcwMiAyMDUuNTQzLDE2OC4xMDYgMjUxLjkyMSwxNjguMTA2IEMyOTguMjk4LDE2OC4xMDYgMzM1Ljg5NCwyMDUuNzAyIDMzNS44OTQsMjUyLjA4IEMzMzUuODk0LDI5OC40NTcgMjk4LjI5OCwzMzYuMDUzIDI1MS45MjEsMzM2LjA1MyBaIE0yNTEuOTIxLDEyMi43MTUgQzE4MC40NzQsMTIyLjcxNSAxMjIuNTU2LDE4MC42MzMgMTIyLjU1NiwyNTIuMDggQzEyMi41NTYsMzIzLjUyNiAxODAuNDc0LDM4MS40NDQgMjUxLjkyMSwzODEuNDQ0IEMzMjMuMzY3LDM4MS40NDQgMzgxLjI4NSwzMjMuNTI2IDM4MS4yODUsMjUyLjA4IEMzODEuMjg1LDE4MC42MzMgMzIzLjM2NywxMjIuNzE1IDI1MS45MjEsMTIyLjcxNSBaIiBpZD0iRmlsbC00IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgICAgICA8cGF0aCBkPSJNNDE2LjYyNywxMTcuNjA0IEM0MTYuNjI3LDEzNC4zIDQwMy4wOTIsMTQ3LjgzNCAzODYuMzk2LDE0Ny44MzQgQzM2OS43MDEsMTQ3LjgzNCAzNTYuMTY2LDEzNC4zIDM1Ni4xNjYsMTE3LjYwNCBDMzU2LjE2NiwxMDAuOTA4IDM2OS43MDEsODcuMzczIDM4Ni4zOTYsODcuMzczIEM0MDMuMDkyLDg3LjM3MyA0MTYuNjI3LDEwMC45MDggNDE2LjYyNywxMTcuNjA0IiBpZD0iRmlsbC01IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgIDwvZz48L3N2Zz4=);\n\t\t}\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(302, 100%, 94%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder {\n\t\t/* Use gradient to contrast with focused widget (ckeditor/ckeditor5-media-embed#22). */\n\t\tbackground: linear-gradient( to right, hsl(201, 85%, 70%), hsl(201, 85%, 35%) );\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IldoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwMCA0MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDAsMjAwYzAsMTEwLjUtODkuNSwyMDAtMjAwLDIwMFMwLDMxMC41LDAsMjAwUzg5LjUsMCwyMDAsMFM0MDAsODkuNSw0MDAsMjAweiBNMTYzLjQsMzA1LjVjODguNywwLDEzNy4yLTczLjUsMTM3LjItMTM3LjJjMC0yLjEsMC00LjItMC4xLTYuMmM5LjQtNi44LDE3LjYtMTUuMywyNC4xLTI1Yy04LjYsMy44LTE3LjksNi40LTI3LjcsNy42YzEwLTYsMTcuNi0xNS40LDIxLjItMjYuN2MtOS4zLDUuNS0xOS42LDkuNS0zMC42LDExLjdjLTguOC05LjQtMjEuMy0xNS4yLTM1LjItMTUuMmMtMjYuNiwwLTQ4LjIsMjEuNi00OC4yLDQ4LjJjMCwzLjgsMC40LDcuNSwxLjMsMTFjLTQwLjEtMi03NS42LTIxLjItOTkuNC01MC40Yy00LjEsNy4xLTYuNSwxNS40LTYuNSwyNC4yYzAsMTYuNyw4LjUsMzEuNSwyMS41LDQwLjFjLTcuOS0wLjItMTUuMy0yLjQtMjEuOC02YzAsMC4yLDAsMC40LDAsMC42YzAsMjMuNCwxNi42LDQyLjgsMzguNyw0Ny4zYy00LDEuMS04LjMsMS43LTEyLjcsMS43Yy0zLjEsMC02LjEtMC4zLTkuMS0wLjljNi4xLDE5LjIsMjMuOSwzMy4xLDQ1LDMzLjVjLTE2LjUsMTIuOS0zNy4zLDIwLjYtNTkuOSwyMC42Yy0zLjksMC03LjctMC4yLTExLjUtMC43QzExMC44LDI5Ny41LDEzNi4yLDMwNS41LDE2My40LDMwNS41Ii8+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(201, 100%, 86%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-media-form{display:flex;align-items:flex-start;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAOA,kBACC,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,gBAqBD,CAnBC,yCACC,oBACD,CAEA,4BACC,YACD,CCbA,oCDCD,kBAeE,cAUF,CARE,yCACC,eACD,CAEA,6BACC,cACD,CCtBD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-media-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content .media{clear:both;margin:1em 0;display:block;min-width:15em}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-media-embed/theme/mediaembed.css"],names:[],mappings:"AAKA,mBAGC,UAAW,CAGX,YAAa,CAIb,aAAc,CAId,cACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .media {\n\t/* Don\'t allow floated content overlap the media.\n\thttps://github.com/ckeditor/ckeditor5-media-embed/issues/53 */\n\tclear: both;\n\n\t/* Make sure there is some space between the content and the media. */\n\tmargin: 1em 0;\n\n\t/* Make sure media is not overriden with Bootstrap default `flex` value.\n\tSee: https://github.com/ckeditor/ckeditor5/issues/1373. */\n\tdisplay: block;\n\n\t/* Give the media some minimal width in the content to prevent them\n\tfrom being "squashed" in tight spaces, e.g. in table cells (#44) */\n\tmin-width: 15em;\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck-content .page-break{position:relative;clear:both;padding:5px 0;display:flex;align-items:center;justify-content:center}.ck-content .page-break:after{content:"";position:absolute;border-bottom:2px dashed #c4c4c4;width:100%}.ck-content .page-break__label{position:relative;z-index:1;padding:.3em .6em;display:block;text-transform:uppercase;border:1px solid #c4c4c4;border-radius:2px;font-family:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;font-size:.75em;font-weight:700;color:#333;background:#fff;box-shadow:2px 2px 1px rgba(0,0,0,.15);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media print{.ck-content .page-break{padding:0}.ck-content .page-break:after{display:none}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-page-break/theme/pagebreak.css"],names:[],mappings:"AAKA,wBACC,iBAAkB,CAClB,UAAW,CACX,aAAc,CACd,YAAa,CACb,kBAAmB,CACnB,sBAQD,CANC,8BACC,UAAW,CACX,iBAAkB,CAClB,gCAAyC,CACzC,UACD,CAGD,+BACC,iBAAkB,CAClB,SAAU,CACV,iBAAkB,CAClB,aAAc,CACd,wBAAyB,CACzB,wBAAiC,CACjC,iBAAkB,CAClB,qDAA0D,CAC1D,eAAiB,CACjB,eAAiB,CACjB,UAAsB,CACtB,eAA4B,CAC5B,sCAA6C,CAG7C,wBAAyB,CACzB,qBAAsB,CACtB,oBAAqB,CACrB,gBACD,CAGA,aACC,wBACC,SAKD,CAHC,8BACC,YACD,CAEF",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .page-break {\n\tposition: relative;\n\tclear: both;\n\tpadding: 5px 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t&::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\n\t\twidth: 100%;\n\t}\n}\n\n.ck-content .page-break__label {\n\tposition: relative;\n\tz-index: 1;\n\tpadding: .3em .6em;\n\tdisplay: block;\n\ttext-transform: uppercase;\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\tfont-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\n\tfont-size: 0.75em;\n\tfont-weight: bold;\n\tcolor: hsl(0, 0%, 20%);\n\tbackground: hsl(0, 0%, 100%);\n\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\n\n\t/* Disable the possibility to select the label text by the user. */\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* Do not show the page break element inside the print preview window. */\n@media print {\n\t.ck-content .page-break {\n\t\tpadding: 0;\n\n\t\t&::after {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css"],names:[],mappings:"AAKA,MACC,8DACD,CAKE,8QAGC,wDAAyD,CAKzD,iBAAkB,CAClB,8CAA+C,CAC/C,mBACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-table-focused-cell-background: hsla(208, 90%, 80%, .3);\n}\n\n.ck-widget.table {\n\t& td,\n\t& th {\n\t\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\n\t\t&.ck-editor__nested-editable:focus {\n\t\t\t/* A very slight background to highlight the focused cell */\n\t\t\tbackground: var(--ck-color-table-focused-cell-background);\n\n\t\t\t/* Fixes the problem where surrounding cells cover the focused cell's border.\n\t\t\tIt does not fix the problem in all places but the UX is improved.\n\t\t\tSee https://github.com/ckeditor/ckeditor5-table/issues/29. */\n\t\t\tborder-style: none;\n\t\t\toutline: 1px solid var(--ck-color-focus-border);\n\t\t\toutline-offset: -1px; /* progressive enhancement - no IE support */\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css"],names:[],mappings:"AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAEC,oJAA2J,CAC3J,yFACD,CAEA,qCACC,iBACD,CAEA,uCACC,+CAAgD,CAChD,iDAAkD,CAClD,iDAAkD,CAClD,4CAA6C,CAC7C,iBAMD,CAJC,6CACC,yCAA0C,CAC1C,6CACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-insert-table-dropdown__grid {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-insert-table-dropdown-padding: 10px;\n\t--ck-insert-table-dropdown-box-height: 11px;\n\t--ck-insert-table-dropdown-box-width: 12px;\n\t--ck-insert-table-dropdown-box-margin: 1px;\n}\n\n.ck .ck-insert-table-dropdown__grid {\n\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\n\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\n\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\n}\n\n.ck .ck-insert-table-dropdown__label {\n\ttext-align: center;\n}\n\n.ck .ck-insert-table-dropdown-grid-box {\n\twidth: var(--ck-insert-table-dropdown-box-width);\n\theight: var(--ck-insert-table-dropdown-box-height);\n\tmargin: var(--ck-insert-table-dropdown-box-margin);\n\tborder: 1px solid var(--ck-color-base-border);\n\tborder-radius: 1px;\n\n\t&.ck-on {\n\t\tborder-color: var(--ck-color-focus-border);\n\t\tbackground: var(--ck-color-focus-outer-shadow);\n\t}\n}\n\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,':root{--ck-table-selected-cell-background:rgba(158,207,250,0.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{position:relative;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{content:"";pointer-events:none;background-color:var(--ck-table-selected-cell-background);position:absolute;top:0;left:0;right:0;bottom:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget_selected{outline:unset}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css"],names:[],mappings:"AAKA,MACC,yDACD,CAGC,0IAEC,iBAAkB,CAClB,uBAAwB,CACxB,aAAc,CACd,gBAsBD,CAnBC,sJACC,UAAW,CACX,mBAAoB,CACpB,yDAA0D,CAC1D,iBAAkB,CAClB,KAAM,CACN,MAAO,CACP,OAAQ,CACR,QACD,CAEA,wTAEC,4BACD,CAEA,kLACC,aACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\n}\n\n.ck.ck-editor__editable .table table {\n\t& td.ck-editor__editable_selected,\n\t& th.ck-editor__editable_selected {\n\t\tposition: relative;\n\t\tcaret-color: transparent;\n\t\toutline: unset;\n\t\tbox-shadow: unset;\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tpointer-events: none;\n\t\t\tbackground-color: var(--ck-table-selected-cell-background);\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t& ::selection,\n\t\t&:focus {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t& .ck-widget_selected {\n\t\t\toutline: unset;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck-content .table{margin:1em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border:1px solid #bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/table.css"],names:[],mappings:"AAKA,mBAEC,eAAgB,CAChB,aAgCD,CA9BC,yBAEC,wBAAyB,CACzB,gBAAiB,CAIjB,UAAW,CACX,WAAY,CAIZ,yBAiBD,CAfC,wDAEC,aAAc,CACd,YAAa,CAKb,wBACD,CAEA,4BACC,eAAiB,CACjB,2BACD,CAMF,+BACC,gBACD,CAEA,+BACC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .table {\n\t/* Give the table widget some air and center it horizontally */\n\tmargin: 1em auto;\n\tdisplay: table;\n\n\t& table {\n\t\t/* The table cells should have slight borders */\n\t\tborder-collapse: collapse;\n\t\tborder-spacing: 0;\n\n\t\t/* Table width and height are set on the parent
    . Make sure the table inside stretches\n\t\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t/* The outer border of the table should be slightly darker than the inner lines.\n\t\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\n\t\tborder: 1px double hsl(0, 0%, 70%);\n\n\t\t& td,\n\t\t& th {\n\t\t\tmin-width: 2em;\n\t\t\tpadding: .4em;\n\n\t\t\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it\'s not necessary here.\n\t\t\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\n\t\t\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\n\t\t\tborder: 1px solid hsl(0, 0%, 75%);\n\t\t}\n\n\t\t& th {\n\t\t\tfont-weight: bold;\n\t\t\tbackground: hsla(0, 0%, 0%, 5%);\n\t\t}\n\t}\n}\n\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\nwhen content is available outside the ediitor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\n.ck-content[dir="rtl"] .table th {\n\ttext-align: right;\n}\n\n.ck-content[dir="ltr"] .table th {\n\ttext-align: left;\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-input-color{width:100%;display:flex}.ck.ck-input-color>input.ck.ck-input-text{min-width:auto;flex-grow:1}.ck.ck-input-color>input.ck.ck-input-text:active,.ck.ck-input-color>input.ck.ck-input-text:focus{z-index:var(--ck-z-default)}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{position:relative;overflow:hidden}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{position:absolute;display:block}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview{width:20px;height:20px;border:1px solid var(--ck-color-input-border)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{top:-30%;left:50%;height:150%;width:8%;background:red;border-radius:2px;transform:rotate(45deg);transform-origin:50%}.ck.ck-input-color .ck.ck-input-color__remove-color{width:100%;border-bottom:1px solid var(--ck-color-input-border);padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);border-bottom-left-radius:0;border-bottom-right-radius:0}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:0;margin-left:var(--ck-spacing-standard)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,mBACC,UAAW,CACX,YAgCD,CA9BC,0CACC,cAAe,CACf,WAMD,CAJC,iGAEC,2BACD,CAGD,sCACC,cAMD,CAHC,kFACC,YACD,CAIA,kFACC,iBAAkB,CAClB,eAMD,CAJC,0IACC,iBAAkB,CAClB,aACD,CC3BF,+CAEE,yBAA0B,CAC1B,4BAOF,CAVA,+CAOE,wBAAyB,CACzB,2BAEF,CAGC,8DACC,SAoCD,CArCA,wEAIE,wBAAyB,CACzB,2BAA4B,CAC5B,gBA+BF,CArCA,wEAUE,yBAA0B,CAC1B,4BAA6B,CAC7B,iBAyBF,CAtBC,0EACC,oDACD,CAEA,kGC9BF,eD+CE,CAjBA,2OC1BD,qCD2CC,CAjBA,kGAGC,UAAW,CACX,WAAY,CACZ,6CAYD,CAVC,0JACC,QAAS,CACT,QAAS,CACT,WAAY,CACZ,QAAS,CACT,cAA6B,CAC7B,iBAAkB,CAClB,uBAAwB,CACxB,oBACD,CAKH,oDACC,UAAW,CACX,oDAAqD,CACrD,qEAAwE,CAExE,2BAA4B,CAC5B,4BAkBD,CAxBA,8DASE,yBAeF,CAxBA,8DAaE,wBAWF,CARC,gEACC,uCAMD,CAPA,0EAIE,cAAe,CACf,sCAEF",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-input-color {\n\twidth: 100%;\n\tdisplay: flex;\n\n\t& > input.ck.ck-input-text {\n\t\tmin-width: auto;\n\t\tflex-grow: 1;\n\n\t\t&:active,\n\t\t&:focus {\n\t\t\tz-index: var(--ck-z-default);\n\t\t}\n\t}\n\n\t& > div.ck.ck-dropdown {\n\t\tmin-width: auto;\n\n\t\t/* This dropdown has no arrow but a color preview instead. */\n\t\t& > .ck-input-color__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__button {\n\t\t& .ck.ck-input-color__button__preview {\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\n\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_rounded.css";\n\n.ck.ck-input-color {\n\t& > .ck.ck-input-text {\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\t}\n\n\t& > .ck.ck-dropdown {\n\t\t& > .ck.ck-input-color__button {\n\t\t\tpadding: 0;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tmargin-left: -1px;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t\tmargin-right: -1px;\n\t\t\t}\n\n\t\t\t&.ck-disabled {\n\t\t\t\tbackground: var(--ck-color-input-disabled-background);\n\t\t\t}\n\n\t\t\t& > .ck.ck-input-color__button__preview {\n\t\t\t\t@mixin ck-rounded-corners;\n\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--ck-color-input-border);\n\n\t\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\t\ttop: -30%;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\theight: 150%;\n\t\t\t\t\twidth: 8%;\n\t\t\t\t\tbackground: hsl(0, 100%, 50%);\n\t\t\t\t\tborder-radius: 2px;\n\t\t\t\t\ttransform: rotate(45deg);\n\t\t\t\t\ttransform-origin: 50%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__remove-color {\n\t\twidth: 100%;\n\t\tborder-bottom: 1px solid var(--ck-color-input-border);\n\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t}\n\n\t\t& .ck.ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: 0;\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{width:100%;min-width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css"],names:[],mappings:"AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CAvBE,6CAEE,mCAMF,CARA,6CAME,oCAEF,CAGD,2BACC,UAAW,CACX,cACD,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\tflex-grow: 1;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-form__row {\n\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\t& + * {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-label {\n\t\twidth: 100%;\n\t\tmin-width: 100%;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-form__header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{padding:var(--ck-spacing-small) var(--ck-spacing-large);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-form__header .ck-form__header__label{font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css"],names:[],mappings:"AAKA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,kBAAmB,CACnB,6BACD,CCNA,MACC,4BACD,CAEA,oBACC,uDAAwD,CACxD,mCAAoC,CACpC,wCAAyC,CACzC,mDAKD,CAHC,4CACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__header {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: center;\n\tjustify-content: space-between;\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-form-header-height: 38px;\n}\n\n.ck.ck-form__header {\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\n\theight: var(--ck-form-header-height);\n\tline-height: var(--ck-form-header-height);\n\tborder-bottom: 1px solid var(--ck-color-base-border);\n\n\t& .ck-form__header__label {\n\t\tfont-weight: bold;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/form.css"],names:[],mappings:"AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form {\n\tpadding: 0 0 var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t& .ck.ck-input-text {\n\t\tmin-width: 100%;\n\t\twidth: 0;\n\t}\n\n\t& .ck.ck-dropdown {\n\t\tmin-width: 100%;\n\n\t\t& .ck-dropdown__button {\n\t\t\t&:not(:focus) {\n\t\t\t\tborder: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck-button__label {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,'.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view{display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{flex-grow:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{flex-wrap:wrap;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{display:flex;flex-direction:column-reverse;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{position:absolute;left:50%;bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style{width:80px;min-width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{width:50px;min-width:50px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view>.ck-label{font-size:10px;text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:start;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);padding:var(--ck-spacing-small) var(--ck-spacing-medium);min-width:var(--ck-table-properties-min-error-width);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-left:var(--ck-table-properties-error-arrow-size) solid transparent;border-bottom:var(--ck-table-properties-error-arrow-size) solid var(--ck-color-base-error);border-right:var(--ck-table-properties-error-arrow-size) solid transparent;border-top:0 solid transparent}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOE,0DACC,cAkBD,CAhBC,iFACC,YAAa,CACb,6BAKD,CAMA,+QACC,WACD,CAGD,8DACC,cAAe,CACf,kBAeD,CAbC,qFACC,YAAa,CACb,6BAA8B,CAC9B,kBAKD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EACC,iBAAkB,CAClB,QAAS,CACT,2DAAgE,CAChE,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CACX,iBAAkB,CAClB,wDAA6D,CAC7D,QAAS,CACT,0BACD,CC7DH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,uFACC,UAAW,CACX,cACD,CAEA,uFACC,UAAW,CACX,cACD,CAGD,8DACC,SAmBD,CAjBC,+FACC,cAAe,CACf,iBACD,CAEA,yMAEC,QACD,CAEA,iGACC,gBAAiB,CACjB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAKD,8EC9CD,eD+DC,CAjBA,mMC1CA,qCD2DA,CAjBA,8EAGC,qCAAsC,CACtC,qCAAsC,CACtC,wDAAyD,CACzD,oDAAqD,CACrD,iBAUD,CAPC,oFAGC,yEAAmB,CAAnB,0FAAmB,CAAnB,0EAAmB,CAAnB,8BACD,CAdD,8EAgBC,iEACD,CAGA,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column-reverse;\n\n\t\t\t\t& .ck.ck-dropdown {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-style {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-width {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tflex-wrap: wrap;\n\t\t\talign-items: center;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column-reverse;\n\t\t\t\talign-items: center;\n\n\t\t\t\t& .ck.ck-dropdown {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\t/* Allow absolute positioning of the status (error) balloons. */\n\t\tposition: relative;\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\ttransform: translate(-50%,100%);\n\n\t\t\t/* Make sure the balloon status stays on top of other form elements. */\n\t\t\tz-index: 1;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX( -50% );\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_rounded.css";\n\n:root {\n\t--ck-table-properties-error-arrow-size: 6px;\n\t--ck-table-properties-min-error-width: 150px;\n}\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\t& > .ck-label {\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-style {\n\t\t\t\twidth: 80px;\n\t\t\t\tmin-width: 80px;\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-width {\n\t\t\t\twidth: 50px;\n\t\t\t\tmin-width: 50px;\n\t\t\t}\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tpadding: 0;\n\n\t\t\t& .ck-labeled-field-view > .ck-label {\n\t\t\t\tfont-size: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimensions-row__width,\n\t\t\t& .ck-table-form__dimensions-row__height {\n\t\t\t\tmargin: 0\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\talign-self: start;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: var(--ck-ui-component-min-height);\n\t\t\t\tline-height: var(--ck-ui-component-min-height);\n\t\t\t\tmargin: 0 var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\t@mixin ck-rounded-corners;\n\n\t\t\tbackground: var(--ck-color-base-error);\n\t\t\tcolor: var(--ck-color-base-background);\n\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\t\tmin-width: var(--ck-table-properties-min-error-width);\n\t\t\ttext-align: center;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\n\t\t\t\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\n\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\n\t\t}\n\n\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\n\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n@keyframes ck-table-form-labeled-view-status-appear {\n\t0% {\n\t\topacity: 0;\n\t}\n\n\t100% {\n\t\topacity: 1;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{flex-grow:0}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{padding:0;width:35%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css"],names:[],mappings:"AAOE,6FACC,cAKD,CAHC,4GACC,WACD,CCPH,kCACC,WAcD,CAXE,2FACC,SAAU,CACV,SACD,CAGC,4GACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__padding-row {\n\t\t\tpadding: 0;\n\t\t\twidth: 35%;\n\t\t}\n\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t,n){var r=n(2),i=n.n(r),o=n(3),a=n.n(o)()(i.a);a.push([e.i,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{flex-wrap:wrap;flex-basis:0;align-content:baseline}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css"],names:[],mappings:"AAOE,mFACC,cAAe,CACf,YAAa,CACb,sBAKD,CAHC,qHACC,gBACD,CCTH,6BACC,WAeD,CAZE,mFACC,SASD,CAPC,kGACC,eAKD,CAHC,uHACC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\t\t\tflex-basis: 0;\n\t\t\talign-content: baseline;\n\n\t\t\t& .ck.ck-toolbar .ck-toolbar__items {\n\t\t\t\tflex-wrap: nowrap;\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\tpadding: 0;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t& .ck-toolbar__items > * {\n\t\t\t\t\twidth: 40px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.a=a},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==("undefined"==typeof window?"undefined":E(window))&&(n=window)}e.exports=n},function(e,t,n){t.a=function(){return!1}},function(e,t,n){var r=o.a.mark(cs),i=o.a.mark(us),a=o.a.mark(ud);n.r(t);var f=n(5),g=f.a.Symbol,v=Object.prototype,C=v.hasOwnProperty,_=v.toString,x=g?g.toStringTag:void 0,S=Object.prototype.toString,M=g?g.toStringTag:void 0,T=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":M&&M in Object(e)?function(e){var t=C.call(e,x),n=e[x];try{e[x]=void 0;var r=!0}catch(e){}var i=_.call(e);return r&&(t?e[x]=n:delete e[x]),i}(e):function(e){return S.call(e)}(e)},I=function(e,t){return function(n){return e(t(n))}},B=I(Object.getPrototypeOf,Object),N=function(e){return null!=e&&"object"==E(e)},P=Function.prototype,L=Object.prototype,O=P.toString,z=L.hasOwnProperty,j=O.call(Object),R=function(e){if(!N(e)||"[object Object]"!=T(e))return!1;var t=B(e);if(null===t)return!0;var n=z.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&O.call(n)==j},F=function(e,t){return e===t||e!=e&&t!=t},V=function(e,t){for(var n=e.length;n--;)if(F(e[n][0],t))return n;return-1},U=Array.prototype.splice;function H(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1},H.prototype.set=function(e,t){var n=this.__data__,r=V(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};var K,W=H,G=function(e){var t=E(e);return null!=e&&("object"==t||"function"==t)},q=function(e){if(!G(e))return!1;var t=T(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},Y=f.a["__core-js_shared__"],Q=(K=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+K:"",$=Function.prototype.toString,Z=function(e){if(null!=e){try{return $.call(e)}catch(e){}try{return e+""}catch(e){}}return""},J=/^\[object .+?Constructor\]$/,X=Function.prototype,ee=Object.prototype,te=X.toString,ne=ee.hasOwnProperty,re=RegExp("^"+te.call(ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ie=function(e){return!(!G(e)||function(e){return!!Q&&Q in e}(e))&&(q(e)?re:J).test(Z(e))},oe=function(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return ie(n)?n:void 0},ae=oe(f.a,"Map"),se=oe(Object,"create"),le=Object.prototype.hasOwnProperty,ce=Object.prototype.hasOwnProperty;function ue(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},Be={};Be["[object Float32Array]"]=Be["[object Float64Array]"]=Be["[object Int8Array]"]=Be["[object Int16Array]"]=Be["[object Int32Array]"]=Be["[object Uint8Array]"]=Be["[object Uint8ClampedArray]"]=Be["[object Uint16Array]"]=Be["[object Uint32Array]"]=!0,Be["[object Arguments]"]=Be["[object Array]"]=Be["[object ArrayBuffer]"]=Be["[object Boolean]"]=Be["[object DataView]"]=Be["[object Date]"]=Be["[object Error]"]=Be["[object Function]"]=Be["[object Map]"]=Be["[object Number]"]=Be["[object Object]"]=Be["[object RegExp]"]=Be["[object Set]"]=Be["[object String]"]=Be["[object WeakMap]"]=!1;var Ne=function(e){return function(t){return e(t)}},Pe=n(7),Le=Pe.a&&Pe.a.isTypedArray,Oe=Le?Ne(Le):function(e){return N(e)&&Ie(e.length)&&!!Be[T(e)]},ze=Object.prototype.hasOwnProperty,je=function(e,t){var n=Ee(e),r=!n&&De(e),i=!n&&!r&&Object(Se.a)(e),o=!n&&!r&&!i&&Oe(e),a=n||r||i||o,s=a?function(e,t){for(var n=-1,r=Array(e);++n3&&void 0!==arguments[3]&&arguments[3];if(R(t))this._setObjectToTarget(e,t,r);else{var i=t.split(".");t=i.pop();var o,a=d(i);try{for(a.s();!(o=a.n()).done;){var s=o.value;R(e[s])||(e[s]={}),e=e[s]}}catch(e){a.e(e)}finally{a.f()}if(R(n))return R(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,n,r);r&&void 0!==e[t]||(e[t]=n)}}},{key:"_getFromSource",value:function(e,t){var n=t.split(".");t=n.pop();var r,i=d(n);try{for(i.s();!(r=i.n()).done;){var o=r.value;if(!R(e[o])){e=null;break}e=e[o]}}catch(e){i.e(e)}finally{i.f()}return e?Ht(e[t]):void 0}},{key:"_setObjectToTarget",value:function(e,t,n){var r=this;Object.keys(t).forEach((function(i){r._setToTarget(e,i,t[i],n)}))}}]),e}();function Ht(e){return Ft(e,Kt)}function Kt(e){return Vt(e)?e:void 0}var Wt=function e(t,n){m(this,e),this.source=t,this.name=n,this.path=[],this.stop=function e(){e.called=!0},this.off=function e(){e.called=!0}},Gt=new Array(256).fill().map((function(e,t){return("0"+t.toString(16)).slice(-2)}));function qt(){var e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,n=4294967296*Math.random()>>>0,r=4294967296*Math.random()>>>0;return"e"+Gt[e>>0&255]+Gt[e>>8&255]+Gt[e>>16&255]+Gt[e>>24&255]+Gt[t>>0&255]+Gt[t>>8&255]+Gt[t>>16&255]+Gt[t>>24&255]+Gt[n>>0&255]+Gt[n>>8&255]+Gt[n>>16&255]+Gt[n>>24&255]+Gt[r>>0&255]+Gt[r>>8&255]+Gt[r>>16&255]+Gt[r>>24&255]}var Yt={get:function(e){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5},Qt=(n(8),n(0)),$t=Symbol("listeningTo"),Zt=Symbol("emitterId"),Jt={on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.listenTo(this,e,t,n)},once:function(e,t,n){var r=!1;this.listenTo(this,e,(function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};this[$t]||(this[$t]={});var a=this[$t];en(e)||Xt(e);var s=en(e);(r=a[s])||(r=a[s]={emitter:e,callbacks:{}}),(i=r.callbacks[t])||(i=r.callbacks[t]=[]),i.push(n),function(e,t){var n=tn(e);if(!n[t]){for(var r=t,i=null,o=[];""!==r&&!n[r];)n[r]={callbacks:[],childEvents:[]},o.push(n[r]),i&&n[r].childEvents.push(i),i=r,r=r.substr(0,r.lastIndexOf(":"));if(""!==r){var a,s=d(o);try{for(s.s();!(a=s.n()).done;){a.value.callbacks=n[r].callbacks.slice()}}catch(e){s.e(e)}finally{s.f()}n[r].childEvents.push(i)}}}(e,t);var l,c=nn(e,t),u=Yt.get(o.priority),h={callback:n,priority:u},f=d(c);try{for(f.s();!(l=f.n()).done;){for(var g=l.value,m=!1,v=0;v1?i-1:0),a=1;a-1?rn(e,t.substr(0,t.lastIndexOf(":"))):null}function on(e,t,n){var r,i=d(e);try{for(i.s();!(r=i.n()).done;){var o=u(r.value,2),a=o[0],s=o[1];s?"function"==typeof s&&(s=s(t.name)):s=t.name;var l=new Wt(t.source,s);l.path=h(t.path),a.fire.apply(a,[l].concat(h(n)))}}catch(e){i.e(e)}finally{i.f()}}function an(e,t,n){var r,i=d(nn(e,t));try{for(i.s();!(r=i.n()).done;)for(var o=r.value,a=0;a1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};m(this,e);var r=sn(t);if(r||(n=t),this._items=[],this._itemMap=new Map,this._idProperty=n.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],r){var i,o=d(t);try{for(o.s();!(i=o.n()).done;){var a=i.value;this._items.push(a),this._itemMap.set(this._getItemIdBeforeAdding(a),a)}}catch(e){o.e(e)}finally{o.f()}}}return p(e,[{key:"add",value:function(e,t){return this.addMany([e],t)}},{key:"addMany",value:function(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new Qt.a("collection-add-item-invalid-index",this);for(var n=0;nc.value&&u--}}catch(e){h.e(e)}finally{h.f()}var f,g=d(r._skippedIndexesFromExternal);try{for(g.s();!(f=g.n()).done;){u>=f.value&&u++}}catch(e){g.e(e)}finally{g.f()}n._bindToExternalToInternalMap.set(i,l),n._bindToInternalToExternalMap.set(l,i),n.add(l,u);for(var m=0;mt&&e.push(t),e}),[])}))}},{key:"_getItemIdBeforeAdding",value:function(e){var t,n=this._idProperty;if(n in e){if("string"!=typeof(t=e[n]))throw new Qt.a("collection-add-invalid-id",this);if(this.get(t))throw new Qt.a("collection-add-item-already-exists",this)}else e[n]=t=qt();return t}},{key:"_remove",value:function(e){var t,n,r,i=!1,o=this._idProperty;if("string"==typeof e?(n=e,i=!(r=this._itemMap.get(n)),r&&(t=this._items.indexOf(r))):"number"==typeof e?(t=e,i=!(r=this._items[t]),r&&(n=r[o])):(n=(r=e)[o],i=-1==(t=this._items.indexOf(r))||!this._itemMap.get(n)),i)throw new Qt.a("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(n);var a=this._bindToInternalToExternalMap.get(r);return this._bindToInternalToExternalMap.delete(r),this._bindToExternalToInternalMap.delete(a),this.fire("remove",r,t),[r,t]}},{key:Symbol.iterator,value:function(){return this._items[Symbol.iterator]()}},{key:"length",get:function(){return this._items.length}},{key:"first",get:function(){return this._items[0]||null}},{key:"last",get:function(){return this._items[this.length-1]||null}}]),e}();ln(cn,Jt);var un=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];m(this,e),this._context=t,this._plugins=new Map,this._availablePlugins=new Map;var i,o=d(n);try{for(o.s();!(i=o.n()).done;){var a=i.value;a.pluginName&&this._availablePlugins.set(a.pluginName,a)}}catch(e){o.e(e)}finally{o.f()}this._contextPlugins=new Map;var s,l=d(r);try{for(l.s();!(s=l.n()).done;){var c=u(s.value,2),h=c[0],f=c[1];this._contextPlugins.set(h,f),this._contextPlugins.set(f,h),h.pluginName&&this._availablePlugins.set(h.pluginName,h)}}catch(e){l.e(e)}finally{l.f()}}return p(e,[{key:Symbol.iterator,value:o.a.mark((function e(){var t,n,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=d(this._plugins),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=11;break}if(r=n.value,e.t0="function"==typeof r[0],!e.t0){e.next=9;break}return e.next=9,r;case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t1=e.catch(1),t.e(e.t1);case 16:return e.prev=16,t.f(),e.finish(16);case 19:case"end":return e.stop()}}),e,this,[[1,13,16,19]])}))},{key:"get",value:function(e){var t=this._plugins.get(e);if(!t){var n=e;throw"function"==typeof e&&(n=e.pluginName||e.name),new Qt.a("plugincollection-plugin-not-loaded",this._context,{plugin:n})}return t}},{key:"has",value:function(e){return this._plugins.has(e)}},{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=this,r=this._context,i=new Set,o=[],a=g(e),s=g(t),l=function(e){var t,n=[],r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value;f(i)||n.push(i)}}catch(e){r.e(e)}finally{r.f()}return n.length?n:null}(e);if(l){var c="plugincollection-plugin-not-found";return Object(Qt.b)(c,{plugins:l}),Promise.reject(new Qt.a(c,r,{plugins:l}))}return Promise.all(a.map(u)).then((function(){return h(o,"init")})).then((function(){return h(o,"afterInit")})).then((function(){return o}));function u(e){if(!s.includes(e)&&!n._plugins.has(e)&&!i.has(e))return function(e){return new Promise((function(a){i.add(e),e.requires&&e.requires.forEach((function(n){var i=f(n);if(e.isContextPlugin&&!i.isContextPlugin)throw new Qt.a("plugincollection-context-required",null,{plugin:i.name,requiredBy:e.name});if(t.includes(i))throw new Qt.a("plugincollection-required",r,{plugin:i.name,requiredBy:e.name});u(i)}));var s=n._contextPlugins.get(e)||new e(r);n._add(e,s),o.push(s),a()}))}(e).catch((function(t){throw Object(Qt.b)("plugincollection-load",{plugin:e}),t}))}function h(e,t){return e.reduce((function(e,r){return r[t]?n._contextPlugins.has(r)?e:e.then(r[t].bind(r)):e}),Promise.resolve())}function f(e){return"function"==typeof e?e:n._availablePlugins.get(e)}function g(e){return e.map((function(e){return f(e)})).filter((function(e){return!!e}))}}},{key:"destroy",value:function(){var e,t=[],n=d(this);try{for(n.s();!(e=n.n()).done;){var r=u(e.value,2)[1];"function"!=typeof r.destroy||this._contextPlugins.has(r)||t.push(r.destroy())}}catch(e){n.e(e)}finally{n.f()}return Promise.all(t)}},{key:"_add",value:function(e,t){this._plugins.set(e,t);var n=e.pluginName;if(n){if(this._plugins.has(n))throw new Qt.a("plugincollection-plugin-name-conflict",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:e});this._plugins.set(n,t)}}}]),e}();function dn(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if("number"!=typeof n)throw new Qt.a("translation-service-quantity-not-a-number",null,{quantity:n});var r=Object.keys(window.CKEDITOR_TRANSLATIONS).length;1===r&&(e=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);var i=t.id||t.string;if(0===r||!function(e,t){return!!window.CKEDITOR_TRANSLATIONS[e]&&!!window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,i))return 1!==n?t.plural:t.string;var o=window.CKEDITOR_TRANSLATIONS[e].dictionary,a=window.CKEDITOR_TRANSLATIONS[e].getPluralForm||function(e){return 1===e?0:1};if("string"==typeof o[i])return o[i];var s=Number(a(n));return o[i][s]}ln(un,Jt),window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});var hn=["ar","fa","he","ku","ug"],fn=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};m(this,e),this.uiLanguage=n.uiLanguage||"en",this.contentLanguage=n.contentLanguage||this.uiLanguage,this.uiLanguageDirection=gn(this.uiLanguage),this.contentLanguageDirection=gn(this.contentLanguage),this.t=function(e,n){return t._t(e,n)}}return p(e,[{key:"_t",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];Array.isArray(t)||(t=[t]),"string"==typeof e&&(e={string:e});var n=e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,(function(e,n){return n0&&void 0!==arguments[0]?arguments[0]:{includeSelf:!1,parentFirst:!1},t=[],n=e.includeSelf?this:this.parent;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}},{key:"getCommonAncestor",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.getAncestors(t),r=e.getAncestors(t),i=0;n[i]==r[i]&&n[i];)i++;return 0===i?null:n[i-1]}},{key:"isBefore",value:function(e){if(this==e)return!1;if(this.root!==e.root)return!1;var t=this.getPath(),n=e.getPath(),r=vn(t,n);switch(r){case"prefix":return!0;case"extension":return!1;default:return t[r]t.data.length)throw new Qt.a("view-textproxy-wrong-offsetintext",this);if(r<0||n+r>t.data.length)throw new Qt.a("view-textproxy-wrong-length",this);this.data=t.data.substring(n,n+r),this.offsetInText=n}return p(e,[{key:"is",value:function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}},{key:"getAncestors",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{includeSelf:!1,parentFirst:!1},t=[],n=e.includeSelf?this.textNode:this.parent;null!==n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}},{key:"offsetSize",get:function(){return this.data.length}},{key:"isPartial",get:function(){return this.data.length!==this.textNode.data.length}},{key:"parent",get:function(){return this.textNode.parent}},{key:"root",get:function(){return this.textNode.root}},{key:"document",get:function(){return this.textNode.document}}]),e}();function wn(e){return sn(e)?new Map(e):function(e){var t=new Map;for(var n in e)t.set(n,e[n]);return t}(e)}var Cn=function(){function e(){m(this,e),this._patterns=[],this.add.apply(this,arguments)}return p(e,[{key:"add",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n0?e:null}},{key:"getElementName",value:function(){if(1!==this._patterns.length)return null;var e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}]),e}();function An(e,t){if("function"==typeof t)return t(e);var n={};return t.name&&(n.name=function(e,t){return e instanceof RegExp?e.test(t):e===t}(t.name,e.name),!n.name)||t.attributes&&(n.attributes=function(e,t){var n=[];for(var r in e){var i=e[r];if(!t.hasAttribute(r))return null;var o=t.getAttribute(r);if(!0===i)n.push(r);else if(i instanceof RegExp){if(!i.test(o))return null;n.push(r)}else{if(o!==i)return null;n.push(r)}}return n}(t.attributes,e),!n.attributes)?null:!(t.classes&&(n.classes=function(e,t){var n,r=[],i=d(e);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o instanceof RegExp){var a,s=d(t.getClassNames());try{for(s.s();!(a=s.n()).done;){var l=a.value;o.test(l)&&r.push(l)}}catch(e){s.e(e)}finally{s.f()}if(0===r.length)return null}else{if(!t.hasClass(o))return null;r.push(o)}}}catch(e){i.e(e)}finally{i.f()}return r}(t.classes,e),!n.classes))&&!(t.styles&&(n.styles=function(e,t){var n=[];for(var r in e){var i=e[r];if(!t.hasStyle(r))return null;var o=t.getStyle(r);if(i instanceof RegExp){if(!i.test(o))return null;n.push(r)}else{if(o!==i)return null;n.push(r)}}return n}(t.styles,e),!n.styles))&&n}var _n=function(e){return"symbol"==E(e)||N(e)&&"[object Symbol]"==T(e)},xn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dn=/^\w*$/;function En(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(En.Cache||ge),n}En.Cache=ge;var Sn=En,Mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Tn=/\\(\\)?/g,In=function(e){var t=Sn((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Mn,(function(e,n,r,i){t.push(r?i.replace(Tn,"$1"):n||e)})),t}),(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}(),Bn=g?g.prototype:void 0,Nn=Bn?Bn.toString:void 0,Pn=function e(t){if("string"==typeof t)return t;if(Ee(t))return function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++ni?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}($n),Xn=function(e,t){return Jn(function(e,t,n){return t=Yn(void 0===t?e.length-1:t,0),function(){for(var r=arguments,i=-1,o=Yn(r.length-t,0),a=Array(o);++i1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,a&&function(e,t,n){if(!G(n))return!1;var r=E(t);return!!("number"==r?He(n)&&Te(t,n.length):"string"==r&&t in n)&&F(n[t],e)}(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=Object(t);++r1){var n=t.splice(0,t.length-1).join("."),r=Vn(this._styles,n);r&&!Array.from(Object.keys(r)).length&&this.remove(n)}}},{key:"isEmpty",get:function(){var e=Object.entries(this._styles);return!Array.from(e).length}},{key:"size",get:function(){return this.isEmpty?0:this.getStyleNames().length}}]),e}(),ir=function(){function e(){m(this,e),this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}return p(e,[{key:"toNormalizedForm",value:function(e,t,n){if(G(t))ar(n,or(e),t);else if(this._normalizers.has(e)){var r=this._normalizers.get(e)(t);ar(n,r.path,r.value)}else ar(n,e,t)}},{key:"getNormalized",value:function(e,t){if(!e)return tr({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){var n=this._extractors.get(e);if("string"==typeof n)return Vn(t,n);var r=n(e,t);if(r)return r}return Vn(t,or(e))}},{key:"getReducedForm",value:function(e,t){var n=this.getNormalized(e,t);return void 0===n?[]:this._reducers.has(e)?this._reducers.get(e)(n):[[e,n]]}},{key:"getRelatedStyles",value:function(e){return this._consumables.get(e)||[]}},{key:"setNormalizer",value:function(e,t){this._normalizers.set(e,t)}},{key:"setExtractor",value:function(e,t){this._extractors.set(e,t)}},{key:"setReducer",value:function(e,t){this._reducers.set(e,t)}},{key:"setStyleRelation",value:function(e,t){this._mapStyleNames(e,t);var n,r=d(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;this._mapStyleNames(i,[e])}}catch(e){r.e(e)}finally{r.f()}}},{key:"_mapStyleNames",value:function(e,t){var n;this._consumables.has(e)||this._consumables.set(e,[]),(n=this._consumables.get(e)).push.apply(n,h(t))}}]),e}();function or(e){return e.replace("-",".")}function ar(e,t,n){var r=n;G(n)&&(r=tr({},Vn(e,t),n)),nr(e,t,r)}var sr=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;if(m(this,n),(a=t.call(this,e)).name=r,a._attrs=function(e){var t,n=d(e=wn(e));try{for(n.s();!(t=n.n()).done;){var r=u(t.value,2),i=r[0],o=r[1];null===o?e.delete(i):"string"!=typeof o&&e.set(i,String(o))}}catch(e){n.e(e)}finally{n.f()}return e}(i),a._children=[],o&&a._insertChild(0,o),a._classes=new Set,a._attrs.has("class")){var s=a._attrs.get("class");lr(a._classes,s),a._attrs.delete("class")}return a._styles=new rr(a.document.stylesProcessor),a._attrs.has("style")&&(a._styles.setTo(a._attrs.get("style")),a._attrs.delete("style")),a._customProperties=new Map,y(a)}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"getChild",value:function(e){return this._children[e]}},{key:"getChildIndex",value:function(e){return this._children.indexOf(e)}},{key:"getChildren",value:function(){return this._children[Symbol.iterator]()}},{key:"getAttributeKeys",value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=this._classes.size>0,!e.t0){e.next=4;break}return e.next=4,"class";case 4:if(e.t1=this._styles.isEmpty,e.t1){e.next=8;break}return e.next=8,"style";case 8:return e.delegateYield(this._attrs.keys(),"t2",9);case 9:case"end":return e.stop()}}),e,this)}))},{key:"getAttributes",value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this._attrs.entries(),"t0",1);case 1:if(e.t1=this._classes.size>0,!e.t1){e.next=5;break}return e.next=5,["class",this.getAttribute("class")];case 5:if(e.t2=this._styles.isEmpty,e.t2){e.next=9;break}return e.next=9,["style",this.getAttribute("style")];case 9:case"end":return e.stop()}}),e,this)}))},{key:"getAttribute",value:function(e){if("class"==e)return this._classes.size>0?h(this._classes).join(" "):void 0;if("style"==e){var t=this._styles.toString();return""==t?void 0:t}return this._attrs.get(e)}},{key:"hasAttribute",value:function(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}},{key:"isSimilar",value:function(e){if(!(e instanceof n))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;var t,r=d(this._attrs);try{for(r.s();!(t=r.n()).done;){var i=u(t.value,2),o=i[0],a=i[1];if(!e._attrs.has(o)||e._attrs.get(o)!==a)return!1}}catch(e){r.e(e)}finally{r.f()}var s,l=d(this._classes);try{for(l.s();!(s=l.n()).done;){var c=s.value;if(!e._classes.has(c))return!1}}catch(e){l.e(e)}finally{l.f()}var h,f=d(this._styles.getStyleNames());try{for(f.s();!(h=f.n()).done;){var g=h.value;if(!e._styles.has(g)||e._styles.getAsString(g)!==this._styles.getAsString(g))return!1}}catch(e){f.e(e)}finally{f.f()}return!0}},{key:"hasClass",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]&&arguments[0],t=[];if(e){var n,r=d(this.getChildren());try{for(r.s();!(n=r.n()).done;){var i=n.value;t.push(i._clone(e))}}catch(e){r.e(e)}finally{r.f()}}var o=new this.constructor(this.document,this.name,this._attrs,t);return o._classes=new Set(this._classes),o._styles.set(this._styles.getNormalized()),o._customProperties=new Map(this._customProperties),o.getFillerOffset=this.getFillerOffset,o}},{key:"_appendChild",value:function(e){return this._insertChild(this.childCount,e)}},{key:"_insertChild",value:function(e,t){this._fireChange("children",this);var n,r=0,i=d(function(e,t){return"string"==typeof t?[new bn(e,t)]:(sn(t)||(t=[t]),Array.from(t).map((function(t){return"string"==typeof t?new bn(e,t):t instanceof yn?new bn(e,t.data):t})))}(this.document,t));try{for(i.s();!(n=i.n()).done;){var o=n.value;null!==o.parent&&o._remove(),o.parent=this,o.document=this.document,this._children.splice(e,0,o),e++,r++}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"_removeChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this._fireChange("children",this);for(var n=e;n0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}},{key:"_addClass",value:function(e){var t=this;this._fireChange("attributes",this),(e=Array.isArray(e)?e:[e]).forEach((function(e){return t._classes.add(e)}))}},{key:"_removeClass",value:function(e){var t=this;this._fireChange("attributes",this),(e=Array.isArray(e)?e:[e]).forEach((function(e){return t._classes.delete(e)}))}},{key:"_setStyle",value:function(e,t){this._fireChange("attributes",this),this._styles.set(e,t)}},{key:"_removeStyle",value:function(e){var t=this;this._fireChange("attributes",this),(e=Array.isArray(e)?e:[e]).forEach((function(e){return t._styles.remove(e)}))}},{key:"_setCustomProperty",value:function(e,t){this._customProperties.set(e,t)}},{key:"_removeCustomProperty",value:function(e){return this._customProperties.delete(e)}},{key:"childCount",get:function(){return this._children.length}},{key:"isEmpty",get:function(){return 0===this._children.length}}]),n}(kn);function lr(e,t){var n=t.split(/\s+/);e.clear(),n.forEach((function(t){return e.add(t)}))}var cr=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).getFillerOffset=ur,a}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}}]),n}(sr);function ur(){var e=h(this.getChildren()),t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;var n,r=d(e);try{for(r.s();!(n=r.n()).done;){if(!n.value.is("uiElement"))return null}}catch(e){r.e(e)}finally{r.f()}return this.childCount}var dr=er((function(e,t){we(t,qe(t),e)})),hr=Symbol("observableProperties"),fr=Symbol("boundObservables"),gr=Symbol("boundProperties"),mr={set:function(e,t){var n=this;if(G(e))Object.keys(e).forEach((function(t){n.set(t,e[t])}),this);else{pr(this);var r=this[hr];if(e in this&&!r.has(e))throw new Qt.a("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:function(){return r.get(e)},set:function(t){var n=r.get(e),i=this.fire("set:"+e,e,t,n);void 0===i&&(i=t),n===i&&r.has(e)||(r.set(e,i),this.fire("change:"+e,e,i,n))}}),this[e]=t}},bind:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r1)throw new Qt.a("observable-bind-to-no-callback",this);if(i>1&&n.callback)throw new Qt.a("observable-bind-to-extra-callback",this);n.to.forEach((function(e){if(e.properties.length&&e.properties.length!==i)throw new Qt.a("observable-bind-to-properties-length",t);e.properties.length||(e.properties=t._bindProperties)})),this._to=n.to,n.callback&&(this._bindings.get(r[0]).callback=n.callback),e=this._observable,this._to.forEach((function(t){var n,r=e[fr];r.get(t.observable)||e.listenTo(t.observable,"change",(function(i,o){(n=r.get(t.observable)[o])&&n.forEach((function(t){wr(e,t.property)}))}))})),function(e){var t;e._bindings.forEach((function(n,r){e._to.forEach((function(i){t=i.properties[n.callback?0:e._bindProperties.indexOf(r)],n.to.push([i.observable,t]),function(e,t,n,r){var i=e[fr],o=i.get(n),a=o||{};a[r]||(a[r]=new Set),a[r].add(t),o||i.set(n,a)}(e._observable,n,i.observable,t)}))}))}(this),this._bindProperties.forEach((function(e){wr(t._observable,e)}))}function br(e,t,n){if(this._bindings.size>1)throw new Qt.a("observable-bind-to-many-not-one-binding",this);this.to.apply(this,h(function(e,t){var n=e.map((function(e){return[e,t]}));return Array.prototype.concat.apply([],n)}(e,t)).concat([n]))}function yr(e){return e.every((function(e){return"string"==typeof e}))}function wr(e,t){var n,r=e[gr].get(t);r.callback?n=r.callback.apply(e,r.to.map((function(e){return e[0][e[1]]}))):n=(n=r.to[0])[0][n[1]],Object.prototype.hasOwnProperty.call(e,t)?e[t]=n:e.set(t,n)}var Cr=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).set("isReadOnly",!1),a.set("isFocused",!1),a.bind("isReadOnly").to(e),a.bind("isFocused").to(e,"isFocused",(function(t){return t&&e.selection.editableElement==w(a)})),a.listenTo(e.selection,"change",(function(){a.isFocused=e.isFocused&&e.selection.editableElement==w(a)})),a}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"destroy",value:function(){this.stopListening()}}]),n}(cr);ln(Cr,vr);var Ar=Symbol("rootName"),_r=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e,r)).rootName="main",i}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"rootName",get:function(){return this.getCustomProperty(Ar)},set:function(e){this._setCustomProperty(Ar,e)}},{key:"_name",set:function(e){this.name=e}}]),n}(Cr),xr=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(m(this,e),!t.boundaries&&!t.startPosition)throw new Qt.a("view-tree-walker-no-start-position",null);if(t.direction&&"forward"!=t.direction&&"backward"!=t.direction)throw new Qt.a("view-tree-walker-unknown-direction",t.startPosition,{direction:t.direction});this.boundaries=t.boundaries||null,t.startPosition?this.position=Dr._createAt(t.startPosition):this.position=Dr._createAt(t.boundaries["backward"==t.direction?"end":"start"]),this.direction=t.direction||"forward",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}return p(e,[{key:Symbol.iterator,value:function(){return this}},{key:"skip",value:function(e){var t,n,r;do{var i;r=this.position,t=(i=this.next()).done,n=i.value}while(!t&&e(n));t||(this.position=r)}},{key:"next",value:function(){return"forward"==this.direction?this._next():this._previous()}},{key:"_next",value:function(){var e,t=this.position.clone(),n=this.position,r=t.parent;if(null===r.parent&&t.offset===r.childCount)return{done:!0};if(r===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};if(r instanceof bn){if(t.isAtEnd)return this.position=Dr._createAfter(r),this._next();e=r.data[t.offset]}else e=r.getChild(t.offset);if(e instanceof sr)return this.shallow?t.offset++:t=new Dr(e,0),this.position=t,this._formatReturnValue("elementStart",e,n,t,1);if(e instanceof bn){if(this.singleCharacters)return t=new Dr(e,0),this.position=t,this._next();var i,o=e.data.length;return e==this._boundaryEndParent?(o=this.boundaries.end.offset,i=new yn(e,0,o),t=Dr._createAfter(i)):(i=new yn(e,0,e.data.length),t.offset++),this.position=t,this._formatReturnValue("text",i,n,t,o)}if("string"==typeof e){var a;a=this.singleCharacters?1:(r===this._boundaryEndParent?this.boundaries.end.offset:r.data.length)-t.offset;var s=new yn(r,t.offset,a);return t.offset+=a,this.position=t,this._formatReturnValue("text",s,n,t,a)}return t=Dr._createAfter(r),this.position=t,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",r,n,t)}},{key:"_previous",value:function(){var e,t=this.position.clone(),n=this.position,r=t.parent;if(null===r.parent&&0===t.offset)return{done:!0};if(r==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};if(r instanceof bn){if(t.isAtStart)return this.position=Dr._createBefore(r),this._previous();e=r.data[t.offset-1]}else e=r.getChild(t.offset-1);if(e instanceof sr)return this.shallow?(t.offset--,this.position=t,this._formatReturnValue("elementStart",e,n,t,1)):(t=new Dr(e,e.childCount),this.position=t,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",e,n,t));if(e instanceof bn){if(this.singleCharacters)return t=new Dr(e,e.data.length),this.position=t,this._previous();var i,o=e.data.length;if(e==this._boundaryStartParent){var a=this.boundaries.start.offset;o=(i=new yn(e,a,e.data.length-a)).data.length,t=Dr._createBefore(i)}else i=new yn(e,0,e.data.length),t.offset--;return this.position=t,this._formatReturnValue("text",i,n,t,o)}if("string"==typeof e){var s;if(this.singleCharacters)s=1;else{var l=r===this._boundaryStartParent?this.boundaries.start.offset:0;s=t.offset-l}t.offset-=s;var c=new yn(r,t.offset,s);return this.position=t,this._formatReturnValue("text",c,n,t,s)}return t=Dr._createBefore(r),this.position=t,this._formatReturnValue("elementStart",r,n,t,1)}},{key:"_formatReturnValue",value:function(e,t,n,r,i){return t instanceof yn&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?n=Dr._createAfter(t.textNode):(r=Dr._createAfter(t.textNode),this.position=r)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?n=Dr._createBefore(t.textNode):(r=Dr._createBefore(t.textNode),this.position=r))),{done:!1,value:{type:e,item:t,previousPosition:n,nextPosition:r,length:i}}}}]),e}(),Dr=function(){function e(t,n){m(this,e),this.parent=t,this.offset=n}return p(e,[{key:"getShiftedBy",value:function(t){var n=e._createAt(this),r=n.offset+t;return n.offset=r<0?0:r,n}},{key:"getLastMatchingPosition",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.startPosition=this;var n=new xr(t);return n.skip(e),n.position}},{key:"getAncestors",value:function(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}},{key:"getCommonAncestor",value:function(e){for(var t=this.getAncestors(),n=e.getAncestors(),r=0;t[r]==n[r]&&t[r];)r++;return 0===r?null:t[r-1]}},{key:"is",value:function(e){return"position"===e||"view:position"===e}},{key:"isEqual",value:function(e){return this.parent==e.parent&&this.offset==e.offset}},{key:"isBefore",value:function(e){return"before"==this.compareWith(e)}},{key:"isAfter",value:function(e){return"after"==this.compareWith(e)}},{key:"compareWith",value:function(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";var t=this.parent.is("node")?this.parent.getPath():[],n=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),n.push(e.offset);var r=vn(t,n);switch(r){case"prefix":return"before";case"extension":return"after";default:return t[r]0&&void 0!==arguments[0]?arguments[0]:{};return e.startPosition=this,new xr(e)}},{key:"clone",value:function(){return new e(this.parent,this.offset)}},{key:"nodeAfter",get:function(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}},{key:"nodeBefore",get:function(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}},{key:"isAtStart",get:function(){return 0===this.offset}},{key:"isAtEnd",get:function(){var e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}},{key:"root",get:function(){return this.parent.root}},{key:"editableElement",get:function(){for(var e=this.parent;!(e instanceof Cr);){if(!e.parent)return null;e=e.parent}return e}}],[{key:"_createAt",value:function(t,n){if(t instanceof e)return new this(t.parent,t.offset);var r=t;if("end"==n)n=r.is("$text")?r.data.length:r.childCount;else{if("before"==n)return this._createBefore(r);if("after"==n)return this._createAfter(r);if(0!==n&&!n)throw new Qt.a("view-createpositionat-offset-required",r)}return new e(r,n)}},{key:"_createAfter",value:function(t){if(t.is("$textProxy"))return new e(t.textNode,t.offsetInText+t.data.length);if(!t.parent)throw new Qt.a("view-position-after-root",t,{root:t});return new e(t.parent,t.index+1)}},{key:"_createBefore",value:function(t){if(t.is("$textProxy"))return new e(t.textNode,t.offsetInText);if(!t.parent)throw new Qt.a("view-position-before-root",t,{root:t});return new e(t.parent,t.index)}}]),e}(),Er=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;m(this,e),this.start=t.clone(),this.end=n?n.clone():t.clone()}return p(e,[{key:Symbol.iterator,value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(new xr({boundaries:this,ignoreElementEnd:!0}),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:"getEnlarged",value:function(){var t=this.start.getLastMatchingPosition(Sr,{direction:"backward"}),n=this.end.getLastMatchingPosition(Sr);return t.parent.is("$text")&&t.isAtStart&&(t=Dr._createBefore(t.parent)),n.parent.is("$text")&&n.isAtEnd&&(n=Dr._createAfter(n.parent)),new e(t,n)}},{key:"getTrimmed",value:function(){var t=this.start.getLastMatchingPosition(Sr);if(t.isAfter(this.end)||t.isEqual(this.end))return new e(t,t);var n=this.end.getLastMatchingPosition(Sr,{direction:"backward"}),r=t.nodeAfter,i=n.nodeBefore;return r&&r.is("$text")&&(t=new Dr(r,0)),i&&i.is("$text")&&(n=new Dr(i,i.data.length)),new e(t,n)}},{key:"isEqual",value:function(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}},{key:"containsPosition",value:function(e){return e.isAfter(this.start)&&e.isBefore(this.end)}},{key:"containsRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.isCollapsed&&(t=!1);var n=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),r=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&r}},{key:"getDifference",value:function(t){var n=[];return this.isIntersecting(t)?(this.containsPosition(t.start)&&n.push(new e(this.start,t.start)),this.containsPosition(t.end)&&n.push(new e(t.end,this.end))):n.push(this.clone()),n}},{key:"getIntersection",value:function(t){if(this.isIntersecting(t)){var n=this.start,r=this.end;return this.containsPosition(t.start)&&(n=t.start),this.containsPosition(t.end)&&(r=t.end),new e(n,r)}return null}},{key:"getWalker",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.boundaries=this,new xr(e)}},{key:"getCommonAncestor",value:function(){return this.start.getCommonAncestor(this.end)}},{key:"getContainedElement",value:function(){if(this.isCollapsed)return null;var e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}},{key:"clone",value:function(){return new e(this.start,this.end)}},{key:"getItems",value:o.a.mark((function e(){var t,n,r,i,a,s=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(t=s.length>0&&void 0!==s[0]?s[0]:{}).boundaries=this,t.ignoreElementEnd=!0,n=new xr(t),r=d(n),e.prev=4,r.s();case 6:if((i=r.n()).done){e.next=12;break}return a=i.value,e.next=10,a.item;case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),r.e(e.t0);case 17:return e.prev=17,r.f(),e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[4,14,17,20]])}))},{key:"getPositions",value:o.a.mark((function e(){var t,n,r,i,a,s=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(t=s.length>0&&void 0!==s[0]?s[0]:{}).boundaries=this,n=new xr(t),e.next=5,n.position;case 5:r=d(n),e.prev=6,r.s();case 8:if((i=r.n()).done){e.next=14;break}return a=i.value,e.next=12,a.nextPosition;case 12:e.next=8;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(6),r.e(e.t0);case 19:return e.prev=19,r.f(),e.finish(19);case 22:case"end":return e.stop()}}),e,this,[[6,16,19,22]])}))},{key:"is",value:function(e){return"range"===e||"view:range"===e}},{key:"isIntersecting",value:function(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}},{key:"isCollapsed",get:function(){return this.start.isEqual(this.end)}},{key:"isFlat",get:function(){return this.start.parent===this.end.parent}},{key:"root",get:function(){return this.start.root}}],[{key:"_createFromParentsAndOffsets",value:function(e,t,n,r){return new this(new Dr(e,t),new Dr(n,r))}},{key:"_createFromPositionAndShift",value:function(e,t){var n=e,r=e.getShiftedBy(t);return t>0?new this(n,r):new this(r,n)}},{key:"_createIn",value:function(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}},{key:"_createOn",value:function(e){var t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(Dr._createBefore(e),t)}}]),e}();function Sr(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}function Mr(e){var t,n=0,r=d(e);try{for(r.s();!(t=r.n()).done;){t.value;n++}}catch(e){r.e(e)}finally{r.f()}return n}var Tr=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;m(this,e),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(t,n,r)}return p(e,[{key:"getRanges",value:o.a.mark((function e(){var t,n,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=d(this._ranges),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=n.value,e.next=7,r.clone();case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:"getFirstRange",value:function(){var e,t=null,n=d(this._ranges);try{for(n.s();!(e=n.n()).done;){var r=e.value;t&&!r.start.isBefore(t.start)||(t=r)}}catch(e){n.e(e)}finally{n.f()}return t?t.clone():null}},{key:"getLastRange",value:function(){var e,t=null,n=d(this._ranges);try{for(n.s();!(e=n.n()).done;){var r=e.value;t&&!r.end.isAfter(t.end)||(t=r)}}catch(e){n.e(e)}finally{n.f()}return t?t.clone():null}},{key:"getFirstPosition",value:function(){var e=this.getFirstRange();return e?e.start.clone():null}},{key:"getLastPosition",value:function(){var e=this.getLastRange();return e?e.end.clone():null}},{key:"isEqual",value:function(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;var t,n=d(this._ranges);try{for(n.s();!(t=n.n()).done;){var r,i=t.value,o=!1,a=d(e._ranges);try{for(a.s();!(r=a.n()).done;){var s=r.value;if(i.isEqual(s)){o=!0;break}}}catch(e){a.e(e)}finally{a.f()}if(!o)return!1}}catch(e){n.e(e)}finally{n.f()}return!0}},{key:"isSimilar",value:function(e){if(this.isBackward!=e.isBackward)return!1;var t=Mr(this.getRanges());if(t!=Mr(e.getRanges()))return!1;if(0==t)return!0;var n,r=d(this.getRanges());try{for(r.s();!(n=r.n()).done;){var i=n.value;i=i.getTrimmed();var o,a=!1,s=d(e.getRanges());try{for(s.s();!(o=s.n()).done;){var l=o.value;if(l=l.getTrimmed(),i.start.isEqual(l.start)&&i.end.isEqual(l.end)){a=!0;break}}}catch(e){s.e(e)}finally{s.f()}if(!a)return!1}}catch(e){r.e(e)}finally{r.f()}return!0}},{key:"getSelectedElement",value:function(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}},{key:"setTo",value:function(t,n,r){if(null===t)this._setRanges([]),this._setFakeOptions(n);else if(t instanceof e||t instanceof Ir)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof Er)this._setRanges([t],n&&n.backward),this._setFakeOptions(n);else if(t instanceof Dr)this._setRanges([new Er(t)]),this._setFakeOptions(n);else if(t instanceof kn){var i,o=!!r&&!!r.backward;if(void 0===n)throw new Qt.a("view-selection-setto-required-second-parameter",this);i="in"==n?Er._createIn(t):"on"==n?Er._createOn(t):new Er(Dr._createAt(t,n)),this._setRanges([i],o),this._setFakeOptions(r)}else{if(!sn(t))throw new Qt.a("view-selection-setto-not-selectable",this);this._setRanges(t,n&&n.backward),this._setFakeOptions(n)}this.fire("change")}},{key:"setFocus",value:function(e,t){if(null===this.anchor)throw new Qt.a("view-selection-setfocus-no-ranges",this);var n=Dr._createAt(e,t);if("same"!=n.compareWith(this.focus)){var r=this.anchor;this._ranges.pop(),"before"==n.compareWith(r)?this._addRange(new Er(n,r),!0):this._addRange(new Er(r,n)),this.fire("change")}}},{key:"is",value:function(e){return"selection"===e||"view:selection"===e}},{key:"_setRanges",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=Array.from(e),this._ranges=[];var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;this._addRange(i)}}catch(e){r.e(e)}finally{r.f()}this._lastRangeBackward=!!t}},{key:"_setFakeOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}},{key:"_addRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!(e instanceof Er))throw new Qt.a("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}},{key:"_pushRange",value:function(e){var t,n=d(this._ranges);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(e.isIntersecting(r))throw new Qt.a("view-selection-range-intersects",this,{addedRange:e,intersectingRange:r})}}catch(e){n.e(e)}finally{n.f()}this._ranges.push(new Er(e.start,e.end))}},{key:"isFake",get:function(){return this._isFake}},{key:"fakeSelectionLabel",get:function(){return this._fakeSelectionLabel}},{key:"anchor",get:function(){if(!this._ranges.length)return null;var e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}},{key:"focus",get:function(){if(!this._ranges.length)return null;var e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}},{key:"isCollapsed",get:function(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}},{key:"rangeCount",get:function(){return this._ranges.length}},{key:"isBackward",get:function(){return!this.isCollapsed&&this._lastRangeBackward}},{key:"editableElement",get:function(){return this.anchor?this.anchor.editableElement:null}}]),e}();ln(Tr,Jt);var Ir=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;m(this,e),this._selection=new Tr,this._selection.delegate("change").to(this),this._selection.setTo(t,n,r)}return p(e,[{key:"getRanges",value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this._selection.getRanges(),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:"getFirstRange",value:function(){return this._selection.getFirstRange()}},{key:"getLastRange",value:function(){return this._selection.getLastRange()}},{key:"getFirstPosition",value:function(){return this._selection.getFirstPosition()}},{key:"getLastPosition",value:function(){return this._selection.getLastPosition()}},{key:"getSelectedElement",value:function(){return this._selection.getSelectedElement()}},{key:"isEqual",value:function(e){return this._selection.isEqual(e)}},{key:"isSimilar",value:function(e){return this._selection.isSimilar(e)}},{key:"is",value:function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}},{key:"_setTo",value:function(e,t,n){this._selection.setTo(e,t,n)}},{key:"_setFocus",value:function(e,t){this._selection.setFocus(e,t)}},{key:"isFake",get:function(){return this._selection.isFake}},{key:"fakeSelectionLabel",get:function(){return this._selection.fakeSelectionLabel}},{key:"anchor",get:function(){return this._selection.anchor}},{key:"focus",get:function(){return this._selection.focus}},{key:"isCollapsed",get:function(){return this._selection.isCollapsed}},{key:"rangeCount",get:function(){return this._selection.rangeCount}},{key:"isBackward",get:function(){return this._selection.isBackward}},{key:"editableElement",get:function(){return this._selection.editableElement}},{key:"_ranges",get:function(){return this._selection._ranges}}]),e}();ln(Ir,Jt);var Br=function(){function e(t){m(this,e),this.selection=new Ir,this.roots=new cn({idProperty:"rootName"}),this.stylesProcessor=t,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isComposing",!1),this._postFixers=new Set}return p(e,[{key:"getRoot",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"main";return this.roots.get(e)}},{key:"registerPostFixer",value:function(e){this._postFixers.add(e)}},{key:"destroy",value:function(){this.roots.map((function(e){return e.destroy()})),this.stopListening()}},{key:"_callPostFixers",value:function(e){var t=!1;do{var n,r=d(this._postFixers);try{for(r.s();!(n=r.n()).done;){if(t=(0,n.value)(e))break}}catch(e){r.e(e)}finally{r.f()}}while(t)}}]),e}();ln(Br,vr);var Nr=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).getFillerOffset=Pr,a._priority=10,a._id=null,a._clonesGroup=null,a}return p(n,[{key:"getElementsWithSameId",value:function(){if(null===this.id)throw new Qt.a("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}},{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"isSimilar",value:function(e){return null!==this.id||null!==e.id?this.id===e.id:c(D(n.prototype),"isSimilar",this).call(this,e)&&this.priority==e.priority}},{key:"_clone",value:function(e){var t=c(D(n.prototype),"_clone",this).call(this,e);return t._priority=this._priority,t._id=this._id,t}},{key:"priority",get:function(){return this._priority}},{key:"id",get:function(){return this._id}}]),n}(sr);function Pr(){if(Lr(this))return null;for(var e=this.parent;e&&e.is("attributeElement");){if(Lr(e)>1)return null;e=e.parent}return!e||Lr(e)>1?null:this.childCount}function Lr(e){return Array.from(e.getChildren()).filter((function(e){return!e.is("uiElement")})).length}Nr.DEFAULT_PRIORITY=10;var Or=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).getFillerOffset=zr,a}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"_insertChild",value:function(e,t){if(t&&(t instanceof kn||Array.from(t).length>0))throw new Qt.a("view-emptyelement-cannot-add",[this,t])}}]),n}(sr);function zr(){return null}var jr=navigator.userAgent.toLowerCase(),Rr=function(e){return e.indexOf("macintosh")>-1}(jr),Fr=function(e){return!!e.match(/gecko\/\d+/)}(jr),Vr=function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(jr),Ur=function(e){return e.indexOf("android")>-1}(jr),Hr=(function(e){e.indexOf("chrome/")>-1&&e.indexOf("edge/")}(jr),{isRegExpUnicodePropertySupported:function(){var e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}),Kr={"⌘":"ctrl","⇧":"shift","⌥":"alt"},Wr={ctrl:"⌘",shift:"⇧",alt:"⌥"},Gr=function(){for(var e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448},t=65;t<=90;t++){e[String.fromCharCode(t).toLowerCase()]=t}for(var n=48;n<=57;n++)e[n-48]=n;for(var r=112;r<=123;r++)e["f"+(r-111)]=r;return e}();function qr(e){var t;if("string"==typeof e){if(!(t=Gr[e.toLowerCase()]))throw new Qt.a("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?Gr.alt:0)+(e.ctrlKey?Gr.ctrl:0)+(e.shiftKey?Gr.shift:0);return t}function Yr(e){return"string"==typeof e&&(e=Xr(e)),e.map((function(e){return"string"==typeof e?qr(e):e})).reduce((function(e,t){return t+e}),0)}function Qr(e){return Rr?Xr(e).map((function(e){return Wr[e.toLowerCase()]||e})).reduce((function(e,t){return e.slice(-1)in Kr?e+t:e+"+"+t})):e}function $r(e){return e==Gr.arrowright||e==Gr.arrowleft||e==Gr.arrowup||e==Gr.arrowdown}function Zr(e,t){var n="ltr"===t;switch(e){case Gr.arrowleft:return n?"left":"right";case Gr.arrowright:return n?"right":"left";case Gr.arrowup:return"up";case Gr.arrowdown:return"down"}}function Jr(e,t){var n=Zr(e,t);return"down"===n||"right"===n}function Xr(e){return e.split(/\s*\+\s*/)}var ei=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).getFillerOffset=ti,a}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"_insertChild",value:function(e,t){if(t&&(t instanceof kn||Array.from(t).length>0))throw new Qt.a("view-uielement-cannot-add",this)}},{key:"render",value:function(e){return this.toDomElement(e)}},{key:"toDomElement",value:function(e){var t,n=e.createElement(this.name),r=d(this.getAttributeKeys());try{for(r.s();!(t=r.n()).done;){var i=t.value;n.setAttribute(i,this.getAttribute(i))}}catch(e){r.e(e)}finally{r.f()}return n}}]),n}(sr);function ti(){return null}var ni=function(e){k(n,e);var t=b(n);function n(e,r,i,o){var a;return m(this,n),(a=t.call(this,e,r,i,o)).getFillerOffset=ri,a}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},{key:"_insertChild",value:function(e,t){if(t&&(t instanceof kn||Array.from(t).length>0))throw new Qt.a("view-rawelement-cannot-add",[this,t])}}]),n}(sr);function ri(){return null}var ii=function(){function e(t,n){m(this,e),this.document=t,this._children=[],n&&this._insertChild(0,n)}return p(e,[{key:Symbol.iterator,value:function(){return this._children[Symbol.iterator]()}},{key:"is",value:function(e){return"documentFragment"===e||"view:documentFragment"===e}},{key:"_appendChild",value:function(e){return this._insertChild(this.childCount,e)}},{key:"getChild",value:function(e){return this._children[e]}},{key:"getChildIndex",value:function(e){return this._children.indexOf(e)}},{key:"getChildren",value:function(){return this._children[Symbol.iterator]()}},{key:"_insertChild",value:function(e,t){this._fireChange("children",this);var n,r=0,i=d(function(e,t){return"string"==typeof t?[new bn(e,t)]:(sn(t)||(t=[t]),Array.from(t).map((function(t){return"string"==typeof t?new bn(e,t):t instanceof yn?new bn(e,t.data):t})))}(this.document,t));try{for(i.s();!(n=i.n()).done;){var o=n.value;null!==o.parent&&o._remove(),o.parent=this,this._children.splice(e,0,o),e++,r++}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"_removeChildren",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this._fireChange("children",this);for(var n=e;n2&&void 0!==arguments[2]?arguments[2]:{},r=new Nr(this.document,e,t);return n.priority&&(r._priority=n.priority),n.id&&(r._id=n.id),r}},{key:"createContainerElement",value:function(e,t){return new cr(this.document,e,t)}},{key:"createEditableElement",value:function(e,t){var n=new Cr(this.document,e,t);return n._document=this.document,n}},{key:"createEmptyElement",value:function(e,t){return new Or(this.document,e,t)}},{key:"createUIElement",value:function(e,t,n){var r=new ei(this.document,e,t);return n&&(r.render=n),r}},{key:"createRawElement",value:function(e,t,n){var r=new ni(this.document,e,t);return r.render=n||function(){},r}},{key:"setAttribute",value:function(e,t,n){n._setAttribute(e,t)}},{key:"removeAttribute",value:function(e,t){t._removeAttribute(e)}},{key:"addClass",value:function(e,t){t._addClass(e)}},{key:"removeClass",value:function(e,t){t._removeClass(e)}},{key:"setStyle",value:function(e,t,n){R(e)&&void 0===n&&(n=t),n._setStyle(e,t)}},{key:"removeStyle",value:function(e,t){t._removeStyle(e)}},{key:"setCustomProperty",value:function(e,t,n){n._setCustomProperty(e,t)}},{key:"removeCustomProperty",value:function(e,t){return t._removeCustomProperty(e)}},{key:"breakAttributes",value:function(e){return e instanceof Dr?this._breakAttributes(e):this._breakAttributesRange(e)}},{key:"breakContainer",value:function(e){var t=e.parent;if(!t.is("containerElement"))throw new Qt.a("view-writer-break-non-container-element",this.document);if(!t.parent)throw new Qt.a("view-writer-break-root",this.document);if(e.isAtStart)return Dr._createBefore(t);if(!e.isAtEnd){var n=t._clone(!1);this.insert(Dr._createAfter(t),n);var r=new Er(e,Dr._createAt(t,"end")),i=new Dr(n,0);this.move(r,i)}return Dr._createAfter(t)}},{key:"mergeAttributes",value:function(e){var t=e.offset,n=e.parent;if(n.is("$text"))return e;if(n.is("attributeElement")&&0===n.childCount){var r=n.parent,i=n.index;return n._remove(),this._removeFromClonedElementsGroup(n),this.mergeAttributes(new Dr(r,i))}var o=n.getChild(t-1),a=n.getChild(t);if(!o||!a)return e;if(o.is("$text")&&a.is("$text"))return ui(o,a);if(o.is("attributeElement")&&a.is("attributeElement")&&o.isSimilar(a)){var s=o.childCount;return o._appendChild(a.getChildren()),a._remove(),this._removeFromClonedElementsGroup(a),this.mergeAttributes(new Dr(o,s))}return e}},{key:"mergeContainers",value:function(e){var t=e.nodeBefore,n=e.nodeAfter;if(!(t&&n&&t.is("containerElement")&&n.is("containerElement")))throw new Qt.a("view-writer-merge-containers-invalid-position",this.document);var r=t.getChild(t.childCount-1),i=r instanceof bn?Dr._createAt(r,"end"):Dr._createAt(t,"end");return this.move(Er._createIn(n),Dr._createAt(t,"end")),this.remove(Er._createOn(n)),i}},{key:"insert",value:function(e,t){!function e(t,n){var r,i=d(t);try{var o=function(){var t=r.value;if(!di.some((function(e){return t instanceof e})))throw new Qt.a("view-writer-insert-invalid-node-type",n);t.is("$text")||e(t.getChildren(),n)};for(i.s();!(r=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}}(t=sn(t)?h(t):[t],this.document);var n=ai(e);if(!n)throw new Qt.a("view-writer-invalid-position-container",this.document);var r,i=this._breakAttributes(e,!0),o=n._insertChild(i.offset,t),a=d(t);try{for(a.s();!(r=a.n()).done;){var s=r.value;this._addToClonedElementsGroup(s)}}catch(e){a.e(e)}finally{a.f()}var l=i.getShiftedBy(o),c=this.mergeAttributes(i);if(0===o)return new Er(c,c);c.isEqual(i)||l.offset--;var u=this.mergeAttributes(l);return new Er(c,u)}},{key:"remove",value:function(e){var t=e instanceof Er?e:Er._createOn(e);if(fi(t,this.document),t.isCollapsed)return new ii(this.document);var n,r=this._breakAttributesRange(t,!0),i=r.start,o=r.end,a=i.parent,s=o.offset-i.offset,l=a._removeChildren(i.offset,s),c=d(l);try{for(c.s();!(n=c.n()).done;){var u=n.value;this._removeFromClonedElementsGroup(u)}}catch(e){c.e(e)}finally{c.f()}var h=this.mergeAttributes(i);return t.start=h,t.end=h.clone(),new ii(this.document,l)}},{key:"clear",value:function(e,t){fi(e,this.document);var n,r=d(e.getWalker({direction:"backward",ignoreElementEnd:!0}));try{for(r.s();!(n=r.n()).done;){var i=n.value,o=i.item,a=void 0;if(o.is("element")&&t.isSimilar(o))a=Er._createOn(o);else if(!i.nextPosition.isAfter(e.start)&&o.is("$textProxy")){var s=o.getAncestors().find((function(e){return e.is("element")&&t.isSimilar(e)}));s&&(a=Er._createIn(s))}a&&(a.end.isAfter(e.end)&&(a.end=e.end),a.start.isBefore(e.start)&&(a.start=e.start),this.remove(a))}}catch(e){r.e(e)}finally{r.f()}}},{key:"move",value:function(e,t){var n;if(t.isAfter(e.end)){var r=(t=this._breakAttributes(t,!0)).parent,i=r.childCount;e=this._breakAttributesRange(e,!0),n=this.remove(e),t.offset+=r.childCount-i}else n=this.remove(e);return this.insert(t,n)}},{key:"wrap",value:function(e,t){if(!(t instanceof Nr))throw new Qt.a("view-writer-wrap-invalid-attribute",this.document);if(fi(e,this.document),e.isCollapsed){var n=e.start;n.parent.is("element")&&(i=n.parent,!Array.from(i.getChildren()).some((function(e){return!e.is("uiElement")})))&&(n=n.getLastMatchingPosition((function(e){return e.item.is("uiElement")}))),n=this._wrapPosition(n,t);var r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(n),new Er(n)}return this._wrapRange(e,t);var i}},{key:"unwrap",value:function(e,t){if(!(t instanceof Nr))throw new Qt.a("view-writer-unwrap-invalid-attribute",this.document);if(fi(e,this.document),e.isCollapsed)return e;var n=this._breakAttributesRange(e,!0),r=n.start,i=n.end,o=r.parent,a=this._unwrapChildren(o,r.offset,i.offset,t),s=this.mergeAttributes(a.start);s.isEqual(a.start)||a.end.offset--;var l=this.mergeAttributes(a.end);return new Er(s,l)}},{key:"rename",value:function(e,t){var n=new cr(this.document,e,t.getAttributes());return this.insert(Dr._createAfter(t),n),this.move(Er._createIn(t),Dr._createAt(n,0)),this.remove(Er._createOn(t)),n}},{key:"clearClonedElementsGroup",value:function(e){this._cloneGroups.delete(e)}},{key:"createPositionAt",value:function(e,t){return Dr._createAt(e,t)}},{key:"createPositionAfter",value:function(e){return Dr._createAfter(e)}},{key:"createPositionBefore",value:function(e){return Dr._createBefore(e)}},{key:"createRange",value:function(e,t){return new Er(e,t)}},{key:"createRangeOn",value:function(e){return Er._createOn(e)}},{key:"createRangeIn",value:function(e){return Er._createIn(e)}},{key:"createSelection",value:function(e,t,n){return new Tr(e,t,n)}},{key:"_wrapChildren",value:function(e,t,n,r){for(var i=t,o=[];i1&&void 0!==arguments[1]&&arguments[1],n=e.start,r=e.end;if(fi(e,this.document),e.isCollapsed){var i=this._breakAttributes(e.start,t);return new Er(i,i)}var o=this._breakAttributes(r,t),a=o.parent.childCount,s=this._breakAttributes(n,t);return o.offset+=o.parent.childCount-a,new Er(s,o)}},{key:"_breakAttributes",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.offset,r=e.parent;if(e.parent.is("emptyElement"))throw new Qt.a("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new Qt.a("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new Qt.a("view-writer-cannot-break-raw-element",this.document);if(!t&&r.is("$text")&&hi(r.parent))return e.clone();if(hi(r))return e.clone();if(r.is("$text"))return this._breakAttributes(ci(e),t);if(n==r.childCount){var i=new Dr(r.parent,r.index+1);return this._breakAttributes(i,t)}if(0===n){var o=new Dr(r.parent,r.index);return this._breakAttributes(o,t)}var a=r.index+1,s=r._clone();r.parent._insertChild(a,s),this._addToClonedElementsGroup(s);var l=r.childCount-n,c=r._removeChildren(n,l);s._appendChild(c);var u=new Dr(r.parent,a);return this._breakAttributes(u,t)}},{key:"_addToClonedElementsGroup",value:function(e){if(e.root.is("rootElement")){if(e.is("element")){var t,n=d(e.getChildren());try{for(n.s();!(t=n.n()).done;){var r=t.value;this._addToClonedElementsGroup(r)}}catch(e){n.e(e)}finally{n.f()}}var i=e.id;if(i){var o=this._cloneGroups.get(i);o||(o=new Set,this._cloneGroups.set(i,o)),o.add(e),e._clonesGroup=o}}}},{key:"_removeFromClonedElementsGroup",value:function(e){if(e.is("element")){var t,n=d(e.getChildren());try{for(n.s();!(t=n.n()).done;){var r=t.value;this._removeFromClonedElementsGroup(r)}}catch(e){n.e(e)}finally{n.f()}}var i=e.id;if(i){var o=this._cloneGroups.get(i);o&&o.delete(e)}}}]),e}();function ai(e){for(var t=e.parent;!hi(t);){if(!t)return;t=t.parent}return t}function si(e,t){return e.priorityt.priority)&&e.getIdentity()3&&void 0!==arguments[3]&&arguments[3];n=n||function(e,t){return e===t},Array.isArray(e)||(e=Array.prototype.slice.call(e)),Array.isArray(t)||(t=Array.prototype.slice.call(t));var i=function(e,t,n){var r=_i(e,t,n);if(-1===r)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};var i=_i(xi(e,r),xi(t,r),n);return{firstIndex:r,lastIndexOld:e.length-i,lastIndexNew:t.length-i}}(e,t,n);return r?function(e,t){var n=e.firstIndex,r=e.lastIndexOld,i=e.lastIndexNew;if(-1===n)return Array(t).fill("equal");var o=[];return n>0&&(o=o.concat(Array(n).fill("equal"))),i-n>0&&(o=o.concat(Array(i-n).fill("insert"))),r-n>0&&(o=o.concat(Array(r-n).fill("delete"))),i0&&n.push({index:r,type:"insert",values:e.slice(r,o)}),i-r>0&&n.push({index:r+(o-r),type:"delete",howMany:i-r}),n}(t,i)}function _i(e,t,n){for(var r=0;r200||a>200||o+a>300)return Di.fastDiff(e,t,n,!0);if(as?-1:1;d[o+u]&&(d[o]=d[o+u].slice(0)),d[o]||(d[o]=[]),d[o].push(a>s?r:i);for(var f=Math.max(a,s),g=f-o;gu;g--)h[g]=f(g);h[u]=f(u),m++}while(h[u]!==c);return d[u].slice(1)}function Ei(e,t,n){e.insertBefore(n,e.childNodes[t]||null)}function Si(e){var t=e.parentNode;t&&t.removeChild(e)}function Mi(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}Di.fastDiff=Ai;var Ti=function(){function e(t,n){m(this,e),this.domDocuments=new Set,this.domConverter=t,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=n,this.isFocused=!1,this._inlineFiller=null,this._fakeSelectionContainer=null}return p(e,[{key:"markToSync",value:function(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new Qt.a("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}},{key:"render",value:function(){var e,t,n=d(this.markedChildren);try{for(n.s();!(t=n.n()).done;){var r=t.value;this._updateChildrenMappings(r)}}catch(e){n.e(e)}finally{n.f()}this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent));var i,o=d(this.markedAttributes);try{for(o.s();!(i=o.n()).done;){var a=i.value;this._updateAttrs(a)}}catch(e){o.e(e)}finally{o.f()}var s,l=d(this.markedChildren);try{for(l.s();!(s=l.n()).done;){var c=s.value;this._updateChildren(c,{inlineFillerPosition:e})}}catch(e){l.e(e)}finally{l.f()}var u,h=d(this.markedTexts);try{for(h.s();!(u=h.n()).done;){var f=u.value;!this.markedChildren.has(f.parent)&&this.domConverter.mapViewToDom(f.parent)&&this._updateText(f,{inlineFillerPosition:e})}}catch(e){h.e(e)}finally{h.f()}if(e){var g=this.domConverter.viewPositionToDom(e),m=g.parent.ownerDocument;bi(g.parent)?this._inlineFiller=g.parent:this._inlineFiller=Ii(m,g.parent,g.offset)}else this._inlineFiller=null;this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}},{key:"_updateChildrenMappings",value:function(e){var t=this.domConverter.mapViewToDom(e);if(t){var n=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,t.ownerDocument,{withChildren:!1})),i=this._diffNodeLists(n,r),o=this._findReplaceActions(i,n,r);if(-1!==o.indexOf("replace")){var a,s={equal:0,insert:0,delete:0},l=d(o);try{for(l.s();!(a=l.n()).done;){var c=a.value;if("replace"===c){var u=s.equal+s.insert,h=s.equal+s.delete,f=e.getChild(u);!f||f.is("uiElement")||f.is("rawElement")||this._updateElementMappings(f,n[h]),Si(r[u]),s.equal++}else s[c]++}}catch(e){l.e(e)}finally{l.f()}}}}},{key:"_updateElementMappings",value:function(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}},{key:"_getInlineFillerPosition",value:function(){var e=this.selection.getFirstPosition();return e.parent.is("$text")?Dr._createBefore(this.selection.getFirstPosition().parent):e}},{key:"_isSelectionInInlineFiller",value:function(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;var e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&mi(t.parent)&&bi(t.parent))}},{key:"_removeInlineFiller",value:function(){var e=this._inlineFiller;if(!bi(e))throw new Qt.a("view-renderer-filler-was-lost",this);yi(e)?e.parentNode.removeChild(e):e.data=e.data.substr(7),this._inlineFiller=null}},{key:"_needsInlineFillerAtSelection",value:function(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;var e=this.selection.getFirstPosition(),t=e.parent,n=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;var t=e.findAncestor((function(e){return e.hasAttribute("contenteditable")}));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(n===t.getFillerOffset())return!1;var r=e.nodeBefore,i=e.nodeAfter;return!(r instanceof bn||i instanceof bn)}},{key:"_updateText",value:function(e,t){var n=this.domConverter.findCorrespondingDomText(e),r=this.domConverter.viewToDom(e,n.ownerDocument),i=n.data,o=r.data,a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(o=ki+o),i!=o){var s,l=d(Ai(i,o));try{for(l.s();!(s=l.n()).done;){var c=s.value;"insert"===c.type?n.insertData(c.index,c.values.join("")):n.deleteData(c.index,c.howMany)}}catch(e){l.e(e)}finally{l.f()}}}},{key:"_updateAttrs",value:function(e){var t=this.domConverter.mapViewToDom(e);if(t){var n,r=Array.from(t.attributes).map((function(e){return e.name})),i=d(e.getAttributeKeys());try{for(i.s();!(n=i.n()).done;){var o=n.value;t.setAttribute(o,e.getAttribute(o))}}catch(e){i.e(e)}finally{i.f()}var a,s=d(r);try{for(s.s();!(a=s.n()).done;){var l=a.value;e.hasAttribute(l)||t.removeAttribute(l)}}catch(e){s.e(e)}finally{s.f()}}}},{key:"_updateChildren",value:function(e,t){var n=this.domConverter.mapViewToDom(e);if(n){var r=t.inlineFillerPosition,i=this.domConverter.mapViewToDom(e).childNodes,o=Array.from(this.domConverter.viewChildrenToDom(e,n.ownerDocument,{bind:!0,inlineFillerPosition:r}));r&&r.parent===e&&Ii(n.ownerDocument,o,r.offset);var a,s=this._diffNodeLists(i,o),l=0,c=new Set,u=d(s);try{for(u.s();!(a=u.n()).done;){var h=a.value;"delete"===h?(c.add(i[l]),Si(i[l])):"equal"===h&&l++}}catch(e){u.e(e)}finally{u.f()}l=0;var f,g=d(s);try{for(g.s();!(f=g.n()).done;){var m=f.value;"insert"===m?(Ei(n,l,o[l]),l++):"equal"===m&&(this._markDescendantTextToSync(this.domConverter.domToView(o[l])),l++)}}catch(e){g.e(e)}finally{g.f()}var v,p=d(c);try{for(p.s();!(v=p.n()).done;){var k=v.value;k.parentNode||this.domConverter.unbindDomElement(k)}}catch(e){p.e(e)}finally{p.f()}}}},{key:"_diffNodeLists",value:function(e,t){return Di(e=function(e,t){var n=Array.from(e);return 0!=n.length&&t?(n[n.length-1]==t&&n.pop(),n):n}(e,this._fakeSelectionContainer),t,Ni.bind(null,this.domConverter))}},{key:"_findReplaceActions",value:function(e,t,n){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;var r,i=[],o=[],a=[],s={equal:0,insert:0,delete:0},l=d(e);try{for(l.s();!(r=l.n()).done;){var c=r.value;"insert"===c?a.push(n[s.equal+s.insert]):"delete"===c?o.push(t[s.equal+s.delete]):((i=i.concat(Di(o,a,Bi).map((function(e){return"equal"===e?"replace":e})))).push("equal"),o=[],a=[]),s[c]++}}catch(e){l.e(e)}finally{l.f()}return i.concat(Di(o,a,Bi).map((function(e){return"equal"===e?"replace":e})))}},{key:"_markDescendantTextToSync",value:function(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element")){var t,n=d(e.getChildren());try{for(n.s();!(t=n.n()).done;){var r=t.value;this._markDescendantTextToSync(r)}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_updateSelection",value:function(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();var e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}},{key:"_updateFakeSelection",value:function(e){var t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){var t=e.createElement("div");return Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));var n=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(n,this.selection),this._fakeSelectionNeedsUpdate(e)){n.parentElement&&n.parentElement==e||e.appendChild(n),n.textContent=this.selection.fakeSelectionLabel||" ";var r=t.getSelection(),i=t.createRange();r.removeAllRanges(),i.selectNodeContents(n),r.addRange(i)}}},{key:"_updateDomSelection",value:function(e){var t=e.ownerDocument.defaultView.getSelection();if(this._domSelectionNeedsUpdate(t)){var n=this.domConverter.viewPositionToDom(this.selection.anchor),r=this.domConverter.viewPositionToDom(this.selection.focus);e.focus(),t.collapse(n.parent,n.offset),t.extend(r.parent,r.offset),Fr&&function(e,t){var n=e.parent;if(n.nodeType==Node.ELEMENT_NODE&&e.offset==n.childNodes.length-1){var r=n.childNodes[e.offset];r&&"BR"==r.tagName&&t.addRange(t.getRangeAt(0))}}(r,t)}}},{key:"_domSelectionNeedsUpdate",value:function(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;var t=e&&this.domConverter.domSelectionToView(e);return!(t&&this.selection.isEqual(t)||!this.selection.isCollapsed&&this.selection.isSimilar(t))}},{key:"_fakeSelectionNeedsUpdate",value:function(e){var t=this._fakeSelectionContainer,n=e.ownerDocument.getSelection();return!t||t.parentElement!==e||n.anchorNode!==t&&!t.contains(n.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel}},{key:"_removeDomSelection",value:function(){var e,t=d(this.domDocuments);try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.getSelection().rangeCount){var r=n.activeElement,i=this.domConverter.mapDomToView(r);r&&i&&n.getSelection().removeAllRanges()}}}catch(e){t.e(e)}finally{t.f()}}},{key:"_removeFakeSelection",value:function(){var e=this._fakeSelectionContainer;e&&e.remove()}},{key:"_updateFocus",value:function(){if(this.isFocused){var e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}]),e}();function Ii(e,t,n){var r=t instanceof Array?t:t.childNodes,i=r[n];if(mi(i))return i.data=ki+i.data,i;var o=e.createTextNode(ki);return Array.isArray(t)?r.splice(n,0,o):Ei(t,n,o),o}function Bi(e,t){return Mi(e)&&Mi(t)&&!mi(e)&&!mi(t)&&e.nodeType!==Node.COMMENT_NODE&&t.nodeType!==Node.COMMENT_NODE&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function Ni(e,t,n){return t===n||(mi(t)&&mi(n)?t.data===n.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(n)))}ln(Ti,vr);var Pi={window:window,document:document};function Li(e){for(var t=0;e.previousSibling;)e=e.previousSibling,t++;return t}function Oi(e){for(var t=[];e&&e.nodeType!=Node.DOCUMENT_NODE;)t.unshift(e),e=e.parentNode;return t}var zi=pi(document),ji=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};m(this,e),this.document=t,this.blockFillerMode=n.blockFillerMode||"br",this.preElements=["pre"],this.blockElements=["p","div","h1","h2","h3","h4","h5","h6","li","dd","dt","figcaption","td","th"],this._blockFiller="br"==this.blockFillerMode?pi:vi,this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}return p(e,[{key:"bindFakeSelection",value:function(e,t){this._fakeSelectionMapping.set(e,new Tr(t))}},{key:"fakeSelectionToView",value:function(e){return this._fakeSelectionMapping.get(e)}},{key:"bindElements",value:function(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}},{key:"unbindDomElement",value:function(e){var t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);var n,r=d(e.childNodes);try{for(r.s();!(n=r.n()).done;){var i=n.value;this.unbindDomElement(i)}}catch(e){r.e(e)}finally{r.f()}}}},{key:"bindDocumentFragments",value:function(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}},{key:"viewToDom",value:function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e.is("$text")){var i=this._processDataFromViewText(e);return t.createTextNode(i)}if(this.mapViewToDom(e))return this.mapViewToDom(e);if(e.is("documentFragment"))n=t.createDocumentFragment(),r.bind&&this.bindDocumentFragments(n,e);else{if(e.is("uiElement"))return n=e.render(t),r.bind&&this.bindElements(n,e),n;n=e.hasAttribute("xmlns")?t.createElementNS(e.getAttribute("xmlns"),e.name):t.createElement(e.name),e.is("rawElement")&&e.render(n),r.bind&&this.bindElements(n,e);var o,a=d(e.getAttributeKeys());try{for(a.s();!(o=a.n()).done;){var s=o.value;n.setAttribute(s,e.getAttribute(s))}}catch(e){a.e(e)}finally{a.f()}}if(r.withChildren||void 0===r.withChildren){var l,c=d(this.viewChildrenToDom(e,t,r));try{for(c.s();!(l=c.n()).done;){var u=l.value;n.appendChild(u)}}catch(e){c.e(e)}finally{c.f()}}return n}},{key:"viewChildrenToDom",value:o.a.mark((function e(t,n){var r,i,a,s,l,c,u=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=u.length>2&&void 0!==u[2]?u[2]:{},i=t.getFillerOffset&&t.getFillerOffset(),a=0,s=d(t.getChildren()),e.prev=4,s.s();case 6:if((l=s.n()).done){e.next=17;break}if(c=l.value,e.t0=i===a,!e.t0){e.next=12;break}return e.next=12,this._blockFiller(n);case 12:return e.next=14,this.viewToDom(c,n,r);case 14:a++;case 15:e.next=6;break;case 17:e.next=22;break;case 19:e.prev=19,e.t1=e.catch(4),s.e(e.t1);case 22:return e.prev=22,s.f(),e.finish(22);case 25:if(e.t2=i===a,!e.t2){e.next=29;break}return e.next=29,this._blockFiller(n);case 29:case"end":return e.stop()}}),e,this,[[4,19,22,25]])}))},{key:"viewRangeToDom",value:function(e){var t=this.viewPositionToDom(e.start),n=this.viewPositionToDom(e.end),r=document.createRange();return r.setStart(t.parent,t.offset),r.setEnd(n.parent,n.offset),r}},{key:"viewPositionToDom",value:function(e){var t,n,r,i=e.parent;if(i.is("$text")){var o=this.findCorrespondingDomText(i);if(!o)return null;var a=e.offset;return bi(o)&&(a+=7),{parent:o,offset:a}}if(0===e.offset){if(!(t=this.mapViewToDom(i)))return null;r=t.childNodes[0]}else{var s=e.nodeBefore;if(!(n=s.is("$text")?this.findCorrespondingDomText(s):this.mapViewToDom(e.nodeBefore)))return null;t=n.parentNode,r=n.nextSibling}return mi(r)&&bi(r)?{parent:r,offset:7}:{parent:t,offset:n?Li(n)+1:0}}},{key:"domToView",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.isBlockFiller(e,this.blockFillerMode))return null;var n,r=this.getHostViewElement(e,this._domToViewMapping);if(r)return r;if(mi(e)){if(yi(e))return null;var i=this._processDataFromDomText(e);return""===i?null:new bn(this.document,i)}if(this.isComment(e))return null;if(this.mapDomToView(e))return this.mapDomToView(e);if(this.isDocumentFragment(e))n=new ii(this.document),t.bind&&this.bindDocumentFragments(e,n);else{var o=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();n=new sr(this.document,o),t.bind&&this.bindElements(e,n);for(var a=e.attributes,s=a.length-1;s>=0;s--)n._setAttribute(a[s].name,a[s].value)}if(t.withChildren||void 0===t.withChildren){var l,c=d(this.domChildrenToView(e,t));try{for(c.s();!(l=c.n()).done;){var u=l.value;n._appendChild(u)}}catch(e){c.e(e)}finally{c.f()}}return n}},{key:"domChildrenToView",value:o.a.mark((function e(t){var n,r,i,a,s=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=s.length>1&&void 0!==s[1]?s[1]:{},r=0;case 2:if(!(r1?n-1:0),i=1;i2&&void 0!==arguments[2]?arguments[2]:{};if(!this._domListeners||!this._domListeners[e]){var r={capture:!!n.useCapture,passive:!!n.usePassive},i=this._createDomListener(e,r);this._domNode.addEventListener(e,i,r),this._domListeners||(this._domListeners={}),this._domListeners[e]=i}},detach:function(e){var t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()},_createDomListener:function(e,t){var n=this,r=function(t){n.fire(e,t)};return r.removeListener=function(){n._domNode.removeEventListener(e,r,t),delete n._domListeners[e]},r}});var Gi=function(){function e(t){m(this,e),this.view=t,this.document=t.document,this.isEnabled=!1}return p(e,[{key:"enable",value:function(){this.isEnabled=!0}},{key:"disable",value:function(){this.isEnabled=!1}},{key:"destroy",value:function(){this.disable(),this.stopListening()}},{key:"checkShouldIgnoreEventFromTarget",value:function(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}]),e}();ln(Gi,Hi);function qi(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new ge;++ts))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var u=-1,d=!0,h=2&n?new Yi:void 0;for(o.set(e,t),o.set(t,e);++u=t||n<0||d&&e-c>=o}function v(){var e=mo();if(m(e))return p(e);s=setTimeout(v,function(e){var n=t-(e-l);return d?Ao(n,o-(e-c)):n}(e))}function p(e){return s=void 0,h&&r?f(e):(r=i=void 0,a)}function k(){var e=mo(),n=m(e);if(r=arguments,i=this,l=e,n){if(void 0===s)return g(l);if(d)return clearTimeout(s),s=setTimeout(v,t),f(l)}return void 0===s&&(s=setTimeout(v,t)),a}return t=wo(t)||0,G(n)&&(u=!!n.leading,o=(d="maxWait"in n)?Co(wo(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h),k.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=i=s=void 0},k.flush=function(){return void 0===s?a:p(mo())},k},xo=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._fireSelectionChangeDoneDebounced=_o((function(e){return r.document.fire("selectionChangeDone",e)}),200),r}return p(n,[{key:"observe",value:function(){var e=this,t=this.document;t.on("keydown",(function(n,r){t.selection.isFake&&$r(r.keyCode)&&e.isEnabled&&(r.preventDefault(),e._handleSelectionMove(r.keyCode))}),{priority:"lowest"})}},{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this),this._fireSelectionChangeDoneDebounced.cancel()}},{key:"_handleSelectionMove",value:function(e){var t=this.document.selection,n=new Tr(t.getRanges(),{backward:t.isBackward,fake:!1});e!=Gr.arrowleft&&e!=Gr.arrowup||n.setTo(n.getFirstPosition()),e!=Gr.arrowright&&e!=Gr.arrowdown||n.setTo(n.getLastPosition());var r={oldSelection:t,newSelection:n,domSelection:null};this.document.fire("selectionChange",r),this._fireSelectionChangeDoneDebounced(r)}}]),n}(Gi),Do=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).mutationObserver=e.getObserver(uo),r.selection=r.document.selection,r.domConverter=e.domConverter,r._documents=new WeakSet,r._fireSelectionChangeDoneDebounced=_o((function(e){return r.document.fire("selectionChangeDone",e)}),200),r._clearInfiniteLoopInterval=setInterval((function(){return r._clearInfiniteLoop()}),1e3),r._loopbackCounter=0,r}return p(n,[{key:"observe",value:function(e){var t=this,n=e.ownerDocument;this._documents.has(n)||(this.listenTo(n,"selectionchange",(function(e,r){t._handleSelectionChange(r,n)})),this._documents.add(n))}},{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}},{key:"_handleSelectionChange",value:function(e,t){if(this.isEnabled){var n=t.defaultView.getSelection();if(!this.checkShouldIgnoreEventFromTarget(n.anchorNode)){this.mutationObserver.flush();var r=this.domConverter.domSelectionToView(n);if(0!=r.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(r)&&this.domConverter.isDomSelectionCorrect(n)||++this._loopbackCounter>60))if(this.selection.isSimilar(r))this.view.forceRender();else{var i={oldSelection:this.selection,newSelection:r,domSelection:n};this.document.fire("selectionChange",i),this._fireSelectionChangeDoneDebounced(i)}}else this.view.hasDomSelection=!1}}}},{key:"_clearInfiniteLoop",value:function(){this._loopbackCounter=0}}]),n}(Gi),Eo=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).domEventType=["focus","blur"],r.useCapture=!0;var i=r.document;return i.on("focus",(function(){i.isFocused=!0,r._renderTimeoutId=setTimeout((function(){return e.forceRender()}),50)})),i.on("blur",(function(t,n){var r=i.selection.editableElement;null!==r&&r!==n.target||(i.isFocused=!1,e.forceRender())})),r}return p(n,[{key:"onDomEvent",value:function(e){this.fire(e.type,e)}},{key:"destroy",value:function(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),c(D(n.prototype),"destroy",this).call(this)}}]),n}(fo),So=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).domEventType=["compositionstart","compositionupdate","compositionend"];var i=r.document;return i.on("compositionstart",(function(){i.isComposing=!0})),i.on("compositionend",(function(){i.isComposing=!1})),r}return p(n,[{key:"onDomEvent",value:function(e){this.fire(e.type,e)}}]),n}(fo),Mo=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).domEventType=["beforeinput"],r}return p(n,[{key:"onDomEvent",value:function(e){this.fire(e.type,e)}}]),n}(fo);function To(e){return"[object Range]"==Object.prototype.toString.apply(e)}function Io(e){var t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}var Bo=["top","right","bottom","left","width","height"],No=function(){function e(t){m(this,e);var n=To(t);if(Object.defineProperty(this,"_source",{value:t._source||t,writable:!0,enumerable:!1}),Vt(t)||n)if(n){var r=e.getDomRangeRects(t);Po(this,e.getBoundingRect(r))}else Po(this,t.getBoundingClientRect());else if(Ui(t)){var i=t.innerWidth,o=t.innerHeight;Po(this,{top:0,right:i,bottom:o,left:0,width:i,height:o})}else Po(this,t)}return p(e,[{key:"clone",value:function(){return new e(this)}},{key:"moveTo",value:function(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}},{key:"moveBy",value:function(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}},{key:"getIntersection",value:function(t){var n={top:Math.max(this.top,t.top),right:Math.min(this.right,t.right),bottom:Math.min(this.bottom,t.bottom),left:Math.max(this.left,t.left)};return n.width=n.right-n.left,n.height=n.bottom-n.top,n.width<0||n.height<0?null:new e(n)}},{key:"getIntersectionArea",value:function(e){var t=this.getIntersection(e);return t?t.getArea():0}},{key:"getArea",value:function(){return this.width*this.height}},{key:"getVisible",value:function(){var t=this._source,n=this.clone();if(!Lo(t))for(var r=t.parentNode||t.commonAncestorContainer;r&&!Lo(r);){var i=new e(r),o=n.getIntersection(i);if(!o)return null;o.getArea()t.bottom}function Fo(e,t){return e.topt.right}function Ho(e){return To(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function Ko(e){if(To(e)){var t=e.commonAncestorContainer;return mi(t)&&(t=t.parentNode),t}return e.parentNode}function Wo(e,t){var n=Ho(e),r=new No(e);if(n===t)return r;for(var i=n;i!=t;){var o=i.frameElement,a=new No(o).excludeScrollbarsAndBorders();r.moveBy(a.left,a.top),i=i.parent}return r}Object.assign({},{scrollViewportToShowTarget:Oo,scrollAncestorsToShowTarget:function(e){jo(Ko(e),(function(){return new No(e)}))}});var Go=function(){function e(t){var n=this;m(this,e),this.document=new Br(t),this.domConverter=new ji(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Ti(this.domConverter,this.document.selection),this._renderer.bind("isFocused").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new oi(this.document),this.addObserver(uo),this.addObserver(Do),this.addObserver(Eo),this.addObserver(go),this.addObserver(xo),this.addObserver(So),Ur&&this.addObserver(Mo),this.document.on("keydown",Ci),function(e){e.document.on("keydown",(function(t,n){return function(e,t,n){if(t.keyCode==Gr.arrowright){var r=t.domTarget.ownerDocument.defaultView.getSelection(),i=1==r.rangeCount&&r.getRangeAt(0).collapsed;if(i||t.shiftKey){var o=r.focusNode,a=r.focusOffset,s=n.domPositionToView(o,a);if(null===s)return;var l=!1,c=s.getLastMatchingPosition((function(e){return e.item.is("uiElement")&&(l=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement"))}));if(l){var u=n.viewPositionToDom(c);i?r.collapse(u.parent,u.offset):r.extend(u.parent,u.offset)}}}}(0,n,e.domConverter)}))}(this),this.on("render",(function(){n._render(),n.document.fire("layoutChanged"),n._hasChangedSinceTheLastRendering=!1})),this.listenTo(this.document.selection,"change",(function(){n._hasChangedSinceTheLastRendering=!0}))}return p(e,[{key:"attachDomRoot",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"main",r=this.document.getRoot(n);r._name=e.tagName.toLowerCase();for(var i={},o=0,a=Array.from(e.attributes);o0&&void 0!==arguments[0]?arguments[0]:"main";return this.domRoots.get(e)}},{key:"addObserver",value:function(e){var t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);var n,r=d(this.domRoots);try{for(r.s();!(n=r.n()).done;){var i=u(n.value,2),o=i[0],a=i[1];t.observe(a,o)}}catch(e){r.e(e)}finally{r.f()}return t.enable(),t}},{key:"getObserver",value:function(e){return this._observers.get(e)}},{key:"disableObservers",value:function(){var e,t=d(this._observers.values());try{for(t.s();!(e=t.n()).done;){e.value.disable()}}catch(e){t.e(e)}finally{t.f()}}},{key:"enableObservers",value:function(){var e,t=d(this._observers.values());try{for(t.s();!(e=t.n()).done;){e.value.enable()}}catch(e){t.e(e)}finally{t.f()}}},{key:"scrollToTheSelection",value:function(){var e=this.document.selection.getFirstRange();e&&Oo({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}},{key:"focus",value:function(){if(!this.document.isFocused){var e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}},{key:"change",value:function(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new Qt.a("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;var t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){Qt.a.rethrowUnexpectedError(e,this)}}},{key:"forceRender",value:function(){this._hasChangedSinceTheLastRendering=!0,this.change((function(){}))}},{key:"destroy",value:function(){var e,t=d(this._observers.values());try{for(t.s();!(e=t.n()).done;){e.value.destroy()}}catch(e){t.e(e)}finally{t.f()}this.document.destroy(),this.stopListening()}},{key:"createPositionAt",value:function(e,t){return Dr._createAt(e,t)}},{key:"createPositionAfter",value:function(e){return Dr._createAfter(e)}},{key:"createPositionBefore",value:function(e){return Dr._createBefore(e)}},{key:"createRange",value:function(e,t){return new Er(e,t)}},{key:"createRangeOn",value:function(e){return Er._createOn(e)}},{key:"createRangeIn",value:function(e){return Er._createIn(e)}},{key:"createSelection",value:function(e,t,n){return new Tr(e,t,n)}},{key:"_disableRendering",value:function(e){this._renderingDisabled=e,0==e&&this.change((function(){}))}},{key:"_render",value:function(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}]),e}();ln(Go,vr);var qo=function(){function e(t){m(this,e),this.parent=null,this._attrs=wn(t)}return p(e,[{key:"isAttached",value:function(){return this.root.is("rootElement")}},{key:"getPath",value:function(){for(var e=[],t=this;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}},{key:"getAncestors",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{includeSelf:!1,parentFirst:!1},t=[],n=e.includeSelf?this:this.parent;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}},{key:"getCommonAncestor",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.getAncestors(t),r=e.getAncestors(t),i=0;n[i]==r[i]&&n[i];)i++;return 0===i?null:n[i-1]}},{key:"isBefore",value:function(e){if(this==e)return!1;if(this.root!==e.root)return!1;var t=this.getPath(),n=e.getPath(),r=vn(t,n);switch(r){case"prefix":return!0;case"extension":return!1;default:return t[r]t.offsetSize)throw new Qt.a("model-textproxy-wrong-offsetintext",this);if(r<0||n+r>t.offsetSize)throw new Qt.a("model-textproxy-wrong-length",this);this.data=t.data.substring(n,n+r),this.offsetInText=n}return p(e,[{key:"is",value:function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}},{key:"getPath",value:function(){var e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}},{key:"getAncestors",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{includeSelf:!1,parentFirst:!1},t=[],n=e.includeSelf?this:this.parent;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}},{key:"hasAttribute",value:function(e){return this.textNode.hasAttribute(e)}},{key:"getAttribute",value:function(e){return this.textNode.getAttribute(e)}},{key:"getAttributes",value:function(){return this.textNode.getAttributes()}},{key:"getAttributeKeys",value:function(){return this.textNode.getAttributeKeys()}},{key:"startOffset",get:function(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}},{key:"offsetSize",get:function(){return this.data.length}},{key:"endOffset",get:function(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}},{key:"isPartial",get:function(){return this.offsetSize!==this.textNode.offsetSize}},{key:"parent",get:function(){return this.textNode.parent}},{key:"root",get:function(){return this.textNode.root}}]),e}(),$o=function(){function e(t){m(this,e),this._nodes=[],t&&this._insertNodes(0,t)}return p(e,[{key:Symbol.iterator,value:function(){return this._nodes[Symbol.iterator]()}},{key:"getNode",value:function(e){return this._nodes[e]||null}},{key:"getNodeIndex",value:function(e){var t=this._nodes.indexOf(e);return-1==t?null:t}},{key:"getNodeStartOffset",value:function(e){var t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce((function(e,t){return e+t.offsetSize}),0)}},{key:"indexToOffset",value:function(e){if(e==this._nodes.length)return this.maxOffset;var t=this._nodes[e];if(!t)throw new Qt.a("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}},{key:"offsetToIndex",value:function(e){var t,n=0,r=d(this._nodes);try{for(r.s();!(t=r.n()).done;){var i=t.value;if(e>=n&&e1&&void 0!==arguments[1]?arguments[1]:1;return this._nodes.splice(e,t)}},{key:"toJSON",value:function(){return this._nodes.map((function(e){return e.toJSON()}))}},{key:"length",get:function(){return this._nodes.length}},{key:"maxOffset",get:function(){return this._nodes.reduce((function(e,t){return e+t.offsetSize}),0)}}]),e}(),Zo=function(e){k(n,e);var t=b(n);function n(e,r,i){var o;return m(this,n),(o=t.call(this,r)).name=e,o._children=new $o,i&&o._insertChild(0,i),o}return p(n,[{key:"is",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}},{key:"getChild",value:function(e){return this._children.getNode(e)}},{key:"getChildren",value:function(){return this._children[Symbol.iterator]()}},{key:"getChildIndex",value:function(e){return this._children.getNodeIndex(e)}},{key:"getChildStartOffset",value:function(e){return this._children.getNodeStartOffset(e)}},{key:"offsetToIndex",value:function(e){return this._children.offsetToIndex(e)}},{key:"getNodeByPath",value:function(e){var t,n=this,r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value;n=n.getChild(n.offsetToIndex(i))}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"findAncestor",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{includeSelf:!1},n=t.includeSelf?this:this.parent;n;){if(n.name===e)return n;n=n.parent}return null}},{key:"toJSON",value:function(){var e=c(D(n.prototype),"toJSON",this).call(this);if(e.name=this.name,this._children.length>0){e.children=[];var t,r=d(this._children);try{for(r.s();!(t=r.n()).done;){var i=t.value;e.children.push(i.toJSON())}}catch(e){r.e(e)}finally{r.f()}}return e}},{key:"_clone",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=e?Array.from(this._children).map((function(e){return e._clone(!0)})):null;return new n(this.name,this.getAttributes(),t)}},{key:"_appendChild",value:function(e){this._insertChild(this.childCount,e)}},{key:"_insertChild",value:function(e,t){var n,r=function(e){return"string"==typeof e?[new Yo(e)]:(sn(e)||(e=[e]),Array.from(e).map((function(e){return"string"==typeof e?new Yo(e):e instanceof Qo?new Yo(e.data,e.getAttributes()):e})))}(t),i=d(r);try{for(i.s();!(n=i.n()).done;){var o=n.value;null!==o.parent&&o._remove(),o.parent=this}}catch(e){i.e(e)}finally{i.f()}this._children._insertNodes(e,r)}},{key:"_removeChildren",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=this._children._removeNodes(e,n),i=d(r);try{for(i.s();!(t=i.n()).done;){var o=t.value;o.parent=null}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"childCount",get:function(){return this._children.length}},{key:"maxOffset",get:function(){return this._children.maxOffset}},{key:"isEmpty",get:function(){return 0===this.childCount}}],[{key:"fromJSON",value:function(e){var t=null;if(e.children){t=[];var r,i=d(e.children);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.name?t.push(n.fromJSON(o)):t.push(Yo.fromJSON(o))}}catch(e){i.e(e)}finally{i.f()}}return new n(e.name,e.attributes,t)}}]),n}(qo),Jo=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(m(this,e),!t.boundaries&&!t.startPosition)throw new Qt.a("model-tree-walker-no-start-position",null);var n=t.direction||"forward";if("forward"!=n&&"backward"!=n)throw new Qt.a("model-tree-walker-unknown-direction",t,{direction:n});this.direction=n,this.boundaries=t.boundaries||null,t.startPosition?this.position=t.startPosition.clone():this.position=ea._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}return p(e,[{key:Symbol.iterator,value:function(){return this}},{key:"skip",value:function(e){var t,n,r,i;do{var o;r=this.position,i=this._visitedParent,t=(o=this.next()).done,n=o.value}while(!t&&e(n));t||(this.position=r,this._visitedParent=i)}},{key:"next",value:function(){return"forward"==this.direction?this._next():this._previous()}},{key:"_next",value:function(){var e=this.position,t=this.position.clone(),n=this._visitedParent;if(null===n.parent&&t.offset===n.maxOffset)return{done:!0};if(n===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};var r=t.parent,i=ta(t,r),o=i||na(t,r,i);if(o instanceof Zo)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=o),this.position=t,Xo("elementStart",o,e,t,1);if(o instanceof Yo){var a;if(this.singleCharacters)a=1;else{var s=o.endOffset;this._boundaryEndParent==n&&this.boundaries.end.offsets&&(s=this.boundaries.start.offset),a=t.offset-s}var l=t.offset-o.startOffset,c=new Qo(o,l-a,a);return t.offset-=a,this.position=t,Xo("text",c,e,t,a)}return t.path.pop(),this.position=t,this._visitedParent=n.parent,Xo("elementStart",n,e,t,1)}}]),e}();function Xo(e,t,n,r,i){return{done:!1,value:{type:e,item:t,previousPosition:n,nextPosition:r,length:i}}}var ea=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"toNone";if(m(this,e),!t.is("element")&&!t.is("documentFragment"))throw new Qt.a("model-position-root-invalid",t);if(!(n instanceof Array)||0===n.length)throw new Qt.a("model-position-path-incorrect-format",t,{path:n});t.is("rootElement")?n=n.slice():(n=[].concat(h(t.getPath()),h(n)),t=t.root),this.root=t,this.path=n,this.stickiness=r}return p(e,[{key:"compareWith",value:function(e){if(this.root!=e.root)return"different";var t=vn(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]1&&void 0!==arguments[1]?arguments[1]:{};t.startPosition=this;var n=new Jo(t);return n.skip(e),n.position}},{key:"getParentPath",value:function(){return this.path.slice(0,-1)}},{key:"getAncestors",value:function(){var e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}},{key:"findAncestor",value:function(e){var t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}},{key:"getCommonPath",value:function(e){if(this.root!=e.root)return[];var t=vn(this.path,e.path),n="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,n)}},{key:"getCommonAncestor",value:function(e){for(var t=this.getAncestors(),n=e.getAncestors(),r=0;t[r]==n[r]&&t[r];)r++;return 0===r?null:t[r-1]}},{key:"getShiftedBy",value:function(e){var t=this.clone(),n=t.offset+e;return t.offset=n<0?0:n,t}},{key:"isAfter",value:function(e){return"after"==this.compareWith(e)}},{key:"isBefore",value:function(e){return"before"==this.compareWith(e)}},{key:"isEqual",value:function(e){return"same"==this.compareWith(e)}},{key:"isTouching",value:function(t){var n=null,r=null;switch(this.compareWith(t)){case"same":return!0;case"before":n=e._createAt(this),r=e._createAt(t);break;case"after":n=e._createAt(t),r=e._createAt(this);break;default:return!1}for(var i=n.parent;n.path.length+r.path.length;){if(n.isEqual(r))return!0;if(n.path.length>r.path.length){if(n.offset!==i.maxOffset)return!1;n.path=n.path.slice(0,-1),i=i.parent,n.offset++}else{if(0!==r.offset)return!1;r.path=r.path.slice(0,-1)}}}},{key:"is",value:function(e){return"position"===e||"model:position"===e}},{key:"hasSameParentAs",value:function(e){return this.root===e.root&&"same"==vn(this.getParentPath(),e.getParentPath())}},{key:"getTransformedByOperation",value:function(t){var n;switch(t.type){case"insert":n=this._getTransformedByInsertOperation(t);break;case"move":case"remove":case"reinsert":n=this._getTransformedByMoveOperation(t);break;case"split":n=this._getTransformedBySplitOperation(t);break;case"merge":n=this._getTransformedByMergeOperation(t);break;default:n=e._createAt(this)}return n}},{key:"_getTransformedByInsertOperation",value:function(e){return this._getTransformedByInsertion(e.position,e.howMany)}},{key:"_getTransformedByMoveOperation",value:function(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}},{key:"_getTransformedBySplitOperation",value:function(e){var t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}},{key:"_getTransformedByMergeOperation",value:function(t){var n,r=t.movedRange;return r.containsPosition(this)||r.start.isEqual(this)?(n=this._getCombined(t.sourcePosition,t.targetPosition),t.sourcePosition.isBefore(t.targetPosition)&&(n=n._getTransformedByDeletion(t.deletionPosition,1))):n=this.isEqual(t.deletionPosition)?e._createAt(t.deletionPosition):this._getTransformedByMove(t.deletionPosition,t.graveyardPosition,1),n}},{key:"_getTransformedByDeletion",value:function(t,n){var r=e._createAt(this);if(this.root!=t.root)return r;if("same"==vn(t.getParentPath(),this.getParentPath())){if(t.offsetthis.offset)return null;r.offset-=n}}else if("prefix"==vn(t.getParentPath(),this.getParentPath())){var i=t.path.length-1;if(t.offset<=this.path[i]){if(t.offset+n>this.path[i])return null;r.path[i]-=n}}return r}},{key:"_getTransformedByInsertion",value:function(t,n){var r=e._createAt(this);if(this.root!=t.root)return r;if("same"==vn(t.getParentPath(),this.getParentPath()))(t.offset2&&void 0!==arguments[2]?arguments[2]:"toNone";if(t instanceof e)return new e(t.root,t.path,t.stickiness);var i=t;if("end"==n)n=i.maxOffset;else{if("before"==n)return this._createBefore(i,r);if("after"==n)return this._createAfter(i,r);if(0!==n&&!n)throw new Qt.a("model-createpositionat-offset-required",[this,t])}if(!i.is("element")&&!i.is("documentFragment"))throw new Qt.a("model-position-parent-incorrect",[this,t]);var o=i.getPath();return o.push(n),new this(i.root,o,r)}},{key:"_createAfter",value:function(e,t){if(!e.parent)throw new Qt.a("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}},{key:"_createBefore",value:function(e,t){if(!e.parent)throw new Qt.a("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}},{key:"fromJSON",value:function(t,n){if("$graveyard"===t.root){var r=new e(n.graveyard,t.path);return r.stickiness=t.stickiness,r}if(!n.getRoot(t.root))throw new Qt.a("model-position-fromjson-no-root",n,{rootName:t.root});return new e(n.getRoot(t.root),t.path,t.stickiness)}}]),e}();function ta(e,t){var n=t.getChild(t.offsetToIndex(e.offset));return n&&n.is("$text")&&n.startOffset1&&void 0!==arguments[1]?arguments[1]:null;m(this,e),this.start=ea._createAt(t),this.end=n?ea._createAt(n):ea._createAt(t),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}return p(e,[{key:Symbol.iterator,value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(new Jo({boundaries:this,ignoreElementEnd:!0}),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:"containsPosition",value:function(e){return e.isAfter(this.start)&&e.isBefore(this.end)}},{key:"containsRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.isCollapsed&&(t=!1);var n=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),r=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&r}},{key:"containsItem",value:function(e){var t=ea._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}},{key:"is",value:function(e){return"range"===e||"model:range"===e}},{key:"isEqual",value:function(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}},{key:"isIntersecting",value:function(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}},{key:"getDifference",value:function(t){var n=[];return this.isIntersecting(t)?(this.containsPosition(t.start)&&n.push(new e(this.start,t.start)),this.containsPosition(t.end)&&n.push(new e(t.end,this.end))):n.push(new e(this.start,this.end)),n}},{key:"getIntersection",value:function(t){if(this.isIntersecting(t)){var n=this.start,r=this.end;return this.containsPosition(t.start)&&(n=t.start),this.containsPosition(t.end)&&(r=t.end),new e(n,r)}return null}},{key:"getJoined",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.isIntersecting(t);if(r||(r=this.start.isBefore(t.start)?n?this.end.isTouching(t.start):this.end.isEqual(t.start):n?t.end.isTouching(this.start):t.end.isEqual(this.start)),!r)return null;var i=this.start,o=this.end;return t.start.isBefore(i)&&(i=t.start),t.end.isAfter(o)&&(o=t.end),new e(i,o)}},{key:"getMinimalFlatRanges",value:function(){for(var t=[],n=this.start.getCommonPath(this.end).length,r=ea._createAt(this.start),i=r.parent;r.path.length>n+1;){var o=i.maxOffset-r.offset;0!==o&&t.push(new e(r,r.getShiftedBy(o))),r.path=r.path.slice(0,-1),r.offset++,i=i.parent}for(;r.path.length<=this.end.path.length;){var a=this.end.path[r.path.length-1],s=a-r.offset;0!==s&&t.push(new e(r,r.getShiftedBy(s))),r.offset=a,r.path.push(0)}return t}},{key:"getWalker",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.boundaries=this,new Jo(e)}},{key:"getItems",value:o.a.mark((function e(){var t,n,r,i,a,s=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(t=s.length>0&&void 0!==s[0]?s[0]:{}).boundaries=this,t.ignoreElementEnd=!0,n=new Jo(t),r=d(n),e.prev=4,r.s();case 6:if((i=r.n()).done){e.next=12;break}return a=i.value,e.next=10,a.item;case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),r.e(e.t0);case 17:return e.prev=17,r.f(),e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[4,14,17,20]])}))},{key:"getPositions",value:o.a.mark((function e(){var t,n,r,i,a,s=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(t=s.length>0&&void 0!==s[0]?s[0]:{}).boundaries=this,n=new Jo(t),e.next=5,n.position;case 5:r=d(n),e.prev=6,r.s();case 8:if((i=r.n()).done){e.next=14;break}return a=i.value,e.next=12,a.nextPosition;case 12:e.next=8;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(6),r.e(e.t0);case 19:return e.prev=19,r.f(),e.finish(19);case 22:case"end":return e.stop()}}),e,this,[[6,16,19,22]])}))},{key:"getTransformedByOperation",value:function(t){switch(t.type){case"insert":return this._getTransformedByInsertOperation(t);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(t);case"split":return[this._getTransformedBySplitOperation(t)];case"merge":return[this._getTransformedByMergeOperation(t)]}return[new e(this.start,this.end)]}},{key:"getTransformedByOperations",value:function(t){var n,r=[new e(this.start,this.end)],i=d(t);try{for(i.s();!(n=i.n()).done;)for(var o=n.value,a=0;a1&&void 0!==arguments[1]&&arguments[1];return this._getTransformedByInsertion(e.position,e.howMany,t)}},{key:"_getTransformedByMoveOperation",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.sourcePosition,r=e.howMany,i=e.targetPosition;return this._getTransformedByMove(n,i,r,t)}},{key:"_getTransformedBySplitOperation",value:function(t){var n=this.start._getTransformedBySplitOperation(t),r=this.end._getTransformedBySplitOperation(t);return this.end.isEqual(t.insertionPosition)&&(r=this.end.getShiftedBy(1)),n.root!=r.root&&(r=this.end.getShiftedBy(-1)),new e(n,r)}},{key:"_getTransformedByMergeOperation",value:function(t){if(this.start.isEqual(t.targetPosition)&&this.end.isEqual(t.deletionPosition))return new e(this.start);var n=this.start._getTransformedByMergeOperation(t),r=this.end._getTransformedByMergeOperation(t);return n.root!=r.root&&(r=this.end.getShiftedBy(-1)),n.isAfter(r)?(t.sourcePosition.isBefore(t.targetPosition)?(n=ea._createAt(r)).offset=0:(t.deletionPosition.isEqual(n)||(r=t.deletionPosition),n=t.targetPosition),new e(n,r)):new e(n,r)}},{key:"_getTransformedByInsertion",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(r&&this.containsPosition(t))return[new e(this.start,t),new e(t.getShiftedBy(n),this.end._getTransformedByInsertion(t,n))];var i=new e(this.start,this.end);return i.start=i.start._getTransformedByInsertion(t,n),i.end=i.end._getTransformedByInsertion(t,n),[i]}},{key:"_getTransformedByMove",value:function(t,n,r){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.isCollapsed){var o=this.start._getTransformedByMove(t,n,r);return[new e(o)]}var a,s=e._createFromPositionAndShift(t,r),l=n._getTransformedByDeletion(t,r);if(this.containsPosition(n)&&!i&&(s.containsPosition(this.start)||s.containsPosition(this.end))){var c=this.start._getTransformedByMove(t,n,r),u=this.end._getTransformedByMove(t,n,r);return[new e(c,u)]}var d=this.getDifference(s),h=null,f=this.getIntersection(s);if(1==d.length?h=new e(d[0].start._getTransformedByDeletion(t,r),d[0].end._getTransformedByDeletion(t,r)):2==d.length&&(h=new e(this.start,this.end._getTransformedByDeletion(t,r))),a=h?h._getTransformedByInsertion(l,r,null!==f||i):[],f){var g=new e(f.start._getCombined(s.start,l),f.end._getCombined(s.start,l));2==a.length?a.splice(1,0,g):a.push(g)}return a}},{key:"_getTransformedByDeletion",value:function(t,n){var r=this.start._getTransformedByDeletion(t,n),i=this.end._getTransformedByDeletion(t,n);return null==r&&null==i?null:(null==r&&(r=t),null==i&&(i=t),new e(r,i))}},{key:"isCollapsed",get:function(){return this.start.isEqual(this.end)}},{key:"isFlat",get:function(){return"same"==vn(this.start.getParentPath(),this.end.getParentPath())}},{key:"root",get:function(){return this.start.root}}],[{key:"_createFromPositionAndShift",value:function(e,t){var n=e,r=e.getShiftedBy(t);return t>0?new this(n,r):new this(r,n)}},{key:"_createIn",value:function(e){return new this(ea._createAt(e,0),ea._createAt(e,e.maxOffset))}},{key:"_createOn",value:function(e){return this._createFromPositionAndShift(ea._createBefore(e),e.offsetSize)}},{key:"_createFromRanges",value:function(e){if(0===e.length)throw new Qt.a("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();var t=e[0];e.sort((function(e,t){return e.start.isAfter(t.start)?1:-1}));var n=e.indexOf(t),r=new this(t.start,t.end);if(n>0)for(var i=n-1;e[i].end.isEqual(r.start);i++)r.start=ea._createAt(e[i].start);for(var o=n+1;o1&&void 0!==arguments[1]?arguments[1]:{isPhantom:!1},n={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",n),n.viewPosition}},{key:"markerNameToElements",value:function(e){var t=this._markerNameToElements.get(e);if(!t)return null;var n,r=new Set,i=d(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.is("attributeElement")){var a,s=d(o.getElementsWithSameId());try{for(s.s();!(a=s.n()).done;){var l=a.value;r.add(l)}}catch(e){s.e(e)}finally{s.f()}}else r.add(o)}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"registerViewToModelLength",value:function(e,t){this._viewToModelLengthCallbacks.set(e,t)}},{key:"findMappedViewAncestor",value:function(e){for(var t=e.parent;!this._viewToModelMapping.has(t);)t=t.parent;return t}},{key:"_toModelOffset",value:function(e,t,n){if(n!=e)return this._toModelOffset(e.parent,e.index,n)+this._toModelOffset(e,t,e);if(e.is("$text"))return t;for(var r=0,i=0;i1?t[0]+":"+t[1]:t[0]}var la=function(){function e(t){m(this,e),this.conversionApi=Object.assign({dispatcher:this},t),this._reconversionEventsMapping=new Map}return p(e,[{key:"convertChanges",value:function(e,t,n){var r,i=d(e.getMarkersToRemove());try{for(i.s();!(r=i.n()).done;){var o=r.value;this.convertMarkerRemove(o.name,o.range,n)}}catch(e){i.e(e)}finally{i.f()}var a,s=d(this._mapChangesWithAutomaticReconversion(e));try{for(s.s();!(a=s.n()).done;){var l=a.value;"insert"===l.type?this.convertInsert(ia._createFromPositionAndShift(l.position,l.length),n):"remove"===l.type?this.convertRemove(l.position,l.length,l.name,n):"reconvert"===l.type?this.reconvertElement(l.element,n):this.convertAttribute(l.range,l.attributeKey,l.attributeOldValue,l.attributeNewValue,n)}}catch(e){s.e(e)}finally{s.f()}var c,u=d(this.conversionApi.mapper.flushUnboundMarkerNames());try{for(u.s();!(c=u.n()).done;){var h=c.value,f=t.get(h).getRange();this.convertMarkerRemove(h,f,n),this.convertMarkerAdd(h,f,n)}}catch(e){u.e(e)}finally{u.f()}var g,m=d(e.getMarkersToAdd());try{for(m.s();!(g=m.n()).done;){var v=g.value;this.convertMarkerAdd(v.name,v.range,n)}}catch(e){m.e(e)}finally{m.f()}}},{key:"convertInsert",value:function(e,t){this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(e);var n,r=d(Array.from(e).map(ua));try{for(r.s();!(n=r.n()).done;){var i=n.value;this._convertInsertWithAttributes(i)}}catch(e){r.e(e)}finally{r.f()}this._clearConversionApi()}},{key:"convertRemove",value:function(e,t,n,r){this.conversionApi.writer=r,this.fire("remove:"+n,{position:e,length:t},this.conversionApi),this._clearConversionApi()}},{key:"convertAttribute",value:function(e,t,n,r,i){this.conversionApi.writer=i,this.conversionApi.consumable=this._createConsumableForRange(e,"attribute:"+t);var o,a=d(e);try{for(a.s();!(o=a.n()).done;){var s=o.value,l={item:s.item,range:ia._createFromPositionAndShift(s.previousPosition,s.length),attributeKey:t,attributeOldValue:n,attributeNewValue:r};this._testAndFire("attribute:"+t,l)}}catch(e){a.e(e)}finally{a.f()}this._clearConversionApi()}},{key:"reconvertElement",value:function(e,t){var n=ia._createOn(e);this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(n);var r=this.conversionApi.mapper,i=r.toViewElement(e);t.remove(i),this._convertInsertWithAttributes({item:e,range:n});var o,a=r.toViewElement(e),s=d(ia._createIn(e));try{for(s.s();!(o=s.n()).done;){var l=o.value,c=l.item,u=da(c,r);u?u.root!==a.root&&t.move(t.createRangeOn(u),r.toViewPosition(ea._createBefore(c))):this._convertInsertWithAttributes(ua(l))}}catch(e){s.e(e)}finally{s.f()}r.unbindViewElement(i),this._clearConversionApi()}},{key:"convertSelection",value:function(e,t,n){var r=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this.conversionApi.writer=n,this.conversionApi.consumable=this._createSelectionConsumable(e,r),this.fire("selection",{selection:e},this.conversionApi),e.isCollapsed){var i,o=d(r);try{for(o.s();!(i=o.n()).done;){var a=i.value,s=a.getRange();if(ca(e.getFirstPosition(),a,this.conversionApi.mapper)){var l={item:e,markerName:a.name,markerRange:s};this.conversionApi.consumable.test(e,"addMarker:"+a.name)&&this.fire("addMarker:"+a.name,l,this.conversionApi)}}}catch(e){o.e(e)}finally{o.f()}var c,u=d(e.getAttributeKeys());try{for(u.s();!(c=u.n()).done;){var h=c.value,f={item:e,range:e.getFirstRange(),attributeKey:h,attributeOldValue:null,attributeNewValue:e.getAttribute(h)};this.conversionApi.consumable.test(e,"attribute:"+f.attributeKey)&&this.fire("attribute:"+f.attributeKey+":$text",f,this.conversionApi)}}catch(e){u.e(e)}finally{u.f()}this._clearConversionApi()}}},{key:"convertMarkerAdd",value:function(e,t,n){if(t.root.document&&"$graveyard"!=t.root.rootName){this.conversionApi.writer=n;var r="addMarker:"+e,i=new aa;if(i.add(t,r),this.conversionApi.consumable=i,this.fire(r,{markerName:e,markerRange:t},this.conversionApi),i.test(t,r)){this.conversionApi.consumable=this._createConsumableForRange(t,r);var o,a=d(t.getItems());try{for(a.s();!(o=a.n()).done;){var s=o.value;if(this.conversionApi.consumable.test(s,r)){var l={item:s,range:ia._createOn(s),markerName:e,markerRange:t};this.fire(r,l,this.conversionApi)}}}catch(e){a.e(e)}finally{a.f()}this._clearConversionApi()}}}},{key:"convertMarkerRemove",value:function(e,t,n){t.root.document&&"$graveyard"!=t.root.rootName&&(this.conversionApi.writer=n,this.fire("removeMarker:"+e,{markerName:e,markerRange:t},this.conversionApi),this._clearConversionApi())}},{key:"_mapReconversionTriggerEvent",value:function(e,t){this._reconversionEventsMapping.set(t,e)}},{key:"_createInsertConsumable",value:function(e){var t,n=new aa,r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value.item;n.add(i,"insert");var o,a=d(i.getAttributeKeys());try{for(a.s();!(o=a.n()).done;){var s=o.value;n.add(i,"attribute:"+s)}}catch(e){a.e(e)}finally{a.f()}}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"_createConsumableForRange",value:function(e,t){var n,r=new aa,i=d(e.getItems());try{for(i.s();!(n=i.n()).done;){var o=n.value;r.add(o,t)}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"_createSelectionConsumable",value:function(e,t){var n=new aa;n.add(e,"selection");var r,i=d(t);try{for(i.s();!(r=i.n()).done;){var o=r.value;n.add(e,"addMarker:"+o.name)}}catch(e){i.e(e)}finally{i.f()}var a,s=d(e.getAttributeKeys());try{for(s.s();!(a=s.n()).done;){var l=a.value;n.add(e,"attribute:"+l)}}catch(e){s.e(e)}finally{s.f()}return n}},{key:"_testAndFire",value:function(e,t){this.conversionApi.consumable.test(t.item,e)&&this.fire(function(e,t){var n=t.item.name||"$text";return"".concat(e,":").concat(n)}(e,t),t,this.conversionApi)}},{key:"_clearConversionApi",value:function(){delete this.conversionApi.writer,delete this.conversionApi.consumable}},{key:"_convertInsertWithAttributes",value:function(e){this._testAndFire("insert",e);var t,n=d(e.item.getAttributeKeys());try{for(n.s();!(t=n.n()).done;){var r=t.value;e.attributeKey=r,e.attributeOldValue=null,e.attributeNewValue=e.item.getAttribute(r),this._testAndFire("attribute:"+r,e)}}catch(e){n.e(e)}finally{n.f()}}},{key:"_mapChangesWithAutomaticReconversion",value:function(e){var t,n=new Set,r=[],i=d(e.getChanges());try{for(i.s();!(t=i.n()).done;){var o=t.value,a=o.position||o.range.start,s=a.parent;if(ta(a,s))r.push(o);else{var l="attribute"===o.type?na(a,s,null):s;if(l.is("$text"))r.push(o);else{var c;if(c="attribute"===o.type?"attribute:".concat(o.attributeKey,":").concat(l.name):"".concat(o.type,":").concat(o.name),this._isReconvertTriggerEvent(c,l.name)){if(n.has(l))continue;n.add(l),r.push({type:"reconvert",element:l})}else r.push(o)}}}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"_isReconvertTriggerEvent",value:function(e,t){return this._reconversionEventsMapping.get(e)===t}}]),e}();function ca(e,t,n){var r=t.getRange(),i=Array.from(e.getAncestors());return i.shift(),i.reverse(),!i.some((function(e){if(r.containsItem(e))return!!n.toViewElement(e).getCustomProperty("addHighlight")}))}function ua(e){return{item:e.item,range:ia._createFromPositionAndShift(e.previousPosition,e.length)}}function da(e,t){if(e.is("textProxy")){var n=t.toViewPosition(ea._createBefore(e)).parent;return n.is("$text")?n:null}return t.toViewElement(e)}ln(la,Jt);var ha=function(){function e(t,n,r){m(this,e),this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,t&&this.setTo(t,n,r)}return p(e,[{key:"isEqual",value:function(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;var t,n=d(this._ranges);try{for(n.s();!(t=n.n()).done;){var r,i=t.value,o=!1,a=d(e._ranges);try{for(a.s();!(r=a.n()).done;){var s=r.value;if(i.isEqual(s)){o=!0;break}}}catch(e){a.e(e)}finally{a.f()}if(!o)return!1}}catch(e){n.e(e)}finally{n.f()}return!0}},{key:"getRanges",value:o.a.mark((function e(){var t,n,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=d(this._ranges),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=n.value,e.next=7,new ia(r.start,r.end);case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:"getFirstRange",value:function(){var e,t=null,n=d(this._ranges);try{for(n.s();!(e=n.n()).done;){var r=e.value;t&&!r.start.isBefore(t.start)||(t=r)}}catch(e){n.e(e)}finally{n.f()}return t?new ia(t.start,t.end):null}},{key:"getLastRange",value:function(){var e,t=null,n=d(this._ranges);try{for(n.s();!(e=n.n()).done;){var r=e.value;t&&!r.end.isAfter(t.end)||(t=r)}}catch(e){n.e(e)}finally{n.f()}return t?new ia(t.start,t.end):null}},{key:"getFirstPosition",value:function(){var e=this.getFirstRange();return e?e.start.clone():null}},{key:"getLastPosition",value:function(){var e=this.getLastRange();return e?e.end.clone():null}},{key:"setTo",value:function(t,n,r){if(null===t)this._setRanges([]);else if(t instanceof e)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof ia)this._setRanges([t],!!n&&!!n.backward);else if(t instanceof ea)this._setRanges([new ia(t)]);else if(t instanceof qo){var i,o=!!r&&!!r.backward;if("in"==n)i=ia._createIn(t);else if("on"==n)i=ia._createOn(t);else{if(void 0===n)throw new Qt.a("model-selection-setto-required-second-parameter",[this,t]);i=new ia(ea._createAt(t,n))}this._setRanges([i],o)}else{if(!sn(t))throw new Qt.a("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,n&&!!n.backward)}}},{key:"_setRanges",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=(e=Array.from(e)).some((function(n){if(!(n instanceof ia))throw new Qt.a("model-selection-set-ranges-not-range",[t,e]);return t._ranges.every((function(e){return!e.isEqual(n)}))}));if(e.length!==this._ranges.length||r){this._removeAllRanges();var i,o=d(e);try{for(o.s();!(i=o.n()).done;){var a=i.value;this._pushRange(a)}}catch(e){o.e(e)}finally{o.f()}this._lastRangeBackward=!!n,this.fire("change:range",{directChange:!0})}}},{key:"setFocus",value:function(e,t){if(null===this.anchor)throw new Qt.a("model-selection-setfocus-no-ranges",[this,e]);var n=ea._createAt(e,t);if("same"!=n.compareWith(this.focus)){var r=this.anchor;this._ranges.length&&this._popRange(),"before"==n.compareWith(r)?(this._pushRange(new ia(n,r)),this._lastRangeBackward=!0):(this._pushRange(new ia(r,n)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}}},{key:"getAttribute",value:function(e){return this._attrs.get(e)}},{key:"getAttributes",value:function(){return this._attrs.entries()}},{key:"getAttributeKeys",value:function(){return this._attrs.keys()}},{key:"hasAttribute",value:function(e){return this._attrs.has(e)}},{key:"removeAttribute",value:function(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}},{key:"setAttribute",value:function(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}},{key:"getSelectedElement",value:function(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}},{key:"is",value:function(e){return"selection"===e||"model:selection"===e}},{key:"getSelectedBlocks",value:o.a.mark((function e(){var t,n,r,i,a,s,l,c,u,h;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=new WeakSet,n=d(this.getRanges()),e.prev=2,n.s();case 4:if((r=n.n()).done){e.next=38;break}if(i=r.value,a=ma(i.start,t),e.t0=a&&va(a,i),!e.t0){e.next=11;break}return e.next=11,a;case 11:s=d(i.getWalker()),e.prev=12,s.s();case 14:if((l=s.n()).done){e.next=23;break}if(c=l.value,u=c.item,e.t1="elementEnd"==c.type&&ga(u,t,i),!e.t1){e.next=21;break}return e.next=21,u;case 21:e.next=14;break;case 23:e.next=28;break;case 25:e.prev=25,e.t2=e.catch(12),s.e(e.t2);case 28:return e.prev=28,s.f(),e.finish(28);case 31:if(h=ma(i.end,t),e.t3=h&&!i.end.isTouching(ea._createAt(h,0))&&va(h,i),!e.t3){e.next=36;break}return e.next=36,h;case 36:e.next=4;break;case 38:e.next=43;break;case 40:e.prev=40,e.t4=e.catch(2),n.e(e.t4);case 43:return e.prev=43,n.f(),e.finish(43);case 46:case"end":return e.stop()}}),e,this,[[2,40,43,46],[12,25,28,31]])}))},{key:"containsEntireContent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.anchor.root,t=ea._createAt(e,0),n=ea._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}},{key:"_pushRange",value:function(e){this._checkRange(e),this._ranges.push(new ia(e.start,e.end))}},{key:"_checkRange",value:function(e){for(var t=0;t0;)this._popRange()}},{key:"_popRange",value:function(){this._ranges.pop()}},{key:"anchor",get:function(){if(this._ranges.length>0){var e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}},{key:"focus",get:function(){if(this._ranges.length>0){var e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}},{key:"isCollapsed",get:function(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}},{key:"rangeCount",get:function(){return this._ranges.length}},{key:"isBackward",get:function(){return!this.isCollapsed&&this._lastRangeBackward}}]),e}();function fa(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function ga(e,t,n){return fa(e,t)&&va(e,n)}function ma(e,t){var n=e.parent.root.document.model.schema,r=e.parent.getAncestors({parentFirst:!0,includeSelf:!0}),i=!1,o=r.find((function(e){return!i&&(!(i=n.isLimit(e))&&fa(e,t))}));return r.forEach((function(e){return t.add(e)})),o}function va(e,t){var n=function(e){for(var t=e.root.document.model.schema,n=e.parent;n;){if(t.isBlock(n))return n;n=n.parent}}(e);return!n||!t.containsRange(ia._createOn(n),!0)}ln(ha,Jt);var pa=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),i=t.call(this,e,r),ka.call(w(i)),i}return p(n,[{key:"detach",value:function(){this.stopListening()}},{key:"is",value:function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}},{key:"toRange",value:function(){return new ia(this.start,this.end)}}],[{key:"fromRange",value:function(e){return new n(e.start,e.end)}}]),n}(ia);function ka(){var e=this;this.listenTo(this.root.document.model,"applyOperation",(function(t,n){var r=n[0];r.isDocumentOperation&&ba.call(e,r)}),{priority:"low"})}function ba(e){var t=this.getTransformedByOperation(e),n=ia._createFromRanges(t),r=!n.isEqual(this),i=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e),o=null;if(r){"$graveyard"==n.root.rootName&&(o="remove"==e.type?e.sourcePosition:e.deletionPosition);var a=this.toRange();this.start=n.start,this.end=n.end,this.fire("change:range",a,{deletionPosition:o})}else i&&this.fire("change:content",this.toRange(),{deletionPosition:o})}ln(pa,Jt);var ya="selection:",wa=function(){function e(t){m(this,e),this._selection=new Ca(t),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}return p(e,[{key:"getRanges",value:function(){return this._selection.getRanges()}},{key:"getFirstPosition",value:function(){return this._selection.getFirstPosition()}},{key:"getLastPosition",value:function(){return this._selection.getLastPosition()}},{key:"getFirstRange",value:function(){return this._selection.getFirstRange()}},{key:"getLastRange",value:function(){return this._selection.getLastRange()}},{key:"getSelectedBlocks",value:function(){return this._selection.getSelectedBlocks()}},{key:"getSelectedElement",value:function(){return this._selection.getSelectedElement()}},{key:"containsEntireContent",value:function(e){return this._selection.containsEntireContent(e)}},{key:"destroy",value:function(){this._selection.destroy()}},{key:"getAttributeKeys",value:function(){return this._selection.getAttributeKeys()}},{key:"getAttributes",value:function(){return this._selection.getAttributes()}},{key:"getAttribute",value:function(e){return this._selection.getAttribute(e)}},{key:"hasAttribute",value:function(e){return this._selection.hasAttribute(e)}},{key:"refresh",value:function(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}},{key:"is",value:function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e}},{key:"_setFocus",value:function(e,t){this._selection.setFocus(e,t)}},{key:"_setTo",value:function(e,t,n){this._selection.setTo(e,t,n)}},{key:"_setAttribute",value:function(e,t){this._selection.setAttribute(e,t)}},{key:"_removeAttribute",value:function(e){this._selection.removeAttribute(e)}},{key:"_getStoredAttributes",value:function(){return this._selection._getStoredAttributes()}},{key:"_overrideGravity",value:function(){return this._selection.overrideGravity()}},{key:"_restoreGravity",value:function(e){this._selection.restoreGravity(e)}},{key:"isCollapsed",get:function(){return this._selection.isCollapsed}},{key:"anchor",get:function(){return this._selection.anchor}},{key:"focus",get:function(){return this._selection.focus}},{key:"rangeCount",get:function(){return this._selection.rangeCount}},{key:"hasOwnRange",get:function(){return this._selection.hasOwnRange}},{key:"isBackward",get:function(){return this._selection.isBackward}},{key:"isGravityOverridden",get:function(){return this._selection.isGravityOverridden}},{key:"markers",get:function(){return this._selection.markers}},{key:"_ranges",get:function(){return this._selection._ranges}}],[{key:"_getStoreAttributeKey",value:function(e){return ya+e}},{key:"_isStoreAttributeKey",value:function(e){return e.startsWith(ya)}}]),e}();ln(wa,Jt);var Ca=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this)).markers=new cn({idProperty:"name"}),r._model=e.model,r._document=e,r._attributePriority=new Map,r._selectionRestorePosition=null,r._hasChangedRange=!1,r._overriddenGravityRegister=new Set,r.listenTo(r._model,"applyOperation",(function(e,t){var n=t[0];n.isDocumentOperation&&"marker"!=n.type&&"rename"!=n.type&&"noop"!=n.type&&(0==r._ranges.length&&r._selectionRestorePosition&&r._fixGraveyardSelection(r._selectionRestorePosition),r._selectionRestorePosition=null,r._hasChangedRange&&(r._hasChangedRange=!1,r.fire("change:range",{directChange:!1})))}),{priority:"lowest"}),r.on("change:range",(function(){var e,t=d(r.getRanges());try{for(t.s();!(e=t.n()).done;){var n=e.value;if(!r._document._validateSelectionRange(n))throw new Qt.a("document-selection-wrong-position",w(r),{range:n})}}catch(e){t.e(e)}finally{t.f()}})),r.listenTo(r._model.markers,"update",(function(){return r._updateMarkers()})),r.listenTo(r._document,"change",(function(e,t){!function(e,t){var n,r=d(e.document.differ.getChanges());try{var i=function(){var r=n.value;if("insert"!=r.type)return"continue";var i=r.position.parent;r.length===i.maxOffset&&e.enqueueChange(t,(function(e){var t,n=d(Array.from(i.getAttributeKeys()).filter((function(e){return e.startsWith(ya)})));try{for(n.s();!(t=n.n()).done;){var r=t.value;e.removeAttribute(r,i)}}catch(e){n.e(e)}finally{n.f()}}))};for(r.s();!(n=r.n()).done;)i()}catch(e){r.e(e)}finally{r.f()}}(r._model,t)})),r}return p(n,[{key:"destroy",value:function(){for(var e=0;e0&&this.fire("change:attribute",{attributeKeys:l,directChange:!1})}},{key:"_setAttribute",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=r?"normal":"low";return("low"!=i||"normal"!=this._attributePriority.get(e))&&(c(D(n.prototype),"getAttribute",this).call(this,e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,i),!0))}},{key:"_removeAttribute",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=t?"normal":"low";return!("low"==r&&"normal"==this._attributePriority.get(e)||(this._attributePriority.set(e,r),!c(D(n.prototype),"hasAttribute",this).call(this,e)||(this._attrs.delete(e),0)))}},{key:"_setAttributesTo",value:function(e){var t,n=new Set,r=d(this.getAttributes());try{for(r.s();!(t=r.n()).done;){var i=u(t.value,2),o=i[0],a=i[1];e.get(o)!==a&&this._removeAttribute(o,!1)}}catch(e){r.e(e)}finally{r.f()}var s,l=d(e);try{for(l.s();!(s=l.n()).done;){var c=u(s.value,2),h=c[0],f=c[1];this._setAttribute(h,f,!1)&&n.add(h)}}catch(e){l.e(e)}finally{l.f()}return n}},{key:"_getStoredAttributes",value:o.a.mark((function e(){var t,n,r,i,a;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.getFirstPosition().parent,!this.isCollapsed||!t.isEmpty){e.next=21;break}n=d(t.getAttributeKeys()),e.prev=3,n.s();case 5:if((r=n.n()).done){e.next=13;break}if(!(i=r.value).startsWith(ya)){e.next=11;break}return a=i.substr(ya.length),e.next=11,[a,t.getAttribute(i)];case 11:e.next=5;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(3),n.e(e.t0);case 18:return e.prev=18,n.f(),e.finish(18);case 21:case"end":return e.stop()}}),e,this,[[3,15,18,21]])}))},{key:"_getSurroundingAttributes",value:function(){var e=this.getFirstPosition(),t=this._model.schema,n=null;if(this.isCollapsed){var r=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(n=Aa(r)),n||(n=Aa(i)),!this.isGravityOverridden&&!n)for(var o=r;o&&!t.isInline(o)&&!n;)n=Aa(o=o.previousSibling);if(!n)for(var a=i;a&&!t.isInline(a)&&!n;)n=Aa(a=a.nextSibling);n||(n=this._getStoredAttributes())}else{var s,l=d(this.getFirstRange());try{for(l.s();!(s=l.n()).done;){var c=s.value;if(c.item.is("element")&&t.isObject(c.item))break;if("text"==c.type){n=c.item.getAttributes();break}}}catch(e){l.e(e)}finally{l.f()}}return n}},{key:"_fixGraveyardSelection",value:function(e){var t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}},{key:"isCollapsed",get:function(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:c(D(n.prototype),"isCollapsed",this)}},{key:"anchor",get:function(){return c(D(n.prototype),"anchor",this)||this._document._getDefaultRange().start}},{key:"focus",get:function(){return c(D(n.prototype),"focus",this)||this._document._getDefaultRange().end}},{key:"rangeCount",get:function(){return this._ranges.length?this._ranges.length:1}},{key:"hasOwnRange",get:function(){return this._ranges.length>0}},{key:"isGravityOverridden",get:function(){return!!this._overriddenGravityRegister.size}}]),n}(ha);function Aa(e){return e instanceof Qo||e instanceof Yo?e.getAttributes():null}var _a=function(){function e(t){m(this,e),this._dispatchers=t}return p(e,[{key:"add",value:function(e){var t,n=d(this._dispatchers);try{for(n.s();!(t=n.n()).done;){e(t.value)}}catch(e){n.e(e)}finally{n.f()}return this}}]),e}(),xa=function(e){return Rt(e,5)},Da=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"elementToElement",value:function(e){return this.add(function(e){return(e=xa(e)).view=Ma(e.view,"container"),function(t){var n;if(t.on("insert:"+e.model,(n=e.view,function(e,t,r){var i=n(t.item,r);if(i&&r.consumable.consume(t.item,"insert")){var o=r.mapper.toViewPosition(t.range.start);r.mapper.bindElements(t.item,i),r.writer.insert(o,i)}}),{priority:e.converterPriority||"normal"}),e.triggerBy){if(e.triggerBy.attributes){var r,i=d(e.triggerBy.attributes);try{for(i.s();!(r=i.n()).done;){var o=r.value;t._mapReconversionTriggerEvent(e.model,"attribute:".concat(o,":").concat(e.model))}}catch(e){i.e(e)}finally{i.f()}}if(e.triggerBy.children){var a,s=d(e.triggerBy.children);try{for(s.s();!(a=s.n()).done;){var l=a.value;t._mapReconversionTriggerEvent(e.model,"insert:"+l),t._mapReconversionTriggerEvent(e.model,"remove:"+l)}}catch(e){s.e(e)}finally{s.f()}}}}}(e))}},{key:"attributeToElement",value:function(e){return this.add(function(e){var t="attribute:"+((e=xa(e)).model.key?e.model.key:e.model);if(e.model.name&&(t+=":"+e.model.name),e.model.values){var n,r=d(e.model.values);try{for(r.s();!(n=r.n()).done;){var i=n.value;e.view[i]=Ma(e.view[i],"attribute")}}catch(e){r.e(e)}finally{r.f()}}else e.view=Ma(e.view,"attribute");var o=Ta(e);return function(n){n.on(t,function(e){return function(t,n,r){var i=e(n.attributeOldValue,r),o=e(n.attributeNewValue,r);if((i||o)&&r.consumable.consume(n.item,t.name)){var a=r.writer,s=a.document.selection;if(n.item instanceof ha||n.item instanceof wa)a.wrap(s.getFirstRange(),o);else{var l=r.mapper.toViewRange(n.range);null!==n.attributeOldValue&&i&&(l=a.unwrap(l,i)),null!==n.attributeNewValue&&o&&a.wrap(l,o)}}}}(o),{priority:e.converterPriority||"normal"})}}(e))}},{key:"attributeToAttribute",value:function(e){return this.add(function(e){var t="attribute:"+((e=xa(e)).model.key?e.model.key:e.model);if(e.model.name&&(t+=":"+e.model.name),e.model.values){var n,r=d(e.model.values);try{for(r.s();!(n=r.n()).done;){var i=n.value;e.view[i]=Ia(e.view[i])}}catch(e){r.e(e)}finally{r.f()}}else e.view=Ia(e.view);var o=Ta(e);return function(n){var r;n.on(t,(r=o,function(e,t,n){var i=r(t.attributeOldValue,n),o=r(t.attributeNewValue,n);if((i||o)&&n.consumable.consume(t.item,e.name)){var a=n.mapper.toViewElement(t.item),s=n.writer;if(!a)throw new Qt.a("conversion-attribute-to-attribute-on-text",[t,n]);if(null!==t.attributeOldValue&&i)if("class"==i.key){var l,c=d(Array.isArray(i.value)?i.value:[i.value]);try{for(c.s();!(l=c.n()).done;){var u=l.value;s.removeClass(u,a)}}catch(e){c.e(e)}finally{c.f()}}else if("style"==i.key)for(var h=0,f=Object.keys(i.value);h1&&void 0!==arguments[1]?arguments[1]:null,n=null===t||function(e){return e.getAttribute(t)},r="object"!=E(e.model)?e.model:e.model.key,i="object"!=E(e.model)||void 0===e.model.value?n:e.model.value;e.model={key:r,value:i}}function Va(e,t){var n=new Cn(e.view);return function(r,i,o){var a=n.match(i.viewItem);if(a){var s=e.model.key,l="function"==typeof e.model.value?e.model.value(i.viewItem,o):e.model.value;null!==l&&(function(e,t){var n="function"==typeof e?e(t):e;return!("object"==E(n)&&!ja(n))&&(!n.classes&&!n.attributes&&!n.styles)}(e.view,i.viewItem)?a.match.name=!0:delete a.match.name,o.consumable.test(i.viewItem,a.match)&&(i.modelRange||(i=Object.assign(i,o.convertChildren(i.viewItem,i.modelCursor))),function(e,t,n,r){for(var i=!1,o=0,a=Array.from(e.getItems({shallow:n}));o1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:null;if(e instanceof ea){var n=e.nodeBefore,r=e.nodeAfter;if(!(n instanceof Zo))throw new Qt.a("schema-check-merge-no-element-before",this);if(!(r instanceof Zo))throw new Qt.a("schema-check-merge-no-element-after",this);return this.checkMerge(n,r)}var i,o=d(t.getChildren());try{for(o.s();!(i=o.n()).done;){var a=i.value;if(!this.checkChild(e,a))return!1}}catch(e){o.e(e)}finally{o.f()}return!0}},{key:"addChildCheck",value:function(e){this.on("checkChild",(function(t,n){var r=u(n,2),i=r[0],o=r[1];if(o){var a=e(i,o);"boolean"==typeof a&&(t.stop(),t.return=a)}}),{priority:"high"})}},{key:"addAttributeCheck",value:function(e){this.on("checkAttribute",(function(t,n){var r=u(n,2),i=r[0],o=r[1],a=e(i,o);"boolean"==typeof a&&(t.stop(),t.return=a)}),{priority:"high"})}},{key:"setAttributeProperties",value:function(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}},{key:"getAttributeProperties",value:function(e){return this._attributeProperties[e]||{}}},{key:"getLimitElement",value:function(e){var t;for(t=e instanceof ea?e.parent:(e instanceof ia?[e]:Array.from(e.getRanges())).reduce((function(e,t){var n=t.getCommonAncestor();return e?e.getCommonAncestor(n,{includeSelf:!0}):n}),null);!this.isLimit(t)&&t.parent;)t=t.parent;return t}},{key:"checkAttributeInSelection",value:function(e,t){if(e.isCollapsed){var n=[].concat(h(e.getFirstPosition().getAncestors()),[new Yo("",e.getAttributes())]);return this.checkAttribute(n,t)}var r,i=d(e.getRanges());try{for(i.s();!(r=i.n()).done;){var o,a=d(r.value);try{for(a.s();!(o=a.n()).done;){var s=o.value;if(this.checkAttribute(s.item,t))return!0}}catch(e){a.e(e)}finally{a.f()}}}catch(e){i.e(e)}finally{i.f()}return!1}},{key:"getValidRanges",value:o.a.mark((function e(t,n){var r,i,a;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=o.a.mark((function e(t){var n,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=d(t),e.prev=1,n.s();case 3:if((r=n.n()).done){e.next=8;break}return i=r.value,e.delegateYield(i.getMinimalFlatRanges(),"t0",6);case 6:e.next=3;break;case 8:e.next=13;break;case 10:e.prev=10,e.t1=e.catch(1),n.e(e.t1);case 13:return e.prev=13,n.f(),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])}))(t),r=d(t),e.prev=2,r.s();case 4:if((i=r.n()).done){e.next=9;break}return a=i.value,e.delegateYield(this._getValidRangesForRange(a,n),"t0",7);case 7:e.next=4;break;case 9:e.next=14;break;case 11:e.prev=11,e.t1=e.catch(2),r.e(e.t1);case 14:return e.prev=14,r.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[2,11,14,17]])}))},{key:"getNearestSelectionRange",value:function(e){var t,n,r=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"both";if(this.checkChild(e,"$text"))return new ia(e);var a=e.getAncestors().reverse().find((function(e){return r.isLimit(e)}))||e.root;"both"!=i&&"backward"!=i||(t=new Jo({boundaries:ia._createIn(a),startPosition:e,direction:"backward"})),"both"!=i&&"forward"!=i||(n=new Jo({boundaries:ia._createIn(a),startPosition:e}));var s,l=d(o.a.mark((function e(t,n){var r,i,a;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=!1;case 1:if(r){e.next=18;break}if(r=!0,!t){e.next=9;break}if(i=t.next(),e.t0=i.done,e.t0){e.next=9;break}return r=!1,e.next=9,{walker:t,value:i.value};case 9:if(!n){e.next=16;break}if(a=n.next(),e.t1=a.done,e.t1){e.next=16;break}return r=!1,e.next=16,{walker:n,value:a.value};case 16:e.next=1;break;case 18:case"end":return e.stop()}}),e)}))(t,n));try{for(l.s();!(s=l.n()).done;){var c=s.value,u=c.walker==t?"elementEnd":"elementStart",h=c.value;if(h.type==u&&this.isObject(h.item))return ia._createOn(h.item);if(this.checkChild(h.nextPosition,"$text"))return new ia(h.nextPosition)}}catch(e){l.e(e)}finally{l.f()}return null}},{key:"findAllowedParent",value:function(e,t){for(var n=e.parent;n;){if(this.checkChild(n,t))return n;if(this.isLimit(n))return null;n=n.parent}return null}},{key:"removeDisallowedAttributes",value:function(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.is("$text"))os(this,i,t);else{var o,a=d(ia._createIn(i).getPositions());try{for(a.s();!(o=a.n()).done;){var s=o.value;os(this,s.nodeBefore||s.parent,t)}}catch(e){a.e(e)}finally{a.f()}}}}catch(e){r.e(e)}finally{r.f()}}},{key:"createContext",value:function(e){return new Ya(e)}},{key:"_clearCache",value:function(){this._compiledDefinitions=null}},{key:"_compile",value:function(){for(var e={},t=this._sourceDefinitions,n=Object.keys(t),r=0,i=n;r2&&void 0!==arguments[2]?arguments[2]:t.length-1,r=t.getItem(n);if(e.allowIn.includes(r.name)){if(0==n)return!0;var i=this.getDefinition(r);return this._checkContextMatch(i,t,n-1)}return!1}},{key:"_getValidRangesForRange",value:o.a.mark((function e(t,n){var r,i,a,s,l;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.start,i=t.start,a=d(t.getItems({shallow:!0})),e.prev=2,a.s();case 4:if((s=a.n()).done){e.next=19;break}if(l=s.value,e.t0=l.is("element"),!e.t0){e.next=9;break}return e.delegateYield(this._getValidRangesForRange(ia._createIn(l),n),"t1",9);case 9:if(e.t2=this.checkAttribute(l,n),e.t2){e.next=16;break}if(e.t3=r.isEqual(i),e.t3){e.next=15;break}return e.next=15,new ia(r,i);case 15:r=ea._createAfter(l);case 16:i=ea._createAfter(l);case 17:e.next=4;break;case 19:e.next=24;break;case 21:e.prev=21,e.t4=e.catch(2),a.e(e.t4);case 24:return e.prev=24,a.f(),e.finish(24);case 27:if(e.t5=r.isEqual(i),e.t5){e.next=31;break}return e.next=31,new ia(r,i);case 31:case"end":return e.stop()}}),e,this,[[2,21,24,27]])}))}]),e}();ln(qa,vr);var Ya=function(){function e(t){if(m(this,e),t instanceof e)return t;"string"==typeof t?t=[t]:Array.isArray(t)||(t=t.getAncestors({includeSelf:!0})),t[0]&&"string"!=typeof t[0]&&t[0].is("documentFragment")&&t.shift(),this._items=t.map(is)}return p(e,[{key:Symbol.iterator,value:function(){return this._items[Symbol.iterator]()}},{key:"push",value:function(t){var n=new e([t]);return n._items=[].concat(h(this._items),h(n._items)),n}},{key:"getItem",value:function(e){return this._items[e]}},{key:"getNames",value:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this._items.map((function(e){return e.name})),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:"endsWith",value:function(e){return Array.from(this.getNames()).join(" ").endsWith(e)}},{key:"startsWith",value:function(e){return Array.from(this.getNames()).join(" ").startsWith(e)}},{key:"length",get:function(){return this._items.length}},{key:"last",get:function(){return this._items[this._items.length-1]}}]),e}();function Qa(e,t){var n={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],inheritTypesFrom:[]};return function(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i,o=n.value,a=d(Object.keys(o).filter((function(e){return e.startsWith("is")})));try{for(a.s();!(i=a.n()).done;){var s=i.value;t[s]=o[s]}}catch(e){a.e(e)}finally{a.f()}}}catch(e){r.e(e)}finally{r.f()}}(e,n),ns(e,n,"allowIn"),ns(e,n,"allowContentOf"),ns(e,n,"allowWhere"),ns(e,n,"allowAttributes"),ns(e,n,"allowAttributesOf"),ns(e,n,"inheritTypesFrom"),function(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value.inheritAllFrom;i&&(t.allowContentOf.push(i),t.allowWhere.push(i),t.allowAttributesOf.push(i),t.inheritTypesFrom.push(i))}}catch(e){r.e(e)}finally{r.f()}}(e,n),n}function $a(e,t){var n,r=d(e[t].allowContentOf);try{for(r.s();!(n=r.n()).done;){var i=n.value;e[i]&&rs(e,i).forEach((function(e){e.allowIn.push(t)}))}}catch(e){r.e(e)}finally{r.f()}delete e[t].allowContentOf}function Za(e,t){var n,r=d(e[t].allowWhere);try{for(r.s();!(n=r.n()).done;){var i=e[n.value];if(i){var o,a=i.allowIn;(o=e[t].allowIn).push.apply(o,h(a))}}}catch(e){r.e(e)}finally{r.f()}delete e[t].allowWhere}function Ja(e,t){var n,r=d(e[t].allowAttributesOf);try{for(r.s();!(n=r.n()).done;){var i=e[n.value];if(i){var o,a=i.allowAttributes;(o=e[t].allowAttributes).push.apply(o,h(a))}}}catch(e){r.e(e)}finally{r.f()}delete e[t].allowAttributesOf}function Xa(e,t){var n,r=e[t],i=d(r.inheritTypesFrom);try{for(i.s();!(n=i.n()).done;){var o=e[n.value];if(o){var a,s=d(Object.keys(o).filter((function(e){return e.startsWith("is")})));try{for(s.s();!(a=s.n()).done;){var l=a.value;l in r||(r[l]=o[l])}}catch(e){s.e(e)}finally{s.f()}}}}catch(e){i.e(e)}finally{i.f()}delete r.inheritTypesFrom}function es(e,t){var n=e[t],r=n.allowIn.filter((function(t){return e[t]}));n.allowIn=Array.from(new Set(r))}function ts(e,t){var n=e[t];n.allowAttributes=Array.from(new Set(n.allowAttributes))}function ns(e,t,n){var r,i=d(e);try{for(i.s();!(r=i.n()).done;){var o,a=r.value;"string"==typeof a[n]?t[n].push(a[n]):Array.isArray(a[n])&&(o=t[n]).push.apply(o,h(a[n]))}}catch(e){i.e(e)}finally{i.f()}}function rs(e,t){var n,r=e[t];return(n=e,Object.keys(n).map((function(e){return n[e]}))).filter((function(e){return e.allowIn.includes(r.name)}))}function is(e){return"string"==typeof e?{name:e,getAttributeKeys:o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})),getAttribute:function(){}}:{name:e.is("element")?e.name:"$text",getAttributeKeys:o.a.mark((function t(){return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(e.getAttributeKeys(),"t0",1);case 1:case"end":return t.stop()}}),t)})),getAttribute:function(t){return e.getAttribute(t)}}}function os(e,t,n){var r,i=d(t.getAttributeKeys());try{for(i.s();!(r=i.n()).done;){var o=r.value;e.checkAttribute(t,o)||n.removeAttribute(o,t)}}catch(e){i.e(e)}finally{i.f()}}var as=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};m(this,e),this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},t),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.safeInsert=this._safeInsert.bind(this),this.conversionApi.updateConversionResult=this._updateConversionResult.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}return p(e,[{key:"convert",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["$root"];this.fire("viewCleanup",e),this._modelCursor=function(e,t){var n,r,i=d(new Ya(e));try{for(i.s();!(r=i.n()).done;){var o,a=r.value,s={},l=d(a.getAttributeKeys());try{for(l.s();!(o=l.n()).done;){var c=o.value;s[c]=a.getAttribute(c)}}catch(e){l.e(e)}finally{l.f()}var u=t.createElement(a.name,s);n&&t.append(u,n),n=ea._createAt(u,0)}}catch(e){i.e(e)}finally{i.f()}return n}(n,t),this.conversionApi.writer=t,this.conversionApi.consumable=Wa.createFrom(e),this.conversionApi.store={};var r=this._convertItem(e,this._modelCursor),i=r.modelRange,o=t.createDocumentFragment();if(i){this._removeEmptyElements();for(var a=0,s=Array.from(this._modelCursor.parent.getChildren());a0&&void 0!==arguments[0]?arguments[0]:{},t=e.rootName,n=void 0===t?"main":t,r=e.trim,i=void 0===r?"empty":r;if(!this._checkIfRootsExists([n]))throw new Qt.a("datacontroller-get-non-existent-root",this);var o=this.model.document.getRoot(n);return"empty"!==i||this.model.hasContent(o,{ignoreWhitespaces:!0})?this.stringify(o,e):""}},{key:"stringify",value:function(e,t){var n=this.toView(e,t);return this.processor.toData(n)}},{key:"toView",value:function(e,t){var n=this.viewDocument,r=this._viewWriter;this.mapper.clearBindings();var i=ia._createIn(e),o=new ii(n);if(this.mapper.bindElements(e,o),this.downcastDispatcher.conversionApi.options=t,this.downcastDispatcher.convertInsert(i,r),!e.is("documentFragment")){var a,s=function(e){var t=[],n=e.root.document;if(!n)return[];var r,i=ia._createIn(e),o=d(n.model.markers);try{for(o.s();!(r=o.n()).done;){var a=r.value,s=i.getIntersection(a.getRange());s&&t.push([a.name,s])}}catch(e){o.e(e)}finally{o.f()}return t}(e),l=d(s);try{for(l.s();!(a=l.n()).done;){var c=u(a.value,2),h=c[0],f=c[1];this.downcastDispatcher.convertMarkerAdd(h,f,r)}}catch(e){l.e(e)}finally{l.f()}}return delete this.downcastDispatcher.conversionApi.options,o}},{key:"init",value:function(e){var t=this;if(this.model.document.version)throw new Qt.a("datacontroller-init-document-not-empty",this);var n={};if("string"==typeof e?n.main=e:n=e,!this._checkIfRootsExists(Object.keys(n)))throw new Qt.a("datacontroller-init-non-existent-root",this);return this.model.enqueueChange("transparent",(function(e){for(var r=0,i=Object.keys(n);r1&&void 0!==arguments[1]?arguments[1]:"$root",n=this.processor.toView(e);return this.toModel(n,t)}},{key:"toModel",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$root";return this.model.change((function(r){return t.upcastDispatcher.convert(e,r,n)}))}},{key:"addStyleProcessorRules",value:function(e){e(this.stylesProcessor)}},{key:"destroy",value:function(){this.stopListening()}},{key:"_checkIfRootsExists",value:function(e){var t,n=d(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(!this.model.document.getRootNames().includes(r))return!1}}catch(e){n.e(e)}finally{n.f()}return!0}}]),e}();ln(ss,vr);var ls=function(){function e(t,n){m(this,e),this._helpers=new Map,this._downcast=Array.isArray(t)?t:[t],this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Array.isArray(n)?n:[n],this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}return p(e,[{key:"addAlias",value:function(e,t){var n=this._downcast.includes(t);if(!this._upcast.includes(t)&&!n)throw new Qt.a("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:n})}},{key:"for",value:function(e){if(!this._helpers.has(e))throw new Qt.a("conversion-for-unknown-group",this);return this._helpers.get(e)}},{key:"elementToElement",value:function(e){this.for("downcast").elementToElement(e);var t,n=d(cs(e));try{for(n.s();!(t=n.n()).done;){var r=t.value,i=r.model,o=r.view;this.for("upcast").elementToElement({model:i,view:o,converterPriority:e.converterPriority})}}catch(e){n.e(e)}finally{n.f()}}},{key:"attributeToElement",value:function(e){this.for("downcast").attributeToElement(e);var t,n=d(cs(e));try{for(n.s();!(t=n.n()).done;){var r=t.value,i=r.model,o=r.view;this.for("upcast").elementToAttribute({view:o,model:i,converterPriority:e.converterPriority})}}catch(e){n.e(e)}finally{n.f()}}},{key:"attributeToAttribute",value:function(e){this.for("downcast").attributeToAttribute(e);var t,n=d(cs(e));try{for(n.s();!(t=n.n()).done;){var r=t.value,i=r.model,o=r.view;this.for("upcast").attributeToAttribute({view:o,model:i})}}catch(e){n.e(e)}finally{n.f()}}},{key:"_createConversionHelpers",value:function(e){var t=e.name,n=e.dispatchers,r=e.isDowncast;if(this._helpers.has(t))throw new Qt.a("conversion-group-exists",this);var i=r?new Da(n):new Oa(n);this._helpers.set(t,i)}}]),e}();function cs(e){var t,n,i,a,s,l;return o.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.model.values){r.next=20;break}t=d(e.model.values),r.prev=2,t.s();case 4:if((n=t.n()).done){r.next=10;break}return i=n.value,a={key:e.model.key,value:i},s=e.view[i],l=e.upcastAlso?e.upcastAlso[i]:void 0,r.delegateYield(us(a,s,l),"t0",8);case 8:r.next=4;break;case 10:r.next=15;break;case 12:r.prev=12,r.t1=r.catch(2),t.e(r.t1);case 15:return r.prev=15,t.f(),r.finish(15);case 18:r.next=21;break;case 20:return r.delegateYield(us(e.model,e.view,e.upcastAlso),"t2",21);case 21:case"end":return r.stop()}}),r,null,[[2,12,15,18]])}function us(e,t,n){var r,a,s;return o.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,{model:e,view:t};case 2:if(!n){i.next=21;break}n=Array.isArray(n)?n:[n],r=d(n),i.prev=5,r.s();case 7:if((a=r.n()).done){i.next=13;break}return s=a.value,i.next=11,{model:e,view:s};case 11:i.next=7;break;case 13:i.next=18;break;case 15:i.prev=15,i.t0=i.catch(5),r.e(i.t0);case 18:return i.prev=18,r.f(),i.finish(18);case 21:case"end":return i.stop()}}),i,null,[[5,15,18,21]])}var ds=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";m(this,e),this.operations=[],this.type=t}return p(e,[{key:"addOperation",value:function(e){return e.batch=this,this.operations.push(e),e}},{key:"baseVersion",get:function(){var e,t=d(this.operations);try{for(t.s();!(e=t.n()).done;){var n=e.value;if(null!==n.baseVersion)return n.baseVersion}}catch(e){t.e(e)}finally{t.f()}return null}}]),e}(),hs=function(){function e(t){m(this,e),this.baseVersion=t,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}return p(e,[{key:"_validate",value:function(){}},{key:"toJSON",value:function(){var e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}}],[{key:"fromJSON",value:function(e){return new this(e.baseVersion)}},{key:"className",get:function(){return"Operation"}}]),e}(),fs=function(){function e(t){m(this,e),this.markers=new Map,this._children=new $o,t&&this._insertChild(0,t)}return p(e,[{key:Symbol.iterator,value:function(){return this.getChildren()}},{key:"is",value:function(e){return"documentFragment"===e||"model:documentFragment"===e}},{key:"getChild",value:function(e){return this._children.getNode(e)}},{key:"getChildren",value:function(){return this._children[Symbol.iterator]()}},{key:"getChildIndex",value:function(e){return this._children.getNodeIndex(e)}},{key:"getChildStartOffset",value:function(e){return this._children.getNodeStartOffset(e)}},{key:"getPath",value:function(){return[]}},{key:"getNodeByPath",value:function(e){var t,n=this,r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value;n=n.getChild(n.offsetToIndex(i))}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"offsetToIndex",value:function(e){return this._children.offsetToIndex(e)}},{key:"toJSON",value:function(){var e,t=[],n=d(this._children);try{for(n.s();!(e=n.n()).done;){var r=e.value;t.push(r.toJSON())}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"_appendChild",value:function(e){this._insertChild(this.childCount,e)}},{key:"_insertChild",value:function(e,t){var n,r=function(e){return"string"==typeof e?[new Yo(e)]:(sn(e)||(e=[e]),Array.from(e).map((function(e){return"string"==typeof e?new Yo(e):e instanceof Qo?new Yo(e.data,e.getAttributes()):e})))}(t),i=d(r);try{for(i.s();!(n=i.n()).done;){var o=n.value;null!==o.parent&&o._remove(),o.parent=this}}catch(e){i.e(e)}finally{i.f()}this._children._insertNodes(e,r)}},{key:"_removeChildren",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=this._children._removeNodes(e,n),i=d(r);try{for(i.s();!(t=i.n()).done;){var o=t.value;o.parent=null}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"childCount",get:function(){return this._children.length}},{key:"maxOffset",get:function(){return this._children.maxOffset}},{key:"isEmpty",get:function(){return 0===this.childCount}},{key:"root",get:function(){return this}},{key:"parent",get:function(){return null}}],[{key:"fromJSON",value:function(t){var n,r=[],i=d(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;o.name?r.push(Zo.fromJSON(o)):r.push(Yo.fromJSON(o))}}catch(e){i.e(e)}finally{i.f()}return new e(r)}}]),e}();function gs(e,t){var n=(t=ps(t)).reduce((function(e,t){return e+t.offsetSize}),0),r=e.parent;bs(e);var i=e.index;return r._insertChild(i,t),ks(r,i+t.length),ks(r,i),new ia(e,e.getShiftedBy(n))}function ms(e){if(!e.isFlat)throw new Qt.a("operation-utils-remove-range-not-flat",this);var t=e.start.parent;bs(e.start),bs(e.end);var n=t._removeChildren(e.start.index,e.end.index-e.start.index);return ks(t,e.start.index),n}function vs(e,t){if(!e.isFlat)throw new Qt.a("operation-utils-move-range-not-flat",this);var n=ms(e);return gs(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),n)}function ps(e){var t=[];e instanceof Array||(e=[e]);for(var n=0;ne.maxOffset)throw new Qt.a("move-operation-nodes-do-not-exist",this);if(e===t&&n=n&&this.targetPosition.path[i]2&&void 0!==arguments[2]?arguments[2]:"main";return m(this,n),(i=t.call(this,r))._document=e,i.rootName=o,i}return p(n,[{key:"is",value:function(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e}},{key:"toJSON",value:function(){return this.rootName}},{key:"document",get:function(){return this._document}}]),n}(Zo),Bs=function(){function e(t,n){m(this,e),this.model=t,this.batch=n}return p(e,[{key:"createText",value:function(e,t){return new Yo(e,t)}},{key:"createElement",value:function(e,t){return new Zo(e,t)}},{key:"createDocumentFragment",value:function(){return new fs}},{key:"cloneElement",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e._clone(t)}},{key:"insert",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this._assertWriterUsedCorrectly(),!(e instanceof Yo&&""==e.data)){var r=ea._createAt(t,n);if(e.parent){if(zs(e.root,r.root))return void this.move(ia._createOn(e),r);if(e.root.document)throw new Qt.a("model-writer-insert-forbidden-move",this);this.remove(e)}var i=r.root.document?r.root.document.version:null,o=new xs(r,e,i);if(e instanceof Yo&&(o.shouldReceiveAttributes=!0),this.batch.addOperation(o),this.model.applyOperation(o),e instanceof fs){var a,s=d(e.markers);try{for(s.s();!(a=s.n()).done;){var l=u(a.value,2),c=l[0],h=l[1],f=ea._createAt(h.root,0),g={range:new ia(h.start._getCombined(f,r),h.end._getCombined(f,r)),usingOperation:!0,affectsData:!0};this.model.markers.has(c)?this.updateMarker(c,g):this.addMarker(c,g)}}catch(e){s.e(e)}finally{s.f()}}}}},{key:"insertText",value:function(e,t,n,r){t instanceof fs||t instanceof Zo||t instanceof ea?this.insert(this.createText(e),t,n):this.insert(this.createText(e,t),n,r)}},{key:"insertElement",value:function(e,t,n,r){t instanceof fs||t instanceof Zo||t instanceof ea?this.insert(this.createElement(e),t,n):this.insert(this.createElement(e,t),n,r)}},{key:"append",value:function(e,t){this.insert(e,t,"end")}},{key:"appendText",value:function(e,t,n){t instanceof fs||t instanceof Zo?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),n,"end")}},{key:"appendElement",value:function(e,t,n){t instanceof fs||t instanceof Zo?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),n,"end")}},{key:"setAttribute",value:function(e,t,n){if(this._assertWriterUsedCorrectly(),n instanceof ia){var r,i=d(n.getMinimalFlatRanges());try{for(i.s();!(r=i.n()).done;){Ns(this,e,t,r.value)}}catch(e){i.e(e)}finally{i.f()}}else Ps(this,e,t,n)}},{key:"setAttributes",value:function(e,t){var n,r=d(wn(e));try{for(r.s();!(n=r.n()).done;){var i=u(n.value,2),o=i[0],a=i[1];this.setAttribute(o,a,t)}}catch(e){r.e(e)}finally{r.f()}}},{key:"removeAttribute",value:function(e,t){if(this._assertWriterUsedCorrectly(),t instanceof ia){var n,r=d(t.getMinimalFlatRanges());try{for(r.s();!(n=r.n()).done;){Ns(this,e,null,n.value)}}catch(e){r.e(e)}finally{r.f()}}else Ps(this,e,null,t)}},{key:"clearAttributes",value:function(e){var t=this;this._assertWriterUsedCorrectly();var n=function(e){var n,r=d(e.getAttributeKeys());try{for(r.s();!(n=r.n()).done;){var i=n.value;t.removeAttribute(i,e)}}catch(e){r.e(e)}finally{r.f()}};if(e instanceof ia){var r,i=d(e.getItems());try{for(i.s();!(r=i.n()).done;){n(r.value)}}catch(e){i.e(e)}finally{i.f()}}else n(e)}},{key:"move",value:function(e,t,n){if(this._assertWriterUsedCorrectly(),!(e instanceof ia))throw new Qt.a("writer-move-invalid-range",this);if(!e.isFlat)throw new Qt.a("writer-move-range-not-flat",this);var r=ea._createAt(t,n);if(!r.isEqual(e.start)){if(this._addOperationForAffectedMarkers("move",e),!zs(e.root,r.root))throw new Qt.a("writer-move-different-document",this);var i=e.root.document?e.root.document.version:null,o=new _s(e.start,e.end.offset-e.start.offset,r,i);this.batch.addOperation(o),this.model.applyOperation(o)}}},{key:"remove",value:function(e){this._assertWriterUsedCorrectly();var t,n=d((e instanceof ia?e:ia._createOn(e)).getMinimalFlatRanges().reverse());try{for(n.s();!(t=n.n()).done;){var r=t.value;this._addOperationForAffectedMarkers("move",r),Os(r.start,r.end.offset-r.start.offset,this.batch,this.model)}}catch(e){n.e(e)}finally{n.f()}}},{key:"merge",value:function(e){this._assertWriterUsedCorrectly();var t=e.nodeBefore,n=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof Zo))throw new Qt.a("writer-merge-no-element-before",this);if(!(n instanceof Zo))throw new Qt.a("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}},{key:"createPositionFromPath",value:function(e,t,n){return this.model.createPositionFromPath(e,t,n)}},{key:"createPositionAt",value:function(e,t){return this.model.createPositionAt(e,t)}},{key:"createPositionAfter",value:function(e){return this.model.createPositionAfter(e)}},{key:"createPositionBefore",value:function(e){return this.model.createPositionBefore(e)}},{key:"createRange",value:function(e,t){return this.model.createRange(e,t)}},{key:"createRangeIn",value:function(e){return this.model.createRangeIn(e)}},{key:"createRangeOn",value:function(e){return this.model.createRangeOn(e)}},{key:"createSelection",value:function(e,t,n){return this.model.createSelection(e,t,n)}},{key:"_mergeDetached",value:function(e){var t=e.nodeBefore,n=e.nodeAfter;this.move(ia._createIn(n),ea._createAt(t,"end")),this.remove(n)}},{key:"_merge",value:function(e){var t=ea._createAt(e.nodeBefore,"end"),n=ea._createAt(e.nodeAfter,0),r=e.root.document.graveyard,i=new ea(r,[0]),o=e.root.document.version,a=new Ms(n,e.nodeAfter.maxOffset,t,i,o);this.batch.addOperation(a),this.model.applyOperation(a)}},{key:"rename",value:function(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof Zo))throw new Qt.a("writer-rename-not-element-instance",this);var n=e.root.document?e.root.document.version:null,r=new Es(ea._createBefore(e),e.name,t,n);this.batch.addOperation(r),this.model.applyOperation(r)}},{key:"split",value:function(e,t){this._assertWriterUsedCorrectly();var n,r,i=e.parent;if(!i.parent)throw new Qt.a("writer-split-element-no-parent",this);if(t||(t=i.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new Qt.a("writer-split-invalid-limit-element",this);do{var o=i.root.document?i.root.document.version:null,a=i.maxOffset-e.offset,s=new Ts(e,a,null,o);this.batch.addOperation(s),this.model.applyOperation(s),n||r||(n=i,r=e.parent.nextSibling),i=(e=this.createPositionAfter(e.parent)).parent}while(i!==t);return{position:e,range:new ia(ea._createAt(n,"end"),ea._createAt(r,0))}}},{key:"wrap",value:function(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new Qt.a("writer-wrap-range-not-flat",this);var n=t instanceof Zo?t:new Zo(t);if(n.childCount>0)throw new Qt.a("writer-wrap-element-not-empty",this);if(null!==n.parent)throw new Qt.a("writer-wrap-element-attached",this);this.insert(n,e.start);var r=new ia(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(r,ea._createAt(n,0))}},{key:"unwrap",value:function(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new Qt.a("writer-unwrap-element-no-parent",this);this.move(ia._createIn(e),this.createPositionAfter(e)),this.remove(e)}},{key:"addMarker",value:function(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new Qt.a("writer-addmarker-no-usingoperation",this);var n=t.usingOperation,r=t.range,i=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new Qt.a("writer-addmarker-marker-exists",this);if(!r)throw new Qt.a("writer-addmarker-no-range",this);return n?(Ls(this,e,null,r,i),this.model.markers.get(e)):this.model.markers._set(e,r,n,i)}},{key:"updateMarker",value:function(e,t){this._assertWriterUsedCorrectly();var n="string"==typeof e?e:e.name,r=this.model.markers.get(n);if(!r)throw new Qt.a("writer-updatemarker-marker-not-exists",this);if(t){var i="boolean"==typeof t.usingOperation,o="boolean"==typeof t.affectsData,a=o?t.affectsData:r.affectsData;if(!i&&!t.range&&!o)throw new Qt.a("writer-updatemarker-wrong-options",this);var s=r.getRange(),l=t.range?t.range:s;i&&t.usingOperation!==r.managedUsingOperations?t.usingOperation?Ls(this,n,null,l,a):(Ls(this,n,s,null,a),this.model.markers._set(n,l,void 0,a)):r.managedUsingOperations?Ls(this,n,s,l,a):this.model.markers._set(n,l,void 0,a)}else this.model.markers._refresh(r)}},{key:"removeMarker",value:function(e){this._assertWriterUsedCorrectly();var t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new Qt.a("writer-removemarker-no-marker",this);var n=this.model.markers.get(t);n.managedUsingOperations?Ls(this,t,n.getRange(),null,n.affectsData):this.model.markers._remove(t)}},{key:"setSelection",value:function(e,t,n){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(e,t,n)}},{key:"setSelectionFocus",value:function(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}},{key:"setSelectionAttribute",value:function(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else{var n,r=d(wn(e));try{for(r.s();!(n=r.n()).done;){var i=u(n.value,2),o=i[0],a=i[1];this._setSelectionAttribute(o,a)}}catch(e){r.e(e)}finally{r.f()}}}},{key:"removeSelectionAttribute",value:function(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else{var t,n=d(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this._removeSelectionAttribute(r)}}catch(e){n.e(e)}finally{n.f()}}}},{key:"overrideSelectionGravity",value:function(){return this.model.document.selection._overrideGravity()}},{key:"restoreSelectionGravity",value:function(e){this.model.document.selection._restoreGravity(e)}},{key:"_setSelectionAttribute",value:function(e,t){var n=this.model.document.selection;if(n.isCollapsed&&n.anchor.parent.isEmpty){var r=wa._getStoreAttributeKey(e);this.setAttribute(r,t,n.anchor.parent)}n._setAttribute(e,t)}},{key:"_removeSelectionAttribute",value:function(e){var t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){var n=wa._getStoreAttributeKey(e);this.removeAttribute(n,t.anchor.parent)}t._removeAttribute(e)}},{key:"_assertWriterUsedCorrectly",value:function(){if(this.model._currentWriter!==this)throw new Qt.a("writer-incorrect-use",this)}},{key:"_addOperationForAffectedMarkers",value:function(e,t){var n,r=d(this.model.markers);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.managedUsingOperations){var o=i.getRange(),a=!1;if("move"===e)a=t.containsPosition(o.start)||t.start.isEqual(o.start)||t.containsPosition(o.end)||t.end.isEqual(o.end);else{var s=t.nodeBefore,l=t.nodeAfter,c=o.start.parent==s&&o.start.isAtEnd,u=o.end.parent==l&&0==o.end.offset,h=o.end.nodeAfter==l,f=o.start.nodeAfter==l;a=c||u||h||f}a&&this.updateMarker(i.name,{range:o})}}}catch(e){r.e(e)}finally{r.f()}}}]),e}();function Ns(e,t,n,r){var i,o,a,s,l=e.model,c=l.document,u=r.start,h=d(r.getWalker({shallow:!0}));try{for(h.s();!(s=h.n()).done;){var f=s.value;a=f.item.getAttribute(t),i&&o!=a&&(o!=n&&g(),u=i),i=f.nextPosition,o=a}}catch(e){h.e(e)}finally{h.f()}function g(){var r=new ia(u,i),a=r.root.document?c.version:null,s=new Cs(r,t,o,n,a);e.batch.addOperation(s),l.applyOperation(s)}i instanceof ea&&i!=u&&o!=n&&g()}function Ps(e,t,n,r){var i,o,a=e.model,s=a.document,l=r.getAttribute(t);if(l!=n){if(r.root===r){var c=r.document?s.version:null;o=new Ss(r,t,l,n,c)}else{var u=(i=new ia(ea._createBefore(r),e.createPositionAfter(r))).root.document?s.version:null;o=new Cs(i,t,l,n,u)}e.batch.addOperation(o),a.applyOperation(o)}}function Ls(e,t,n,r,i){var o=e.model,a=o.document,s=new Ds(t,n,r,o.markers,i,a.version);e.batch.addOperation(s),o.applyOperation(s)}function Os(e,t,n,r){var i;if(e.root.document){var o=r.document,a=new ea(o.graveyard,[0]);i=new _s(e,t,a,o.version)}else i=new As(e,t);n.addOperation(i),r.applyOperation(i)}function zs(e,t){return e===t||e instanceof Is&&t instanceof Is}var js=function(){function e(t){m(this,e),this._markerCollection=t,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}return p(e,[{key:"refreshItem",value:function(e){if(!this._isInInsertedElement(e.parent)){this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize);var t,n=ia._createOn(e),r=d(this._markerCollection.getMarkersIntersectingRange(n));try{for(r.s();!(t=r.n()).done;){var i=t.value,o=i.getRange();this.bufferMarkerChange(i.name,o,o,i.affectsData)}}catch(e){r.e(e)}finally{r.f()}this._cachedChanges=null}}},{key:"bufferOperation",value:function(e){switch(e.type){case"insert":if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":var t,n=d(e.range.getItems({shallow:!0}));try{for(n.s();!(t=n.n()).done;){var r=t.value;this._isInInsertedElement(r.parent)||this._markAttribute(r)}}catch(e){n.e(e)}finally{n.f()}break;case"remove":case"move":case"reinsert":if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;var i=this._isInInsertedElement(e.sourcePosition.parent),o=this._isInInsertedElement(e.targetPosition.parent);i||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),o||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);break;case"rename":if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);var a,s=ia._createFromPositionAndShift(e.position,1),l=d(this._markerCollection.getMarkersIntersectingRange(s));try{for(l.s();!(a=l.n()).done;){var c=a.value,u=c.getRange();this.bufferMarkerChange(c.name,u,u,c.affectsData)}}catch(e){l.e(e)}finally{l.f()}break;case"split":var h=e.splitPosition.parent;this._isInInsertedElement(h)||this._markRemove(h,e.splitPosition.offset,e.howMany),this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1);break;case"merge":var f=e.sourcePosition.parent;this._isInInsertedElement(f.parent)||this._markRemove(f.parent,f.startOffset,1);var g=e.graveyardPosition.parent;this._markInsert(g,e.graveyardPosition.offset,1);var m=e.targetPosition.parent;this._isInInsertedElement(m)||this._markInsert(m,e.targetPosition.offset,f.maxOffset)}this._cachedChanges=null}},{key:"bufferMarkerChange",value:function(e,t,n,r){var i=this._changedMarkers.get(e);i?(i.newRange=n,i.affectsData=r,null==i.oldRange&&null==i.newRange&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{oldRange:t,newRange:n,affectsData:r})}},{key:"getMarkersToRemove",value:function(){var e,t=[],n=d(this._changedMarkers);try{for(n.s();!(e=n.n()).done;){var r=u(e.value,2),i=r[0],o=r[1];null!=o.oldRange&&t.push({name:i,range:o.oldRange})}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"getMarkersToAdd",value:function(){var e,t=[],n=d(this._changedMarkers);try{for(n.s();!(e=n.n()).done;){var r=u(e.value,2),i=r[0],o=r[1];null!=o.newRange&&t.push({name:i,range:o.newRange})}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"getChangedMarkers",value:function(){return Array.from(this._changedMarkers).map((function(e){return{name:e[0],data:{oldRange:e[1].oldRange,newRange:e[1].newRange}}}))}},{key:"hasDataChanges",value:function(){var e,t=d(this._changedMarkers);try{for(t.s();!(e=t.n()).done;){if(u(e.value,2)[1].affectsData)return!0}}catch(e){t.e(e)}finally{t.f()}return this._changesInElement.size>0}},{key:"getChanges",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{includeChangesInGraveyard:!1};if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();var t,n=[],r=d(this._changesInElement.keys());try{for(r.s();!(t=r.n()).done;){var i,o=t.value,a=this._changesInElement.get(o).sort((function(e,t){return e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offseti.offset){if(o>a){var g={type:"attribute",offset:a,howMany:o-a,count:this._changeCount++};this._handleChange(g,t),t.push(g)}e.nodesToHandle=i.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=i.offset&&e.offseta?(e.nodesToHandle=o-a,e.offset=a):e.nodesToHandle=0);if("remove"==i.type&&e.offseti.offset){var m={type:"attribute",offset:i.offset,howMany:o-i.offset,count:this._changeCount++};this._handleChange(m,t),t.push(m),e.nodesToHandle=i.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==i.type&&(e.offset>=i.offset&&o<=a?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=i.offset&&o>=a&&(i.howMany=0))}}}catch(e){r.e(e)}finally{r.f()}e.howMany=e.nodesToHandle,delete e.nodesToHandle}},{key:"_getInsertDiff",value:function(e,t,n){return{type:"insert",position:ea._createAt(e,t),name:n,length:1,changeCount:this._changeCount++}}},{key:"_getRemoveDiff",value:function(e,t,n){return{type:"remove",position:ea._createAt(e,t),name:n,length:1,changeCount:this._changeCount++}}},{key:"_getAttributesDiff",value:function(e,t,n){var r=[];n=new Map(n);var i,o=d(t);try{for(o.s();!(i=o.n()).done;){var a=u(i.value,2),s=a[0],l=a[1],c=n.has(s)?n.get(s):null;c!==l&&r.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:s,attributeOldValue:l,attributeNewValue:c,changeCount:this._changeCount++}),n.delete(s)}}catch(e){o.e(e)}finally{o.f()}var h,f=d(n);try{for(f.s();!(h=f.n()).done;){var g=u(h.value,2),m=g[0],v=g[1];r.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:m,attributeOldValue:null,attributeNewValue:v,changeCount:this._changeCount++})}}catch(e){f.e(e)}finally{f.f()}return r}},{key:"_isInInsertedElement",value:function(e){var t=e.parent;if(!t)return!1;var n=this._changesInElement.get(t),r=e.startOffset;if(n){var i,o=d(n);try{for(o.s();!(i=o.n()).done;){var a=i.value;if("insert"==a.type&&r>=a.offset&&ri){for(var l=0;l0&&void 0!==arguments[0]?arguments[0]:Number.NEGATIVE_INFINITY,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.POSITIVE_INFINITY,r=[],i=d(this._operations);try{for(i.s();!(e=i.n()).done;){var o=e.value;o.baseVersion>=t&&o.baseVersion0&&void 0!==arguments[0]?arguments[0]:"$root",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"main";if(this.roots.get(t))throw new Qt.a("model-document-createroot-name-exists",this,{name:t});var n=new Is(this,e,t);return this.roots.add(n),n}},{key:"destroy",value:function(){this.selection.destroy(),this.stopListening()}},{key:"getRoot",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"main";return this.roots.get(e)}},{key:"getRootNames",value:function(){return Array.from(this.roots,(function(e){return e.rootName})).filter((function(e){return e!=Ws}))}},{key:"registerPostFixer",value:function(e){this._postFixers.add(e)}},{key:"toJSON",value:function(){var e=pn(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}},{key:"_handleChangeBlock",value:function(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}},{key:"_hasDocumentChangedFromTheLastChangeBlock",value:function(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}},{key:"_getDefaultRoot",value:function(){var e,t=d(this.roots);try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n!==this.graveyard)return n}}catch(e){t.e(e)}finally{t.f()}return this.graveyard}},{key:"_getDefaultRange",value:function(){var e=this._getDefaultRoot(),t=this.model,n=t.schema,r=t.createPositionFromPath(e,[0]);return n.getNearestSelectionRange(r)||t.createRange(r)}},{key:"_validateSelectionRange",value:function(e){return qs(e.start)&&qs(e.end)}},{key:"_callPostFixers",value:function(e){var t=!1;do{var n,r=d(this._postFixers);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(this.selection.refresh(),t=i(e))break}}catch(e){r.e(e)}finally{r.f()}}while(t)}},{key:"graveyard",get:function(){return this.getRoot(Ws)}}]),e}();function qs(e){var t=e.textNode;if(t){var n=t.data,r=e.offset-t.startOffset;return!Hs(n,r)&&!Ks(n,r)}return!0}ln(Gs,Jt);var Ys=function(){function e(){m(this,e),this._markers=new Map}return p(e,[{key:Symbol.iterator,value:function(){return this._markers.values()}},{key:"has",value:function(e){return this._markers.has(e)}},{key:"get",value:function(e){return this._markers.get(e)||null}},{key:"_set",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=e instanceof Qs?e.name:e;if(i.includes(","))throw new Qt.a("markercollection-incorrect-marker-name",this);var o=this._markers.get(i);if(o){var a=o.getRange(),s=!1;return a.isEqual(t)||(o._attachLiveRange(pa.fromRange(t)),s=!0),n!=o.managedUsingOperations&&(o._managedUsingOperations=n,s=!0),"boolean"==typeof r&&r!=o.affectsData&&(o._affectsData=r,s=!0),s&&this.fire("update:"+i,o,a,t),o}var l=pa.fromRange(t),c=new Qs(i,l,n,r);return this._markers.set(i,c),this.fire("update:"+i,c,null,t),c}},{key:"_remove",value:function(e){var t=e instanceof Qs?e.name:e,n=this._markers.get(t);return!!n&&(this._markers.delete(t),this.fire("update:"+t,n,n.getRange(),null),this._destroyMarker(n),!0)}},{key:"_refresh",value:function(e){var t=e instanceof Qs?e.name:e,n=this._markers.get(t);if(!n)throw new Qt.a("markercollection-refresh-marker-not-exists",this);var r=n.getRange();this.fire("update:"+t,n,r,r,n.managedUsingOperations,n.affectsData)}},{key:"getMarkersAtPosition",value:o.a.mark((function e(t){var n,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=d(this),e.prev=1,n.s();case 3:if((r=n.n()).done){e.next=11;break}if(i=r.value,e.t0=i.getRange().containsPosition(t),!e.t0){e.next=9;break}return e.next=9,i;case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t1=e.catch(1),n.e(e.t1);case 16:return e.prev=16,n.f(),e.finish(16);case 19:case"end":return e.stop()}}),e,this,[[1,13,16,19]])}))},{key:"getMarkersIntersectingRange",value:o.a.mark((function e(t){var n,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=d(this),e.prev=1,n.s();case 3:if((r=n.n()).done){e.next=11;break}if(i=r.value,e.t0=null!==i.getRange().getIntersection(t),!e.t0){e.next=9;break}return e.next=9,i;case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t1=e.catch(1),n.e(e.t1);case 16:return e.prev=16,n.f(),e.finish(16);case 19:case"end":return e.stop()}}),e,this,[[1,13,16,19]])}))},{key:"destroy",value:function(){var e,t=d(this._markers.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._destroyMarker(n)}}catch(e){t.e(e)}finally{t.f()}this._markers=null,this.stopListening()}},{key:"getMarkersGroup",value:o.a.mark((function e(t){var n,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=d(this._markers.values()),e.prev=1,n.s();case 3:if((r=n.n()).done){e.next=11;break}if(i=r.value,e.t0=i.name.startsWith(t+":"),!e.t0){e.next=9;break}return e.next=9,i;case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t1=e.catch(1),n.e(e.t1);case 16:return e.prev=16,n.f(),e.finish(16);case 19:case"end":return e.stop()}}),e,this,[[1,13,16,19]])}))},{key:"_destroyMarker",value:function(e){e.stopListening(),e._detachLiveRange()}}]),e}();ln(Ys,Jt);var Qs=function(){function e(t,n,r,i){m(this,e),this.name=t,this._liveRange=this._attachLiveRange(n),this._managedUsingOperations=r,this._affectsData=i}return p(e,[{key:"getStart",value:function(){if(!this._liveRange)throw new Qt.a("marker-destroyed",this);return this._liveRange.start.clone()}},{key:"getEnd",value:function(){if(!this._liveRange)throw new Qt.a("marker-destroyed",this);return this._liveRange.end.clone()}},{key:"getRange",value:function(){if(!this._liveRange)throw new Qt.a("marker-destroyed",this);return this._liveRange.toRange()}},{key:"is",value:function(e){return"marker"===e||"model:marker"===e}},{key:"_attachLiveRange",value:function(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}},{key:"_detachLiveRange",value:function(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}},{key:"managedUsingOperations",get:function(){if(!this._liveRange)throw new Qt.a("marker-destroyed",this);return this._managedUsingOperations}},{key:"affectsData",get:function(){if(!this._liveRange)throw new Qt.a("marker-destroyed",this);return this._affectsData}}]),e}();ln(Qs,Jt);var $s=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"clone",value:function(){return new n(this.baseVersion)}},{key:"getReversed",value:function(){return new n(this.baseVersion+1)}},{key:"_execute",value:function(){}},{key:"type",get:function(){return"noop"}}],[{key:"className",get:function(){return"NoOperation"}}]),n}(hs),Zs={};Zs[Cs.className]=Cs,Zs[xs.className]=xs,Zs[Ds.className]=Ds,Zs[_s.className]=_s,Zs[$s.className]=$s,Zs[hs.className]=hs,Zs[Es.className]=Es,Zs[Ss.className]=Ss,Zs[Ts.className]=Ts,Zs[Ms.className]=Ms;var Js=function(e){k(n,e);var t=b(n);function n(e,r){var i,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"toNone";if(m(this,n),!(i=t.call(this,e,r,o)).root.is("rootElement"))throw new Qt.a("model-liveposition-root-not-rootelement",e);return Xs.call(w(i)),y(i)}return p(n,[{key:"detach",value:function(){this.stopListening()}},{key:"is",value:function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}},{key:"toPosition",value:function(){return new ea(this.root,this.path.slice(),this.stickiness)}}],[{key:"fromPosition",value:function(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}]),n}(ea);function Xs(){var e=this;this.listenTo(this.root.document.model,"applyOperation",(function(t,n){var r=n[0];r.isDocumentOperation&&el.call(e,r)}),{priority:"low"})}function el(e){var t=this.getTransformedByOperation(e);if(!this.isEqual(t)){var n=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",n)}}ln(Js,Jt);var tl=function(){function e(t,n,r){m(this,e),this.model=t,this.writer=n,this.position=r,this.canMergeWith=new Set([this.position.parent]),this.schema=t.schema,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}return p(e,[{key:"handleNodes",value:function(e,t){e=Array.from(e);for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};if(!t.isCollapsed){var r=t.getFirstRange();if("$graveyard"!=r.root.rootName){var i=e.schema;e.change((function(e){if(n.doNotResetEntireContent||!function(e,t){var n=e.getLimitElement(t);if(!t.containsEntireContent(n))return!1;var r=t.getFirstRange();return r.start.parent!=r.end.parent&&e.checkChild(n,"paragraph")}(i,t)){var o=u(function(e){var t=e.root.document.model,n=e.start,r=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){var i=function(e){var t,n=e.parent,r=n.root.document.model.schema,i=d(n.getAncestors({parentFirst:!0,includeSelf:!0}));try{for(i.s();!(t=i.n()).done;){var o=t.value;if(r.isLimit(o))return null;if(r.isBlock(o))return o}}catch(e){i.e(e)}finally{i.f()}}(r);if(i&&r.isTouching(t.createPositionAt(i,0))){var o=t.createSelection(e);t.modifySelection(o,{direction:"backward"}),r=o.getLastPosition()}}return[Js.fromPosition(n,"toPrevious"),Js.fromPosition(r,"toNext")]}(r),2),a=o[0],s=o[1];a.isTouching(s)||e.remove(e.createRange(a,s)),n.leaveUnmerged||(function(e,t,n){var r=e.model;if(il(e.model.schema,t,n)){var i=u(function(e,t){for(var n=e.getAncestors(),r=t.getAncestors(),i=0;n[i]&&n[i]==r[i];)i++;return[n[i],r[i]]}(t,n),2),o=i[0],a=i[1];!r.hasContent(o,{ignoreMarkers:!0})&&r.hasContent(a,{ignoreMarkers:!0})?rl(e,t,n,o.parent):nl(e,t,n,o.parent)}}(e,a,s),i.removeDisallowedAttributes(a.parent.getChildren(),e)),al(e,t,a),!n.doNotAutoparagraph&&function(e,t){var n=e.checkChild(t,"$text"),r=e.checkChild(t,"paragraph");return!n&&r}(i,a)&&ol(e,a,t),a.detach(),s.detach()}else!function(e,t){var n=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(n)),ol(e,e.createPositionAt(n,0),t)}(e,t)}))}}}(this,e,t)}},{key:"modifySelection",value:function(e,t){!function(e,t){for(var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.schema,o="backward"!=r.direction,a=r.unit?r.unit:"character",s=t.focus,l=new Jo({boundaries:cl(s,o),singleCharacters:!0,direction:o?"forward":"backward"}),c={walker:l,schema:i,isForward:o,unit:a},u=function(){if(n.done)return{v:void 0};var r=ll(c,n.value);return r?{v:void(t instanceof wa?e.change((function(e){e.setSelectionFocus(r)})):t.setFocus(r))}:void 0};n=l.next();){var d=u();if("object"===E(d))return d.v}}(this,e,t)}},{key:"getSelectedContent",value:function(e){return function(e,t){return e.change((function(e){var n=e.createDocumentFragment(),r=t.getFirstRange();if(!r||r.isCollapsed)return n;var i,o,a=r.start.root,s=r.start.getCommonPath(r.end),l=a.getNodeByPath(s),c=(i=r.start.parent==r.end.parent?r:e.createRange(e.createPositionAt(l,r.start.path[s.length]),e.createPositionAt(l,r.end.path[s.length]+1))).end.offset-i.start.offset,u=d(i.getItems({shallow:!0}));try{for(u.s();!(o=u.n()).done;){var h=o.value;h.is("$textProxy")?e.appendText(h.data,h.getAttributes(),n):e.append(e.cloneElement(h,!0),n)}}catch(e){u.e(e)}finally{u.f()}if(i!=r){var f=r._getTransformedByMove(i.start,e.createPositionAt(n,0),c)[0],g=e.createRange(e.createPositionAt(n,0),f.start);hl(e.createRange(f.end,e.createPositionAt(n,"end")),e),hl(g,e)}return n}))}(this,e)}},{key:"hasContent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e instanceof Zo?ia._createIn(e):e;if(n.isCollapsed)return!1;var r=t.ignoreWhitespaces,i=void 0!==r&&r,o=t.ignoreMarkers,a=void 0!==o&&o;if(!a){var s,l=d(this.markers.getMarkersIntersectingRange(n));try{for(l.s();!(s=l.n()).done;){var c=s.value;if(c.affectsData)return!0}}catch(e){l.e(e)}finally{l.f()}}var u,h=d(n.getItems());try{for(h.s();!(u=h.n()).done;){var f=u.value;if(this.schema.isContent(f)){if(!f.is("$textProxy"))return!0;if(!i)return!0;if(-1!==f.data.search(/\S/))return!0}}}catch(e){h.e(e)}finally{h.f()}return!1}},{key:"createPositionFromPath",value:function(e,t,n){return new ea(e,t,n)}},{key:"createPositionAt",value:function(e,t){return ea._createAt(e,t)}},{key:"createPositionAfter",value:function(e){return ea._createAfter(e)}},{key:"createPositionBefore",value:function(e){return ea._createBefore(e)}},{key:"createRange",value:function(e,t){return new ia(e,t)}},{key:"createRangeIn",value:function(e){return ia._createIn(e)}},{key:"createRangeOn",value:function(e){return ia._createOn(e)}},{key:"createSelection",value:function(e,t,n){return new ha(e,t,n)}},{key:"createBatch",value:function(e){return new ds(e)}},{key:"createOperationFromJSON",value:function(e){return function(){function e(){m(this,e)}return p(e,null,[{key:"fromJSON",value:function(e,t){return Zs[e.__className].fromJSON(e,t)}}]),e}().fromJSON(e,this.document)}},{key:"destroy",value:function(){this.document.destroy(),this.stopListening()}},{key:"_runPendingChanges",value:function(){var e=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){var t=this._pendingChanges[0].batch;this._currentWriter=new Bs(this,t);var n=this._pendingChanges[0].callback(this._currentWriter);e.push(n),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),e}}]),e}();ln(vl,vr);var pl=function(){function e(){m(this,e),this._listener=Object.create(Hi)}return p(e,[{key:"listenTo",value:function(e){var t=this;this._listener.listenTo(e,"keydown",(function(e,n){t._listener.fire("_keydown:"+qr(n),n)}))}},{key:"set",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Yr(e),i=n.priority;this._listener.listenTo(this._listener,"_keydown:"+r,(function(e,n){t(n,(function(){n.preventDefault(),n.stopPropagation(),e.stop()})),e.return=!0}),{priority:i})}},{key:"press",value:function(e){return!!this._listener.fire("_keydown:"+qr(e),e)}},{key:"destroy",value:function(){this._listener.stopListening()}}]),e}(),kl=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this)).editor=e,r}return p(n,[{key:"set",value:function(e,t){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof t){var o=t;t=function(e,t){r.editor.execute(o),t()}}c(D(n.prototype),"set",this).call(this,e,t,i)}}]),n}(pl),bl=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};m(this,e),this._context=n.context||new mn({language:n.language}),this._context._addEditor(this,!n.context);var r=Array.from(this.constructor.builtinPlugins||[]);this.config=new Ut(n,this.constructor.defaultConfig),this.config.define("plugins",r),this.config.define(this._context._getEditorConfig()),this.plugins=new un(this,r,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this.commands=new Ka,this.set("state","initializing"),this.once("ready",(function(){return t.state="ready"}),{priority:"high"}),this.once("destroy",(function(){return t.state="destroyed"}),{priority:"high"}),this.set("isReadOnly",!1),this.model=new vl;var i=new ir;this.data=new ss(this.model,i),this.editing=new Ha(this.model,i),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new ls([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new kl(this),this.keystrokes.listenTo(this.editing.view.document)}return p(e,[{key:"initPlugins",value:function(){var e=this.config,t=e.get("plugins"),n=e.get("removePlugins")||[],r=e.get("extraPlugins")||[];return this.plugins.init(t.concat(r),n)}},{key:"destroy",value:function(){var e=this,t=Promise.resolve();return"initializing"==this.state&&(t=new Promise((function(t){return e.once("ready",t)}))),t.then((function(){e.fire("destroy"),e.stopListening(),e.commands.destroy()})).then((function(){return e.plugins.destroy()})).then((function(){e.model.destroy(),e.data.destroy(),e.editing.destroy(),e.keystrokes.destroy()})).then((function(){return e._context._removeEditor(e)}))}},{key:"execute",value:function(){try{var e;return(e=this.commands).execute.apply(e,arguments)}catch(e){Qt.a.rethrowUnexpectedError(e,this)}}}]),e}();ln(bl,vr);var yl=function(){function e(){m(this,e)}return p(e,[{key:"getHtml",value:function(e){var t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}]),e}(),wl=function(){function e(t){m(this,e),this._domParser=new DOMParser,this._domConverter=new ji(t,{blockFillerMode:"nbsp"}),this._htmlWriter=new yl}return p(e,[{key:"toData",value:function(e){var t=this._domConverter.viewToDom(e,document);return this._htmlWriter.getHtml(t)}},{key:"toView",value:function(e){var t=this._toDom(e);return this._domConverter.domToView(t)}},{key:"_toDom",value:function(e){for(var t=this._domParser.parseFromString(e,"text/html"),n=t.createDocumentFragment(),r=t.body.childNodes;r.length>0;)n.appendChild(r[0]);return n}}]),e}(),Cl=function(){function e(t){m(this,e),this.editor=t,this._components=new Map}return p(e,[{key:"names",value:o.a.mark((function e(){var t,n,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=d(this._components.values()),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=n.value,e.next=7,r.originalName;case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:"add",value:function(e,t){this._components.set(Al(e),{callback:t,originalName:e})}},{key:"create",value:function(e){if(!this.has(e))throw new Qt.a("componentfactory-item-missing",this,{name:e});return this._components.get(Al(e)).callback(this.editor.locale)}},{key:"has",value:function(e){return this._components.has(Al(e))}}]),e}();function Al(e){return String(e).toLowerCase()}var _l=function(){function e(){m(this,e),this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}return p(e,[{key:"add",value:function(e){var t=this;if(this._elements.has(e))throw new Qt.a("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(function(){return t._focus(e)}),{useCapture:!0}),this.listenTo(e,"blur",(function(){return t._blur()}),{useCapture:!0}),this._elements.add(e)}},{key:"remove",value:function(e){e===this.focusedElement&&this._blur(e),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}},{key:"destroy",value:function(){this.stopListening()}},{key:"_focus",value:function(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}},{key:"_blur",value:function(){var e=this;clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((function(){e.focusedElement=null,e.isFocused=!1}),0)}}]),e}();ln(_l,Hi),ln(_l,vr);var xl=function(){function e(t){var n=this;m(this,e),this.editor=t,this.componentFactory=new Cl(t),this.focusTracker=new _l,this._editableElementsMap=new Map,this.listenTo(t.editing.view.document,"layoutChanged",(function(){return n.update()}))}return p(e,[{key:"update",value:function(){this.fire("update")}},{key:"destroy",value:function(){this.stopListening(),this.focusTracker.destroy();var e,t=d(this._editableElementsMap.values());try{for(t.s();!(e=t.n()).done;){e.value.ckeditorInstance=null}}catch(e){t.e(e)}finally{t.f()}this._editableElementsMap=new Map}},{key:"setEditableElement",value:function(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor)}},{key:"getEditableElement",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"main";return this._editableElementsMap.get(e)}},{key:"getEditableElementsNames",value:function(){return this._editableElementsMap.keys()}},{key:"element",get:function(){return null}},{key:"_editableElements",get:function(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}}]),e}();ln(xl,Jt),new WeakMap;var Dl=function(e){k(n,e);var t=b(n);function n(e,r){var i,o;return m(this,n),(i=t.call(this,e)).view=r,i._toolbarConfig=(o=e.config.get("toolbar"),Array.isArray(o)?{items:o}:o?Object.assign({items:[]},o):{items:[]}),i}return p(n,[{key:"init",value:function(){var e=this.editor,t=this.view,n=e.editing.view,r=t.editable,i=n.document.getRoot();t.editable.name=i.rootName,t.render();var o=r.element;this.setEditableElement(r.name,o),this.focusTracker.add(o),t.editable.bind("isFocused").to(this.focusTracker),n.attachDomRoot(o),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}},{key:"destroy",value:function(){var e=this.view;this.editor.editing.view.detachDomRoot(e.editable.name),e.destroy(),c(D(n.prototype),"destroy",this).call(this)}},{key:"_initToolbar",value:function(){var e=this.editor,t=this.view.toolbar;t.fillFromConfig(this._toolbarConfig.items,this.componentFactory),function(e){var t=e.origin,n=e.originKeystrokeHandler,r=e.originFocusTracker,i=e.toolbar,o=e.beforeFocus,a=e.afterBlur;r.add(i.element),n.set("Alt+F10",(function(e,t){r.isFocused&&!i.focusTracker.isFocused&&(o&&o(),i.focus(),t())})),i.keystrokes.set("Esc",(function(e,n){i.focusTracker.isFocused&&(t.focus(),a&&a(),n())}))}({origin:e.editing.view,originFocusTracker:this.focusTracker,originKeystrokeHandler:e.keystrokes,toolbar:t})}},{key:"_initPlaceholder",value:function(){var e=this.editor,t=(e.editing.view.document.getRoot(),e.sourceElement);e.config.get("placeholder")||t&&"textarea"===t.tagName.toLowerCase()&&t.getAttribute("placeholder")}}]),n}(xl),El=function(e){k(n,e);var t=b(n);function n(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return m(this,n),(e=t.call(this,r,{idProperty:"viewUid"})).on("add",(function(t,n,r){e._renderViewIntoCollectionParent(n,r)})),e.on("remove",(function(t,n){n.element&&e._parentElement&&n.element.remove()})),e._parentElement=null,e}return p(n,[{key:"destroy",value:function(){this.map((function(e){return e.destroy()}))}},{key:"setParent",value:function(e){this._parentElement=e;var t,n=d(this);try{for(n.s();!(t=n.n()).done;){var r=t.value;this._renderViewIntoCollectionParent(r)}}catch(e){n.e(e)}finally{n.f()}}},{key:"delegate",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:[];return m(this,n),(r=t.call(this,i)).locale=e,r}return p(n,[{key:"attachToDom",value:function(){this._bodyCollectionContainer=new Sl({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();var e=document.querySelector(".ck-body-wrapper");e||(e=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],i=n&&n.xmlns,o=i?e.createElementNS(i,t):e.createElement(t);for(var a in n)o.setAttribute(a,n[a]);!Zl(r)&&sn(r)||(r=[r]);var s,l=d(r);try{for(l.s();!(s=l.n()).done;){var c=s.value;Zl(c)&&(c=e.createTextNode(c)),o.appendChild(c)}}catch(e){l.e(e)}finally{l.f()}return o}(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}},{key:"detachFromDom",value:function(){c(D(n.prototype),"destroy",this).call(this),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();var e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}]),n}(El),Xl=n(13);Yl()(Xl.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Xl.a.locals;var ec=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).body=new Jl(e),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.body.attachToDom()}},{key:"destroy",value:function(){return this.body.detachFromDom(),c(D(n.prototype),"destroy",this).call(this)}}]),n}($l),tc=function(e){k(n,e);var t=b(n);function n(e,r,i){var o;return m(this,n),(o=t.call(this,e,r,i)).extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}}),o}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this);var t=this._editingView,r=this.t;t.change((function(n){var i=t.document.getRoot(e.name);n.setAttribute("aria-label",r("Rich Text Editor, %0",e.name),i)}))}}]),n}(function(e){k(n,e);var t=b(n);function n(e,r,i){var o;return m(this,n),(o=t.call(this,e)).setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),o.name=null,o.set("isFocused",!1),o._editableElement=i,o._hasExternalElement=!!o._editableElement,o._editingView=r,o}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",(function(){return e._updateIsFocusedClasses()})),this._updateIsFocusedClasses()}},{key:"destroy",value:function(){this._hasExternalElement&&this.template.revert(this._editableElement),c(D(n.prototype),"destroy",this).call(this)}},{key:"_updateIsFocusedClasses",value:function(){var e=this._editingView;function t(t){e.change((function(n){var r=e.document.getRoot(t.name);n.addClass(t.isFocused?"ck-focused":"ck-blurred",r),n.removeClass(t.isFocused?"ck-blurred":"ck-focused",r)}))}e.isRenderingInProgress?function n(r){e.once("change:isRenderingInProgress",(function(e,i,o){o?n(r):t(r)}))}(this):t(this)}}]),n}($l)),nc=function(){function e(t){var n=this;if(m(this,e),Object.assign(this,t),t.actions&&t.keystrokeHandler){var r=function(e){var r=t.actions[e];"string"==typeof r&&(r=[r]);var i,o=d(r);try{for(o.s();!(i=o.n()).done;){var a=i.value;t.keystrokeHandler.set(a,(function(t,r){n[e](),r()}))}}catch(e){o.e(e)}finally{o.f()}};for(var i in t.actions)r(i)}}return p(e,[{key:"focusFirst",value:function(){this._focus(this.first)}},{key:"focusLast",value:function(){this._focus(this.last)}},{key:"focusNext",value:function(){this._focus(this.next)}},{key:"focusPrevious",value:function(){this._focus(this.previous)}},{key:"_focus",value:function(e){e&&e.focus()}},{key:"_getFocusableItem",value:function(e){var t=this.current,n=this.focusables.length;if(!n)return null;if(null===t)return this[1===e?"first":"last"];var r=(t+n+e)%n;do{var i=this.focusables.get(r);if(rc(i))return i;r=(r+n+e)%n}while(r!==t);return null}},{key:"first",get:function(){return this.focusables.find(rc)||null}},{key:"last",get:function(){return this.focusables.filter(rc).slice(-1)[0]||null}},{key:"next",get:function(){return this._getFocusableItem(1)}},{key:"previous",get:function(){return this._getFocusableItem(-1)}},{key:"current",get:function(){var e=this,t=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((function(n,r){var i=n.element===e.focusTracker.focusedElement;return i&&(t=r),i})),t)}}]),e}();function rc(e){return!(!e.focus||"none"==Pi.window.getComputedStyle(e.element).display)}var ic=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}}),r}return n}($l),oc=function(){function e(t,n){m(this,e),e._observerInstance||e._createObserver(),this._element=t,this._callback=n,e._addElementCallback(t,n),e._observerInstance.observe(t)}return p(e,[{key:"destroy",value:function(){e._deleteElementCallback(this._element,this._callback)}}],[{key:"_addElementCallback",value:function(t,n){e._elementCallbacks||(e._elementCallbacks=new Map);var r=e._elementCallbacks.get(t);r||(r=new Set,e._elementCallbacks.set(t,r)),r.add(n)}},{key:"_deleteElementCallback",value:function(t,n){var r=e._getElementCallbacks(t);r&&(r.delete(n),r.size||(e._elementCallbacks.delete(t),e._observerInstance.unobserve(t))),e._elementCallbacks&&!e._elementCallbacks.size&&(e._observerInstance=null,e._elementCallbacks=null)}},{key:"_getElementCallbacks",value:function(t){return e._elementCallbacks?e._elementCallbacks.get(t):null}},{key:"_createObserver",value:function(){var t;t="function"==typeof Pi.window.ResizeObserver?Pi.window.ResizeObserver:ac,e._observerInstance=new t((function(t){var n,r=d(t);try{for(r.s();!(n=r.n()).done;){var i=n.value,o=e._getElementCallbacks(i.target);if(o){var a,s=d(o);try{for(s.s();!(a=s.n()).done;){(0,a.value)(i)}}catch(e){s.e(e)}finally{s.f()}}}}catch(e){r.e(e)}finally{r.f()}}))}}]),e}();oc._observerInstance=null,oc._elementCallbacks=null;var ac=function(){function e(t){m(this,e),this._callback=t,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}return p(e,[{key:"observe",value:function(e){this._elements.add(e),this._checkElementRectsAndExecuteCallback(),1===this._elements.size&&this._startPeriodicCheck()}},{key:"unobserve",value:function(e){this._elements.delete(e),this._previousRects.delete(e),this._elements.size||this._stopPeriodicCheck()}},{key:"_startPeriodicCheck",value:function(){var e=this;this.listenTo(Pi.window,"resize",(function(){e._checkElementRectsAndExecuteCallback()})),this._periodicCheckTimeout=setTimeout((function t(){e._checkElementRectsAndExecuteCallback(),e._periodicCheckTimeout=setTimeout(t,100)}),100)}},{key:"_stopPeriodicCheck",value:function(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}},{key:"_checkElementRectsAndExecuteCallback",value:function(){var e,t=[],n=d(this._elements);try{for(n.s();!(e=n.n()).done;){var r=e.value;this._hasRectChanged(r)&&t.push({target:r,contentRect:this._previousRects.get(r)})}}catch(e){n.e(e)}finally{n.f()}t.length&&this._callback(t)}},{key:"_hasRectChanged",value:function(e){if(!e.ownerDocument.body.contains(e))return!1;var t=new No(e),n=this._previousRects.get(e),r=!n||!n.isEqual(t);return this._previousRects.set(e,t),r}}]),e}();ln(ac,Hi);var sc=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).bindTemplate;return r.set("isVisible",!1),r.set("position","se"),r.children=r.createCollection(),r.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",i.to("position",(function(e){return"ck-dropdown__panel_"+e})),i.if("isVisible","ck-dropdown__panel-visible")]},children:r.children,on:{selectstart:i.to((function(e){return e.preventDefault()}))}}),r}return p(n,[{key:"focus",value:function(){this.children.length&&this.children.first.focus()}},{key:"focusLast",value:function(){if(this.children.length){var e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}]),n}($l),lc=n(14);function cc(e){var t=e.element,n=e.target,r=e.positions,i=e.limiter,o=e.fitInViewport;q(n)&&(n=n()),q(i)&&(i=i());var a,s,l=function(e){return e&&e.parentNode?e.offsetParent===Pi.document.body?null:e.offsetParent:null}(t),c=new No(t),h=new No(n);if(i||o){var f=function(e,t){var n=t.viewportRect,r=t.elementRect.getArea(),i=function(e,t){var n,r=t.targetRect,i=t.elementRect,o=t.limiterRect,a=t.viewportRect,s=[],l=i.getArea(),c=d(e);try{for(c.s();!(n=c.n()).done;){var h=uc(n.value,r,i);if(h){var f=u(h,2),g=f[0],m=f[1],v=0,p=0;if(o)if(a){var k=o.getIntersection(a);k&&(v=k.getIntersectionArea(m))}else v=o.getIntersectionArea(m);a&&(p=a.getIntersectionArea(m));var b={positionName:g,positionRect:m,limiterIntersectArea:v,viewportIntersectArea:p};if(v===l)return[b];s.push(b)}}}catch(e){c.e(e)}finally{c.f()}return s}(e,t);if(n){var o=dc(i.filter((function(e){return e.viewportIntersectArea===r})),r);if(o)return o}return dc(i,r)}(r,{targetRect:h,elementRect:c,limiterRect:i&&new No(i).getVisible(),viewportRect:o&&new No(Pi.window)}),g=u(f||uc(r[0],h,c),2);s=g[0],a=g[1]}else{var m=u(uc(r[0],h,c),2);s=m[0],a=m[1]}var v=hc(a);return l&&(v=function(e,t){var n=e.left,r=e.top,i=hc(new No(t)),o=Io(t);return n-=i.left,r-=i.top,n+=t.scrollLeft,r+=t.scrollTop,{left:n-=o.left,top:r-=o.top}}(v,l)),{left:v.left,top:v.top,name:s}}function uc(e,t,n){var r=e(t,n);if(!r)return null;var i=r.left,o=r.top;return[r.name,n.clone().moveTo(i,o)]}function dc(e,t){var n,r,i,o=0,a=d(e);try{for(a.s();!(i=a.n()).done;){var s=i.value,l=s.positionName,c=s.positionRect,u=s.limiterIntersectArea,h=s.viewportIntersectArea;if(u===t)return[l,c];var f=Math.pow(h,2)+Math.pow(u,2);f>o&&(o=f,n=c,r=l)}}catch(e){a.e(e)}finally{a.f()}return n?[r,n]:null}function hc(e){var t=e.left,n=e.top,r=Pi.window;return{left:t+r.scrollX,top:n+r.scrollY}}Yl()(lc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),lc.a.locals;var fc=function(e){k(n,e);var t=b(n);function n(e,r,i){var o;m(this,n);var a=(o=t.call(this,e)).bindTemplate;return o.buttonView=r,o.panelView=i,o.set("isOpen",!1),o.set("isEnabled",!0),o.set("class"),o.set("id"),o.set("panelPosition","auto"),o.keystrokes=new pl,o.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",a.to("class"),a.if("isEnabled","ck-disabled",(function(e){return!e}))],id:a.to("id"),"aria-describedby":a.to("ariaDescribedById")},children:[r,i]}),r.extendTemplate({attributes:{class:["ck-dropdown__button"]}}),o}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),this.listenTo(this.buttonView,"open",(function(){e.isOpen=!e.isOpen})),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",(function(){e.isOpen&&("auto"===e.panelPosition?e.panelView.position=n._getOptimalPosition({element:e.panelView.element,target:e.buttonView.element,fitInViewport:!0,positions:e._panelPositions}).name:e.panelView.position=e.panelPosition)})),this.keystrokes.listenTo(this.element);var t=function(t,n){e.isOpen&&(e.buttonView.focus(),e.isOpen=!1,n())};this.keystrokes.set("arrowdown",(function(t,n){e.buttonView.isEnabled&&!e.isOpen&&(e.isOpen=!0,n())})),this.keystrokes.set("arrowright",(function(t,n){e.isOpen&&n()})),this.keystrokes.set("arrowleft",t),this.keystrokes.set("esc",t)}},{key:"focus",value:function(){this.buttonView.focus()}},{key:"_panelPositions",get:function(){var e=n.defaultPanelPositions,t=e.southEast,r=e.southWest,i=e.northEast,o=e.northWest;return"ltr"===this.locale.uiLanguageDirection?[t,r,i,o]:[r,t,o,i]}}]),n}($l);fc.defaultPanelPositions={southEast:function(e){return{top:e.bottom,left:e.left,name:"se"}},southWest:function(e,t){return{top:e.bottom,left:e.left-t.width+e.width,name:"sw"}},northEast:function(e,t){return{top:e.top-t.height,left:e.left,name:"ne"}},northWest:function(e,t){return{top:e.bottom-t.height,left:e.left-t.width+e.width,name:"nw"}}},fc._getOptimalPosition=cc;var gc=n(15);Yl()(gc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),gc.a.locals;var mc=function(e){k(n,e);var t=b(n);function n(){var e;m(this,n);var r=(e=t.call(this)).bindTemplate;return e.set("content",""),e.set("viewBox","0 0 20 20"),e.set("fillColor",""),e.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:r.to("viewBox")}}),e}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(function(){e._updateXMLContent(),e._colorFillPaths()})),this.on("change:fillColor",(function(){e._colorFillPaths()}))}},{key:"_updateXMLContent",value:function(){if(this.content){var e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t),this.element.innerHTML="";e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}},{key:"_colorFillPaths",value:function(){var e=this;this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((function(t){t.style.fill=e.fillColor}))}}]),n}($l),vc=n(16);Yl()(vc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),vc.a.locals;var pc=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).set("text",""),r.set("position","s");var i=r.bindTemplate;return r.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",i.to("position",(function(e){return"ck-tooltip_"+e})),i.if("text","ck-hidden",(function(e){return!e.trim()}))]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:i.to("text")}]}]}),r}return n}($l),kc=n(17);Yl()(kc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),kc.a.locals;var bc=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).bindTemplate,o=qt();return r.set("class"),r.set("labelStyle"),r.set("icon"),r.set("isEnabled",!0),r.set("isOn",!1),r.set("isVisible",!0),r.set("isToggleable",!1),r.set("keystroke"),r.set("label"),r.set("tabindex",-1),r.set("tooltip"),r.set("tooltipPosition","s"),r.set("type","button"),r.set("withText",!1),r.set("withKeystroke",!1),r.children=r.createCollection(),r.tooltipView=r._createTooltipView(),r.labelView=r._createLabelView(o),r.iconView=new mc,r.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),r.keystrokeView=r._createKeystrokeView(),r.bind("_tooltipString").to(w(r),"tooltip",w(r),"label",w(r),"keystroke",r._getTooltipString.bind(w(r))),r.setTemplate({tag:"button",attributes:{class:["ck","ck-button",i.to("class"),i.if("isEnabled","ck-disabled",(function(e){return!e})),i.if("isVisible","ck-hidden",(function(e){return!e})),i.to("isOn",(function(e){return e?"ck-on":"ck-off"})),i.if("withText","ck-button_with-text"),i.if("withKeystroke","ck-button_with-keystroke")],type:i.to("type",(function(e){return e||"button"})),tabindex:i.to("tabindex"),"aria-labelledby":"ck-editor__aria-label_"+o,"aria-disabled":i.if("isEnabled",!0,(function(e){return!e})),"aria-pressed":i.to("isOn",(function(e){return!!r.isToggleable&&String(e)}))},children:r.children,on:{mousedown:i.to((function(e){e.preventDefault()})),click:i.to((function(e){r.isEnabled?r.fire("execute"):e.preventDefault()}))}}),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.children.add(this.keystrokeView)}},{key:"focus",value:function(){this.element.focus()}},{key:"_createTooltipView",value:function(){var e=new pc;return e.bind("text").to(this,"_tooltipString"),e.bind("position").to(this,"tooltipPosition"),e}},{key:"_createLabelView",value:function(e){var t=new $l,n=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:n.to("labelStyle"),id:"ck-editor__aria-label_"+e},children:[{text:this.bindTemplate.to("label")}]}),t}},{key:"_createKeystrokeView",value:function(){var e=new $l;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(function(e){return Qr(e)}))}]}),e}},{key:"_getTooltipString",value:function(e,t,n){return e?"string"==typeof e?e:(n&&(n=Qr(n)),e instanceof Function?e(t,n):"".concat(t).concat(n?" (".concat(n,")"):"")):""}}]),n}($l),yc='',wc=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).arrowView=r._createArrowView(),r.extendTemplate({attributes:{"aria-haspopup":!0}}),r.delegate("execute").to(w(r),"open"),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.children.add(this.arrowView)}},{key:"_createArrowView",value:function(){var e=new mc;return e.content=yc,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}]),n}(bc),Cc=n(18);Yl()(Cc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Cc.a.locals;var Ac=function(e){k(n,e);var t=b(n);function n(){var e;return m(this,n),(e=t.call(this)).items=e.createCollection(),e.focusTracker=new _l,e.keystrokes=new pl,e._focusCycler=new nc({focusables:e.items,focusTracker:e.focusTracker,keystrokeHandler:e.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),e.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:e.items}),e}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this);var t,r=d(this.items);try{for(r.s();!(t=r.n()).done;){var i=t.value;this.focusTracker.add(i.element)}}catch(e){r.e(e)}finally{r.f()}this.items.on("add",(function(t,n){e.focusTracker.add(n.element)})),this.items.on("remove",(function(t,n){e.focusTracker.remove(n.element)})),this.keystrokes.listenTo(this.element)}},{key:"focus",value:function(){this._focusCycler.focusFirst()}},{key:"focusLast",value:function(){this._focusCycler.focusLast()}}]),n}($l),_c=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).children=r.createCollection(),r.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:r.children}),r}return p(n,[{key:"focus",value:function(){this.children.first.focus()}}]),n}($l),xc=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}}),r}return n}($l),Dc=n(19);Yl()(Dc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Dc.a.locals;var Ec=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).isToggleable=!0,r.toggleSwitchView=r._createToggleView(),r.extendTemplate({attributes:{class:"ck-switchbutton"}}),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.children.add(this.toggleSwitchView)}},{key:"_createToggleView",value:function(){var e=new $l;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}]),n}(bc);function Sc(e){var t=e.emitter,n=e.activator,r=e.callback,i=e.contextElements;t.listenTo(document,"mousedown",(function(e,t){if(n()){var o,a="function"==typeof t.composedPath?t.composedPath():[],s=d(i);try{for(s.s();!(o=s.n()).done;){var l=o.value;if(l.contains(t.target)||a.includes(l))return}}catch(e){s.e(e)}finally{s.f()}r()}}))}var Mc=n(20),Tc=(Yl()(Mc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Mc.a.locals,n(21));function Ic(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:wc,n=new t(e),r=new sc(e),i=new fc(e,n,r);return n.bind("isEnabled").to(i),n instanceof wc?n.bind("isOn").to(i,"isOpen"):n.arrowView.bind("isOn").to(i,"isOpen"),function(e){(function(e){e.on("render",(function(){Sc({emitter:e,activator:function(){return e.isOpen},callback:function(){e.isOpen=!1},contextElements:[e.element]})}))})(e),function(e){e.on("execute",(function(t){t.source instanceof Ec||(e.isOpen=!1)}))}(e),function(e){e.keystrokes.set("arrowdown",(function(t,n){e.isOpen&&(e.panelView.focus(),n())})),e.keystrokes.set("arrowup",(function(t,n){e.isOpen&&(e.panelView.focusLast(),n())}))}(e)}(i),i}function Bc(e,t){var n=e.locale,r=n.t,i=e.toolbarView=new Lc(n);i.set("ariaLabel",r("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map((function(e){return i.items.add(e)})),e.panelView.children.add(i),i.items.delegate("execute").to(e)}function Nc(e,t){var n=e.locale,r=e.listView=new Ac(n);r.items.bindTo(t).using((function(e){var t=e.type,r=e.model;if("separator"===t)return new xc(n);if("button"===t||"switchbutton"===t){var i,o,a=new _c(n);return(i=o="button"===t?new bc(n):new Ec(n)).bind.apply(i,h(Object.keys(r))).to(r),o.delegate("execute").to(a),a.children.add(o),a}})),e.panelView.children.add(r),r.items.delegate("execute").to(e)}Yl()(Tc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Tc.a.locals;var Pc=n(22);Yl()(Pc.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Pc.a.locals;var Lc=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n);var o,a=(i=t.call(this,e)).bindTemplate,s=i.t;return i.options=r||{},i.set("ariaLabel",s("Editor toolbar")),i.set("maxWidth","auto"),i.items=i.createCollection(),i.focusTracker=new _l,i.keystrokes=new pl,i.set("class"),i.set("isCompact",!1),i.itemsView=new Oc(e),i.children=i.createCollection(),i.children.add(i.itemsView),i.focusables=i.createCollection(),i._focusCycler=new nc({focusables:i.focusables,focusTracker:i.focusTracker,keystrokeHandler:i.keystrokes,actions:{focusPrevious:["arrowleft","arrowup"],focusNext:["arrowright","arrowdown"]}}),i.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar",a.to("class"),a.if("isCompact","ck-toolbar_compact")],role:"toolbar","aria-label":a.to("ariaLabel"),style:{maxWidth:a.to("maxWidth")}},children:i.children,on:{mousedown:(o=w(i),o.bindTemplate.to((function(e){e.target===o.element&&e.preventDefault()})))}}),i._behavior=i.options.shouldGroupWhenFull?new jc(w(i)):new zc(w(i)),i}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this);var t,r=d(this.items);try{for(r.s();!(t=r.n()).done;){var i=t.value;this.focusTracker.add(i.element)}}catch(e){r.e(e)}finally{r.f()}this.items.on("add",(function(t,n){e.focusTracker.add(n.element)})),this.items.on("remove",(function(t,n){e.focusTracker.remove(n.element)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}},{key:"destroy",value:function(){return this._behavior.destroy(),c(D(n.prototype),"destroy",this).call(this)}},{key:"focus",value:function(){this._focusCycler.focusFirst()}},{key:"focusLast",value:function(){this._focusCycler.focusLast()}},{key:"fillFromConfig",value:function(e,t){this.items.addMany(e.map((function(e){return"|"==e?new ic:t.has(e)?t.create(e):void Object(Qt.c)("toolbarview-item-unavailable",{name:e})})).filter((function(e){return void 0!==e})))}}]),n}($l),Oc=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).children=r.createCollection(),r.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:r.children}),r}return n}($l),zc=function(){function e(t){m(this,e);var n=t.bindTemplate;t.set("isVertical",!1),t.itemsView.children.bindTo(t.items).using((function(e){return e})),t.focusables.bindTo(t.items).using((function(e){return e})),t.extendTemplate({attributes:{class:[n.if("isVertical","ck-toolbar_vertical")]}})}return p(e,[{key:"render",value:function(){}},{key:"destroy",value:function(){}}]),e}(),jc=function(){function e(t){var n=this;m(this,e),this.view=t,this.viewChildren=t.children,this.viewFocusables=t.focusables,this.viewItemsView=t.itemsView,this.viewFocusTracker=t.focusTracker,this.viewLocale=t.locale,this.ungroupedItems=t.createCollection(),this.groupedItems=t.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,t.itemsView.children.bindTo(this.ungroupedItems).using((function(e){return e})),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),t.children.on("add",this._updateFocusCycleableItems.bind(this)),t.children.on("remove",this._updateFocusCycleableItems.bind(this)),t.items.on("change",(function(e,t){var r,i=t.index,o=d(t.removed);try{for(o.s();!(r=o.n()).done;){var a=r.value;i>=n.ungroupedItems.length?n.groupedItems.remove(a):n.ungroupedItems.remove(a)}}catch(e){o.e(e)}finally{o.f()}for(var s=i;sn.ungroupedItems.length?n.groupedItems.add(l,s-n.ungroupedItems.length):n.ungroupedItems.add(l,s)}n._updateGrouping()})),t.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}return p(e,[{key:"render",value:function(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}},{key:"destroy",value:function(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}},{key:"_updateGrouping",value:function(){if(this.viewElement.ownerDocument.body.contains(this.viewElement))if(this.viewElement.offsetParent){for(var e,t=this.groupedItems.length;this._areItemsOverflowing;)this._groupLastItem(),e=!0;if(!e&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==t&&this.view.fire("groupedItemsUpdate")}else this.shouldUpdateGroupingOnNextResize=!0}},{key:"_enableGroupingOnResize",value:function(){var e,t=this;this.resizeObserver=new oc(this.viewElement,(function(n){e&&e===n.contentRect.width&&!t.shouldUpdateGroupingOnNextResize||(t.shouldUpdateGroupingOnNextResize=!1,t._updateGrouping(),e=n.contentRect.width)})),this._updateGrouping()}},{key:"_enableGroupingOnMaxWidthChange",value:function(e){var t=this;e.on("change:maxWidth",(function(){t._updateGrouping()}))}},{key:"_groupLastItem",value:function(){this.groupedItems.length||(this.viewChildren.add(new ic),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}},{key:"_ungroupFirstItem",value:function(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}},{key:"_createGroupedItemsDropdown",value:function(){var e=this.viewLocale,t=e.t,n=Ic(e);return n.class="ck-toolbar__grouped-dropdown",n.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",Bc(n,[]),n.buttonView.set({label:t("Show more items"),tooltip:!0,icon:''}),n.toolbarView.items.bindTo(this.groupedItems).using((function(e){return e})),n}},{key:"_updateFocusCycleableItems",value:function(){var e=this;this.viewFocusables.clear(),this.ungroupedItems.map((function(t){e.viewFocusables.add(t)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}},{key:"_areItemsOverflowing",get:function(){if(!this.ungroupedItems.length)return!1;var e=this.viewElement,t=this.viewLocale.uiLanguageDirection,n=new No(e.lastChild),r=new No(e);if(!this.cachedPadding){var i=Pi.window.getComputedStyle(e),o="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(i[o])}return"ltr"===t?n.right>r.right-this.cachedPadding:n.left2&&void 0!==arguments[2]?arguments[2]:{};return m(this,n),(i=t.call(this,e)).toolbar=new Lc(e,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),i.editable=new tc(e,r,o.editableElement),i.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:e.uiLanguageDirection}}),i}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.registerChild([this.toolbar,this.editable])}}]),n}(ec),Fc=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n),i=t.call(this,r),Vt(e)&&(i.sourceElement=e,function(e){var t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new Qt.a("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(function(){delete t.ckeditorInstance}))}}(w(i))),i.data.processor=new wl(i.data.viewDocument),i.model.document.createRoot();var o=!i.config.get("toolbar.shouldNotGroupWhenFull"),a=new Rc(i.locale,i.editing.view,{editableElement:i.sourceElement,shouldToolbarGroupWhenFull:o});return i.ui=new Dl(w(i),a),i}return p(n,[{key:"destroy",value:function(){var e=this,t=this.getData();return this.ui.destroy(),c(D(n.prototype),"destroy",this).call(this).then((function(){e.sourceElement&&function(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}(e.sourceElement,t)}))}}],[{key:"create",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(r){var i=Vt(e);if(i&&"TEXTAREA"===e.tagName)throw new Qt.a("editor-wrong-element",null);var o=new t(e,n);r(o.initPlugins().then((function(){o.ui.init()})).then((function(){if(!i&&n.initialData)throw new Qt.a("editor-create-initial-data",null);var t=n.initialData||function(e){return Vt(e)?(t=e)instanceof HTMLTextAreaElement?t.value:t.innerHTML:e;var t}(e);return o.data.init(t)})).then((function(){return o.fire("ready")})).then((function(){return o})))}))}}]),n}(bl);ln(Fc,{setData:function(e){this.data.set(e)},getData:function(e){return this.data.get(e)}});var Vc=function(){function e(t){m(this,e),this.editor=t,this.set("isEnabled",!0),this._disableStack=new Set}return p(e,[{key:"forceDisabled",value:function(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",Uc,{priority:"highest"}),this.isEnabled=!1)}},{key:"clearForceDisabled",value:function(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",Uc),this.isEnabled=!0)}},{key:"destroy",value:function(){this.stopListening()}}],[{key:"isContextPlugin",get:function(){return!1}}]),e}();function Uc(e){e.return=!1,e.stop()}ln(Vc,vr);var Hc=function(){function e(t){var n=this;m(this,e),this.editor=t,this.set("value",void 0),this.set("isEnabled",!1),this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(function(){n.refresh()})),this.on("execute",(function(e){n.isEnabled||e.stop()}),{priority:"high"}),this.listenTo(t,"change:isReadOnly",(function(e,t,r){r?n.forceDisabled("readOnlyMode"):n.clearForceDisabled("readOnlyMode")}))}return p(e,[{key:"refresh",value:function(){this.isEnabled=!0}},{key:"forceDisabled",value:function(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",Kc,{priority:"highest"}),this.isEnabled=!1)}},{key:"clearForceDisabled",value:function(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",Kc),this.refresh())}},{key:"execute",value:function(){}},{key:"destroy",value:function(){this.stopListening()}}]),e}();function Kc(e){e.return=!1,e.stop()}function Wc(e){var t=e.next();return t.done?null:t.value}ln(Hc,vr);var Gc=["left","right","center","justify"];function qc(e){return Gc.includes(e)}function Yc(e,t){return"rtl"==t.contentLanguageDirection?"right"===e:"left"===e}var Qc="alignment",$c=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.locale,t=Wc(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=!!t&&this._canBeAligned(t),this.isEnabled&&t.hasAttribute("alignment")?this.value=t.getAttribute("alignment"):this.value="rtl"===e.contentLanguageDirection?"right":"left"}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor,r=n.locale,i=n.model,o=i.document,a=t.value;i.change((function(t){var n=Array.from(o.selection.getSelectedBlocks()).filter((function(t){return e._canBeAligned(t)})),i=n[0].getAttribute("alignment");Yc(a,r)||i===a||!a?function(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;t.removeAttribute(Qc,i)}}catch(e){r.e(e)}finally{r.f()}}(n,t):function(e,t,n){var r,i=d(e);try{for(i.s();!(r=i.n()).done;){var o=r.value;t.setAttribute(Qc,n,o)}}catch(e){i.e(e)}finally{i.f()}}(n,t,a)}))}},{key:"_canBeAligned",value:function(e){return this.editor.model.schema.checkAttribute(e,Qc)}}]),n}(Hc),Zc=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("alignment",{options:[].concat(Gc)}),r}return p(n,null,[{key:"pluginName",get:function(){return"AlignmentEditing"}}]),p(n,[{key:"init",value:function(){var e=this.editor,t=e.locale,n=e.model.schema,r=e.config.get("alignment.options").filter(qc);n.extend("$block",{allowAttributes:"alignment"}),e.model.schema.setAttributeProperties("alignment",{isFormatting:!0});var i=function(e){var t,n={model:{key:"alignment",values:e.slice()},view:{}},r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value;n.view[i]={key:"style",value:{"text-align":i}}}}catch(e){r.e(e)}finally{r.f()}return n}(r.filter((function(e){return!Yc(e,t)})));e.conversion.attributeToAttribute(i),e.commands.add("alignment",new $c(e))}}]),n}(Vc),Jc='',Xc='',eu='',tu='',nu=new Map([["left",Jc],["right",Xc],["center",eu],["justify",tu]]),ru=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.ui.componentFactory,r=t.t,i=t.config.get("alignment.options");i.filter(qc).forEach((function(t){return e._addButton(t)})),n.add("alignment",(function(e){var t=Ic(e),o=i.map((function(e){return n.create("alignment:"+e)}));Bc(t,o),t.buttonView.set({label:r("Text alignment"),tooltip:!0}),t.toolbarView.isVertical=!0,t.toolbarView.ariaLabel=r("Text alignment toolbar"),t.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});var a="rtl"===e.contentLanguageDirection?Xc:Jc;return t.buttonView.bind("icon").toMany(o,"isOn",(function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=n.document.selection,i=n.createRange(n.createPositionAt(r.focus.parent,0),r.focus),o=lu(i,n),a=o.text,s=o.range,l=this.testCallback(a);if(!l&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!l,l){var c=Object.assign(t,{text:a,range:s});"object"==E(l)&&Object.assign(c,l),this.fire("matched:"+e,c)}}}]),e}();ln(cu,vr);var uu=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),du=function(e){return uu.test(e)},hu="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",fu="\\ud83c[\\udffb-\\udfff]",gu="[^\\ud800-\\udfff]",mu="(?:\\ud83c[\\udde6-\\uddff]){2}",vu="[\\ud800-\\udbff][\\udc00-\\udfff]",pu="(?:"+hu+"|"+fu+")?",ku="[\\ufe0e\\ufe0f]?",bu=ku+pu+"(?:\\u200d(?:"+[gu,mu,vu].join("|")+")"+ku+pu+")*",yu="(?:"+[gu+hu+"?",hu,mu,vu,"[\\ud800-\\udfff]"].join("|")+")",wu=RegExp(fu+"(?="+fu+")|"+yu+bu,"g"),Cu=function(e){return du(e)?function(e){return e.match(wu)||[]}(e):function(e){return e.split("")}(e)},Au=function(e){e=Ln(e);var t=du(e)?Cu(e):void 0,n=t?t[0]:e.charAt(0),r=t?function(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:Rn(e,t,n)}(t,1).join(""):e.slice(1);return n.toUpperCase()+r},_u=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,xu=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Du=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Eu=/^((\w+:(\/{2,})?)|(\W))/i,Su="Ctrl+K";function Mu(e,t){var n=t.writer,r=n.createAttributeElement("a",{href:e},{priority:5});return n.setCustomProperty("link",!0,r),r}function Tu(e){return function(e){return e.replace(_u,"").match(xu)}(e=String(e))?e:"#"}function Iu(e,t){return!!e&&e.is("element","image")&&t.checkAttribute("image","linkHref")}function Bu(e,t){var n,r=(n=e,Du.test(n)?"mailto:":t),i=!!r&&!Eu.test(e);return e&&i?r+e:e}var Nu=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?![-_])(?:[-\\w\\u00a1-\\uffff]{0,63}[^-_]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-\\w\\u00a1-\\uffff]{0,63}[^-_]\\.))+(?:[a-z\\u00a1-\\uffff]{2,})))$","i"),Pu=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor.model.document.selection;t.on("change:range",(function(){e.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}},{key:"afterInit",value:function(){this._enableEnterHandling(),this._enableShiftEnterHandling()}},{key:"_enableTypingHandling",value:function(){var e=this,t=this.editor,n=new cu(t.model,(function(e){if(function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e)){var t=Lu(e.substr(0,e.length-1));return t?{url:t}:void 0}})),r=t.plugins.get("Input");n.on("matched:data",(function(n,i){var o=i.batch,a=i.range,s=i.url;if(r.isInput(o)){var l=a.end.getShiftedBy(-1),c=l.getShiftedBy(-s.length),u=t.model.createRange(c,l);e._applyAutoLink(s,u)}})),n.bind("isEnabled").to(this)}},{key:"_enableEnterHandling",value:function(){var e=this,t=this.editor,n=t.model,r=t.commands.get("enter");r&&r.on("execute",(function(){var t=n.document.selection.getFirstPosition();if(t.parent.previousSibling){var r=n.createRangeIn(t.parent.previousSibling);e._checkAndApplyAutoLinkOnRange(r)}}))}},{key:"_enableShiftEnterHandling",value:function(){var e=this,t=this.editor,n=t.model,r=t.commands.get("shiftEnter");r&&r.on("execute",(function(){var t=n.document.selection.getFirstPosition(),r=n.createRange(n.createPositionAt(t.parent,0),t.getShiftedBy(-1));e._checkAndApplyAutoLinkOnRange(r)}))}},{key:"_checkAndApplyAutoLinkOnRange",value:function(e){var t=this.editor.model,n=lu(e,t),r=n.text,i=n.range,o=Lu(r);if(o){var a=t.createRange(i.end.getShiftedBy(-o.length),i.end);this._applyAutoLink(o,a)}}},{key:"_applyAutoLink",value:function(e,t){var n=this,r=this.editor.model;this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,r)&&r.enqueueChange((function(r){var i=n.editor.config.get("link.defaultProtocol"),o=Bu(e,i);r.setAttribute("linkHref",o,t)}))}}],[{key:"pluginName",get:function(){return"AutoLink"}}]),n}(Vc);function Lu(e){var t=Nu.exec(e);return t?t[2]:null}var Ou=function(){function e(t){m(this,e),this.context=t}return p(e,[{key:"destroy",value:function(){this.stopListening()}}],[{key:"isContextPlugin",get:function(){return!0}}]),e}();ln(Ou,vr);var zu=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){this.set("hasAny",!1),this._actions=new cn({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}},{key:"add",value:function(e){if("string"!=typeof e)throw new Qt.a("pendingactions-add-invalid-message",this);var t=Object.create(vr);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}},{key:"remove",value:function(e){this._actions.remove(e),this.hasAny=!!this._actions.length}},{key:Symbol.iterator,value:function(){return this._actions[Symbol.iterator]()}},{key:"first",get:function(){return this._actions.get(0)}}],[{key:"pluginName",get:function(){return"PendingActions"}}]),n}(Ou),ju=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),r=t.call(this,e);var i=e.config.get("autosave")||{},o=i.waitingTime||1e3;return r.set("state","synchronized"),r._debouncedSave=_o(r._save.bind(w(r)),o),r._lastDocumentVersion=e.model.document.version,r._domEmitter=Object.create(Hi),r._config=i,r}return p(n,null,[{key:"pluginName",get:function(){return"Autosave"}},{key:"requires",get:function(){return[zu]}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model.document,r=t.t;this._pendingActions=t.plugins.get(zu),this.listenTo(n,"change:data",(function(){e._saveCallbacks.length&&("synchronized"==e.state?(e._action=e._pendingActions.add(r("Saving changes")),e.state="waiting",e._debouncedSave()):"waiting"==e.state&&e._debouncedSave())})),this.listenTo(t,"destroy",(function(){return e._flush()}),{priority:"highest"}),this._domEmitter.listenTo(window,"beforeunload",(function(t,n){e._pendingActions.hasAny&&(n.returnValue=e._pendingActions.first.message)}))}},{key:"destroy",value:function(){this._domEmitter.stopListening(),c(D(n.prototype),"destroy",this).call(this)}},{key:"_flush",value:function(){this._debouncedSave.flush()}},{key:"_save",value:function(){var e=this,t=this.editor.model.document.version;te._lastDocumentVersion?(e.state="waiting",e._debouncedSave()):(e.state="synchronized",e._pendingActions.remove(e._action),e._action=null)})))}},{key:"_saveCallbacks",get:function(){var e=[];return this.adapter&&this.adapter.save&&e.push(this.adapter.save),this._config.save&&e.push(this._config.save),e}}]),n}(Vc);ln(ju,vr);var Ru=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.schema,i=n.document.selection,o=Array.from(i.getSelectedBlocks()),a=void 0===t.forceValue?!this.value:t.forceValue;n.change((function(t){if(a){var n=o.filter((function(e){return Fu(e)||Uu(r,e)}));e._applyQuote(t,n)}else e._removeQuote(t,o.filter(Fu))}))}},{key:"_getValue",value:function(){var e=Wc(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!Fu(e))}},{key:"_checkEnabled",value:function(){if(this.value)return!0;var e=this.editor.model.document.selection,t=this.editor.model.schema,n=Wc(e.getSelectedBlocks());return!!n&&Uu(t,n)}},{key:"_removeQuote",value:function(e,t){Vu(e,t).reverse().forEach((function(t){if(t.start.isAtStart&&t.end.isAtEnd)e.unwrap(t.start.parent);else if(t.start.isAtStart){var n=e.createPositionBefore(t.start.parent);e.move(t,n)}else{t.end.isAtEnd||e.split(t.end);var r=e.createPositionAfter(t.end.parent);e.move(t,r)}}))}},{key:"_applyQuote",value:function(e,t){var n=[];Vu(e,t).reverse().forEach((function(t){var r=Fu(t.start);r||(r=e.createElement("blockQuote"),e.wrap(t,r)),n.push(r)})),n.reverse().reduce((function(t,n){return t.nextSibling==n?(e.merge(e.createPositionAfter(t)),t):n}))}}]),n}(Hc);function Fu(e){return"blockQuote"==e.parent.name?e.parent:null}function Vu(e,t){for(var n,r=0,i=[];r',tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),e.listenTo(o,"execute",(function(){t.execute("blockQuote"),t.editing.view.focus()})),o}))}}]),n}(Vc),Gu=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e)).attributeKey=r,i}return p(n,[{key:"refresh",value:function(){var e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.document.selection,i=void 0===t.forceValue?!this.value:t.forceValue;n.change((function(t){if(r.isCollapsed)i?t.setSelectionAttribute(e.attributeKey,!0):t.removeSelectionAttribute(e.attributeKey);else{var o,a=d(n.schema.getValidRanges(r.getRanges(),e.attributeKey));try{for(a.s();!(o=a.n()).done;){var s=o.value;i?t.setAttribute(e.attributeKey,i,s):t.removeAttribute(e.attributeKey,s)}}catch(e){a.e(e)}finally{a.f()}}}))}},{key:"_getValueFromFirstAllowedNode",value:function(){var e=this.editor.model,t=e.schema,n=e.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);var r,i=d(n.getRanges());try{for(i.s();!(r=i.n()).done;){var o,a=d(r.value.getItems());try{for(a.s();!(o=a.n()).done;){var s=o.value;if(t.checkAttribute(s,this.attributeKey))return s.hasAttribute(this.attributeKey)}}catch(e){a.e(e)}finally{a.f()}}}catch(e){i.e(e)}finally{i.f()}return!1}}]),n}(Hc),qu="bold",Yu=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:qu}),e.model.schema.setAttributeProperties(qu,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:qu,view:"strong",upcastAlso:["b",function(e){var t=e.getStyle("font-weight");return t?"bold"==t||Number(t)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),e.commands.add(qu,new Gu(e,qu)),e.keystrokes.set("CTRL+B",qu)}}],[{key:"pluginName",get:function(){return"BoldEditing"}}]),n}(Vc),Qu="bold",$u=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add(Qu,(function(r){var i=t.commands.get(Qu),o=new bc(r);return o.set({label:n("Bold"),icon:'',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),e.listenTo(o,"execute",(function(){t.execute(Qu),t.editing.view.focus()})),o}))}}]),n}(Vc),Zu=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).attributes=new Set,r._overrideUid=null,r}return p(n,null,[{key:"pluginName",get:function(){return"TwoStepCaretMovement"}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model,r=t.editing.view,i=t.locale,o=n.document.selection;this.listenTo(r.document,"keydown",(function(t,n){if(o.isCollapsed&&!(n.shiftKey||n.altKey||n.ctrlKey)){var r=n.keyCode==Gr.arrowright,a=n.keyCode==Gr.arrowleft;if(r||a){var s=i.contentLanguageDirection;!0===("ltr"===s&&r||"rtl"===s&&a?e._handleForwardMovement(n):e._handleBackwardMovement(n))&&t.stop()}}}),{priority:Yt.get("high")+1}),this._isNextGravityRestorationSkipped=!1,this.listenTo(o,"change:range",(function(t,n){e._isNextGravityRestorationSkipped?e._isNextGravityRestorationSkipped=!1:e._isGravityOverridden&&(!n.directChange&&td(o.getFirstPosition(),e.attributes)||e._restoreGravity())}))}},{key:"registerAttribute",value:function(e){this.attributes.add(e)}},{key:"_handleForwardMovement",value:function(e){var t=this.attributes,n=this.editor.model.document.selection,r=n.getFirstPosition();return!this._isGravityOverridden&&(!r.isAtStart||!Ju(n,t))&&(td(r,t)?(ed(e),this._overrideGravity(),!0):void 0)}},{key:"_handleBackwardMovement",value:function(e){var t=this.attributes,n=this.editor.model,r=n.document.selection,i=r.getFirstPosition();return this._isGravityOverridden?(ed(e),this._restoreGravity(),Xu(n,t,i),!0):i.isAtStart?!!Ju(r,t)&&(ed(e),Xu(n,t,i),!0):function(e,t){return td(e.getShiftedBy(-1),t)}(i,t)?i.isAtEnd&&!Ju(r,t)&&td(i,t)?(ed(e),Xu(n,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}},{key:"_overrideGravity",value:function(){this._overrideUid=this.editor.model.change((function(e){return e.overrideSelectionGravity()}))}},{key:"_restoreGravity",value:function(){var e=this;this.editor.model.change((function(t){t.restoreSelectionGravity(e._overrideUid),e._overrideUid=null}))}},{key:"_isGravityOverridden",get:function(){return!!this._overrideUid}}]),n}(Vc);function Ju(e,t){var n,r=d(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(e.hasAttribute(i))return!0}}catch(e){r.e(e)}finally{r.f()}return!1}function Xu(e,t,n){var r=n.nodeBefore;e.change((function(e){r?e.setSelectionAttribute(r.getAttributes()):e.removeSelectionAttribute(t)}))}function ed(e){e.preventDefault()}function td(e,t){var n,r=e.nodeBefore,i=e.nodeAfter,o=d(t);try{for(o.s();!(n=o.n()).done;){var a=n.value,s=r?r.getAttribute(a):void 0;if((i?i.getAttribute(a):void 0)!==s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1}function nd(e,t,n,r){return r.createRange(rd(e,t,n,!0,r),rd(e,t,n,!1,r))}function rd(e,t,n,r,i){for(var o=e.textNode||(r?e.nodeBefore:e.nodeAfter),a=null;o&&o.getAttribute(t)==n;)a=o,o=r?o.previousSibling:o.nextSibling;return a?i.createPositionAt(a,r?"before":"after"):e}function id(e,t,n,r){var i=e.editing.view,o=new Set;i.document.registerPostFixer((function(i){var a=e.model.document.selection,s=!1;if(a.hasAttribute(t)){var l,c=nd(a.getFirstPosition(),t,a.getAttribute(t),e.model),u=d(e.editing.mapper.toViewRange(c).getItems());try{for(u.s();!(l=u.n()).done;){var h=l.value;h.is("element",n)&&!h.hasClass(r)&&(i.addClass(r,h),o.add(h),s=!0)}}catch(e){u.e(e)}finally{u.f()}}return s})),e.conversion.for("editingDowncast").add((function(e){function t(){i.change((function(e){var t,n=d(o.values());try{for(n.s();!(t=n.n()).done;){var i=t.value;e.removeClass(r,i),o.delete(i)}}catch(e){n.e(e)}finally{n.f()}}))}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})}))}var od="code",ad=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:od}),e.model.schema.setAttributeProperties(od,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:od,view:"code",upcastAlso:{styles:{"word-wrap":"break-word"}}}),e.commands.add(od,new Gu(e,od)),e.plugins.get(Zu).registerAttribute(od),id(e,od,"code","ck-code_selected")}}],[{key:"pluginName",get:function(){return"CodeEditing"}},{key:"requires",get:function(){return[Zu]}}]),n}(Vc),sd=n(24);Yl()(sd.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),sd.a.locals;var ld="code",cd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add(ld,(function(r){var i=t.commands.get(ld),o=new bc(r);return o.set({label:n("Code"),icon:'',tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),e.listenTo(o,"execute",(function(){t.execute(ld),t.editing.view.focus()})),o}))}}]),n}(Vc);function ud(e,t){var n,r,i;return o.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:n=d(t),o.prev=1,n.s();case 3:if((r=n.n()).done){o.next=11;break}if(i=r.value,o.t0=i&&e.getAttributeProperties(i[0]).copyOnEnter,!o.t0){o.next=9;break}return o.next=9,i;case 9:o.next=3;break;case 11:o.next=16;break;case 13:o.prev=13,o.t1=o.catch(1),n.e(o.t1);case 16:return o.prev=16,n.f(),o.finish(16);case 19:case"end":return o.stop()}}),a,null,[[1,13,16,19]])}var dd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"execute",value:function(){var e=this,t=this.editor.model,n=t.document;t.change((function(r){!function(e,t,n){var r=n.isCollapsed,i=n.getFirstRange(),o=i.start.parent,a=i.end.parent,s=o==a;if(r){var l=ud(e.schema,n.getAttributes());hd(e,t,i.end),t.removeSelectionAttribute(n.getAttributeKeys()),t.setSelectionAttribute(l)}else{var c=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(n,{leaveUnmerged:c}),s?hd(e,t,n.focus):c&&t.setSelection(a,0)}}(t,r,n.selection),e.fire("afterExecute",{writer:r})}))}},{key:"refresh",value:function(){var e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;var n=t.anchor;if(!n||!e.checkChild(n,"softBreak"))return!1;var r=t.getFirstRange(),i=r.start.parent,o=r.end.parent;return!fd(i,e)&&!fd(o,e)||i===o}(e.schema,t.selection)}}]),n}(Hc);function hd(e,t,n){var r=t.createElement("softBreak");e.insertContent(r,n),t.setSelection(r,"after")}function fd(e,t){return!e.is("rootElement")&&(t.isLimit(e)||fd(e.parent,t))}var gd=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).document;return i.on("keydown",(function(e,t){var n;r.isEnabled&&t.keyCode==Gr.enter&&(i.once("enter",(function(e){return n=e}),{priority:"highest"}),i.fire("enter",new ho(i,t.domEvent,{isSoft:t.shiftKey})),n&&n.stop.called&&e.stop())})),r}return p(n,[{key:"observe",value:function(){}}]),n}(Gi),md=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.model.schema,n=e.conversion,r=e.editing.view,i=r.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:function(e,t){return t.writer.createEmptyElement("br")}}),r.addObserver(gd),e.commands.add("shiftEnter",new dd(e)),this.listenTo(i,"enter",(function(t,n){n.preventDefault(),n.isSoft&&(e.execute("shiftEnter"),r.scrollToTheSelection())}),{priority:"low"})}}],[{key:"pluginName",get:function(){return"ShiftEnter"}}]),n}(Vc);function vd(e){var t,n=e.t,r=e.config.get("codeBlock.languages"),i=d(r);try{for(i.s();!(t=i.n()).done;){var o=t.value;"Plain text"===o.label&&(o.label=n("Plain text")),void 0===o.class&&(o.class="language-"+o.language)}}catch(e){i.e(e)}finally{i.f()}return r}function pd(e,t,n){var r,i={},o=d(e);try{for(o.s();!(r=o.n()).done;){var a=r.value;"class"===t?i[a[t].split(" ").shift()]=a[n]:i[a[t]]=a[n]}}catch(e){o.e(e)}finally{o.f()}return i}function kd(e){return e.data.match(/^(\s*)/)[0]}function bd(e,t){var n,r=e.createDocumentFragment(),i=t.split("\n").map((function(t){return e.createText(t)})),o=i[i.length-1],a=d(i);try{for(a.s();!(n=a.n()).done;){var s=n.value;e.append(s,r),s!==o&&e.appendElement("softBreak",r)}}catch(e){a.e(e)}finally{a.f()}return r}function yd(e){var t=e.document.selection,n=[];if(t.isCollapsed)n.push(t.anchor);else{var r,i=d(t.getFirstRange().getWalker({ignoreElementEnd:!0,direction:"backward"}));try{for(i.s();!(r=i.n()).done;){var o=r.value.item;if(o.is("$textProxy")&&o.parent.is("element","codeBlock")){var a=kd(o.textNode),s=o.textNode,l=s.parent,c=s.startOffset,u=e.createPositionAt(l,c+a.length);n.push(u)}}}catch(e){i.e(e)}finally{i.f()}}return n}function wd(e){var t=Wc(e.getSelectedBlocks());return t&&t.is("element","codeBlock")}var Cd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor,r=n.model,i=r.document.selection,o=vd(n)[0],a=Array.from(i.getSelectedBlocks()),s=void 0===t.forceValue?!this.value:t.forceValue,l=t.language||o.language;r.change((function(t){s?e._applyCodeBlock(t,a,l):e._removeCodeBlock(t,a)}))}},{key:"_getValue",value:function(){var e=Wc(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!e.is("element","codeBlock"))&&e.getAttribute("language")}},{key:"_checkEnabled",value:function(){if(this.value)return!0;var e=this.editor.model.document.selection,t=this.editor.model.schema,n=Wc(e.getSelectedBlocks());return!!n&&Ad(t,n)}},{key:"_applyCodeBlock",value:function(e,t,n){var r,i=this.editor.model.schema,o=t.filter((function(e){return Ad(i,e)})),a=d(o);try{for(a.s();!(r=a.n()).done;){var s=r.value;e.rename(s,"codeBlock"),e.setAttribute("language",n,s),i.removeDisallowedAttributes([s],e)}}catch(e){a.e(e)}finally{a.f()}o.reverse().forEach((function(t,n){var r=o[n+1];t.previousSibling===r&&(e.appendElement("softBreak",r),e.merge(e.createPositionBefore(t)))}))}},{key:"_removeCodeBlock",value:function(e,t){var n,r=d(t.filter((function(e){return e.is("element","codeBlock")})));try{for(r.s();!(n=r.n()).done;){var i,o=n.value,a=e.createRangeOn(o),s=d(Array.from(a.getItems()).reverse());try{for(s.s();!(i=s.n()).done;){var l=i.value;if(l.is("element","softBreak")&&l.parent.is("element","codeBlock")){var c=e.split(e.createPositionBefore(l)).position;e.rename(c.nodeAfter,"paragraph"),e.removeAttribute("language",c.nodeAfter),e.remove(l)}}}catch(e){s.e(e)}finally{s.f()}e.rename(o,"paragraph"),e.removeAttribute("language",o)}}catch(e){r.e(e)}finally{r.f()}}}]),n}(Hc);function Ad(e,t){return!t.is("rootElement")&&!e.isLimit(t)&&e.checkChild(t.parent,"codeBlock")}var _d=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._indentSequence=e.config.get("codeBlock.indentSequence"),r}return p(n,[{key:"refresh",value:function(){this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=this.editor.model;t.change((function(n){var r,i=d(yd(t));try{for(i.s();!(r=i.n()).done;){var o=r.value;n.insertText(e._indentSequence,o)}}catch(e){i.e(e)}finally{i.f()}}))}},{key:"_checkEnabled",value:function(){return!!this._indentSequence&&wd(this.editor.model.document.selection)}}]),n}(Hc),xd=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._indentSequence=e.config.get("codeBlock.indentSequence"),r}return p(n,[{key:"refresh",value:function(){this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=this.editor.model;t.change((function(n){var r,i=d(yd(t));try{for(i.s();!(r=i.n()).done;){var o=r.value,a=Dd(e.editor.model,o,e._indentSequence);a&&n.remove(a)}}catch(e){i.e(e)}finally{i.f()}}))}},{key:"_checkEnabled",value:function(){var e=this;if(!this._indentSequence)return!1;var t=this.editor.model;return!!wd(t.document.selection)&&yd(t).some((function(n){return Dd(t,n,e._indentSequence)}))}}]),n}(Hc);function Dd(e,t,n){var r=function(e){var t=e.parent.getChild(e.index);return t&&!t.is("element","softBreak")||(t=e.nodeBefore),!t||t.is("element","softBreak")?null:t}(t);if(!r)return null;var i=kd(r),o=i.lastIndexOf(n);if(o+n.length!==i.length)return null;if(-1===o)return null;var a=r.parent,s=r.startOffset;return e.createRange(e.createPositionAt(a,s+o),e.createPositionAt(a,s+o+n.length))}function Ed(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=pd(t,"language","class"),i=pd(t,"language","label");return function(t,o,a){var s=a.writer,l=a.mapper;if(a.consumable.consume(o.item,"insert")){var c=o.item.getAttribute("language"),u=l.toViewPosition(e.createPositionBefore(o.item)),d={};n&&(d["data-language"]=i[c],d.spellcheck="false");var h=s.createContainerElement("pre",d),f=s.createContainerElement("code",{class:r[c]||null});s.insert(s.createPositionAt(h,0),f),s.insert(u,h),l.bindElements(o.item,f)}}}var Sd="paragraph",Md=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("codeBlock",{languages:[{language:"plaintext",label:"Plain text"},{language:"c",label:"C"},{language:"cs",label:"C#"},{language:"cpp",label:"C++"},{language:"css",label:"CSS"},{language:"diff",label:"Diff"},{language:"html",label:"HTML"},{language:"java",label:"Java"},{language:"javascript",label:"JavaScript"},{language:"php",label:"PHP"},{language:"python",label:"Python"},{language:"ruby",label:"Ruby"},{language:"typescript",label:"TypeScript"},{language:"xml",label:"XML"}],indentSequence:"\t"}),r}return p(n,null,[{key:"pluginName",get:function(){return"CodeBlockEditing"}},{key:"requires",get:function(){return[md]}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model.schema,r=t.model,i=vd(t);t.commands.add("codeBlock",new Cd(t)),t.commands.add("indentCodeBlock",new _d(t)),t.commands.add("outdentCodeBlock",new xd(t));var o=function(t){return function(n,r){e.editor.commands.get(t).isEnabled&&(e.editor.execute(t),r())}};t.keystrokes.set("Tab",o("indentCodeBlock")),t.keystrokes.set("Shift+Tab",o("outdentCodeBlock")),n.register("codeBlock",{allowWhere:"$block",isBlock:!0,allowAttributes:["language"]}),n.extend("$text",{allowIn:"codeBlock"}),n.addAttributeCheck((function(e){if(e.endsWith("codeBlock $text"))return!1})),t.editing.downcastDispatcher.on("insert:codeBlock",Ed(r,i,!0)),t.data.downcastDispatcher.on("insert:codeBlock",Ed(r,i)),t.data.downcastDispatcher.on("insert:softBreak",function(e){return function(t,n,r){if("codeBlock"===n.item.parent.name){var i=r.writer,o=r.mapper;if(r.consumable.consume(n.item,"insert")){var a=o.toViewPosition(e.createPositionBefore(n.item));i.insert(a,i.createText("\n"))}}}}(r),{priority:"high"}),t.data.upcastDispatcher.on("element:pre",function(e,t){var n=pd(t,"class","language"),r=t[0].language;return function(t,i,o){var a=i.viewItem,s=a.getChild(0);if(s&&s.is("element","code")){var l=o.consumable,c=o.writer;if(l.test(a,{name:!0})&&l.test(s,{name:!0})){var u=c.createElement("codeBlock"),f=h(s.getClassNames());f.length||f.push("");var g,m=d(f);try{for(m.s();!(g=m.n()).done;){var v=g.value,p=n[v];if(p){c.setAttribute("language",p,u);break}}}catch(e){m.e(e)}finally{m.f()}u.hasAttribute("language")||c.setAttribute("language",r,u);var k=bd(c,h(e.createRangeIn(s)).filter((function(e){return"text"===e.type})).map((function(e){return e.item.data})).join(""));c.append(k,u),o.safeInsert(u,i.modelCursor)&&(l.consume(a,{name:!0}),l.consume(s,{name:!0}),o.updateConversionResult(u,i))}}}}(t.editing.view,i)),this.listenTo(t.editing.view.document,"clipboardInput",(function(e,t){var n=r.document.selection;if(n.anchor.parent.is("element","codeBlock")){var i=t.dataTransfer.getData("text/plain");r.change((function(t){r.insertContent(bd(t,i),n),e.stop()}))}})),this.listenTo(r,"getSelectedContent",(function(e,t){var i=u(t,1)[0],o=i.anchor;!i.isCollapsed&&o.parent.is("element","codeBlock")&&o.hasSameParentAs(i.focus)&&r.change((function(t){var r=e.return;if(r.childCount>1||i.containsEntireContent(o.parent)){var a=t.createElement("codeBlock",o.parent.getAttributes());t.append(r,a);var s=t.createDocumentFragment();t.append(a,s),e.return=s}else{var l=r.getChild(0);n.checkAttribute(l,"code")&&t.setAttribute("code",!0,l)}}))}))}},{key:"afterInit",value:function(){var e=this.editor,t=e.commands,n=t.get("indent"),r=t.get("outdent");n&&n.registerChildCommand(t.get("indentCodeBlock")),r&&r.registerChildCommand(t.get("outdentCodeBlock")),this.listenTo(e.editing.view.document,"enter",(function(t,n){e.model.document.selection.getLastPosition().parent.is("element","codeBlock")&&(function(e,t){var n=e.model.document,r=e.editing.view,i=n.selection.getLastPosition(),o=i.nodeAfter;return!(t||!n.selection.isCollapsed||!i.isAtStart)&&(!(!o||!o.is("element","softBreak"))&&(e.model.change((function(t){e.execute("enter");var r=n.selection.anchor.parent.previousSibling;t.rename(r,Sd),t.setSelection(r,"in"),e.model.schema.removeDisallowedAttributes([r],t),t.remove(o)})),r.scrollToTheSelection(),!0))}(e,n.isSoft)||function(e,t){var n,r=e.model,i=r.document,o=e.editing.view,a=i.selection.getLastPosition(),s=a.nodeBefore;if(t||!i.selection.isCollapsed||!a.isAtEnd||!s)return!1;if(s.is("element","softBreak"))n=r.createRangeOn(s);else{if(!s.is("$text")||s.data.match(/\S/)||!s.previousSibling||!s.previousSibling.is("element","softBreak"))return!1;n=r.createRange(r.createPositionBefore(s.previousSibling),r.createPositionAfter(s))}return e.model.change((function(t){t.remove(n),e.execute("enter");var r=i.selection.anchor.parent;t.rename(r,Sd),e.model.schema.removeDisallowedAttributes([r],t)})),o.scrollToTheSelection(),!0}(e,n.isSoft)||function(e){var t,n=e.model.document,r=n.selection.getLastPosition(),i=r.nodeBefore||r.textNode;i&&i.is("$text")&&(t=kd(i)),e.model.change((function(r){e.execute("shiftEnter"),t&&r.insertText(t,n.selection.anchor)}))}(e),n.preventDefault(),t.stop())}))}}]),n}(Vc),Td=function e(t,n){m(this,e),n&&dr(this,n),t&&this.set(t)};ln(Td,vr);var Id=n(25);Yl()(Id.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Id.a.locals;var Bd=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).bindTemplate;return r.set("icon"),r.set("isEnabled",!0),r.set("isOn",!1),r.set("isToggleable",!1),r.set("isVisible",!0),r.set("keystroke"),r.set("label"),r.set("tabindex",-1),r.set("tooltip"),r.set("tooltipPosition","s"),r.set("type","button"),r.set("withText",!1),r.children=r.createCollection(),r.actionView=r._createActionView(),r.arrowView=r._createArrowView(),r.keystrokes=new pl,r.focusTracker=new _l,r.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",i.if("isVisible","ck-hidden",(function(e){return!e})),r.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:r.children}),r}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",(function(t,n){e.focusTracker.focusedElement===e.actionView.element&&(e.arrowView.focus(),n())})),this.keystrokes.set("arrowleft",(function(t,n){e.focusTracker.focusedElement===e.arrowView.element&&(e.actionView.focus(),n())}))}},{key:"focus",value:function(){this.actionView.focus()}},{key:"_createActionView",value:function(){var e=new bc;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}},{key:"_createArrowView",value:function(){var e=new bc,t=e.bindTemplate;return e.icon=yc,e.extendTemplate({attributes:{class:"ck-splitbutton__arrow","aria-haspopup":!0,"aria-expanded":t.to("isOn",(function(e){return String(e)}))}}),e.bind("isEnabled").to(this),e.delegate("execute").to(this,"open"),e}}]),n}($l),Nd=n(26);Yl()(Nd.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Nd.a.locals;var Pd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t,r=t.ui.componentFactory,i=vd(t),o=i[0];r.add("codeBlock",(function(r){var a=t.commands.get("codeBlock"),s=Ic(r,Bd),l=s.buttonView;return l.set({label:n("Insert code block"),tooltip:!0,icon:'',isToggleable:!0}),l.bind("isOn").to(a,"value",(function(e){return!!e})),l.on("execute",(function(){t.execute("codeBlock",{language:o.language}),t.editing.view.focus()})),s.on("execute",(function(e){t.execute("codeBlock",{language:e.source._codeBlockLanguage,forceValue:!0}),t.editing.view.focus()})),s.class="ck-code-block-dropdown",s.bind("isEnabled").to(a),Nc(s,e._getLanguageListItemDefinitions(i)),s}))}},{key:"_getLanguageListItemDefinitions",value:function(e){var t,n=this.editor.commands.get("codeBlock"),r=new cn,i=d(e);try{var o=function(){var e=t.value,i={type:"button",model:new Td({_codeBlockLanguage:e.language,label:e.label,withText:!0})};i.model.bind("isOn").to(n,"value",(function(e){return e===i.model._codeBlockLanguage})),r.add(i)};for(i.s();!(t=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}return r}}]),n}(Vc),Ld=function(){function e(t){m(this,e),this.files=function(e){var t=e.files?Array.from(e.files):[],n=e.items?Array.from(e.items):[];return t.length?t:n.filter((function(e){return"file"===e.kind})).map((function(e){return e.getAsFile()}))}(t),this._native=t}return p(e,[{key:"getData",value:function(e){return this._native.getData(e)}},{key:"setData",value:function(e,t){this._native.setData(e,t)}},{key:"types",get:function(){return this._native.types}}]),e}(),Od=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).document;function o(e,t){t.preventDefault();var n=t.dropRange?[t.dropRange]:Array.from(i.selection.getRanges()),r=new Wt(i,"clipboardInput");i.fire(r,{dataTransfer:t.dataTransfer,targetRanges:n}),r.stop.called&&t.stopPropagation()}return r.domEventType=["paste","copy","cut","drop","dragover"],r.listenTo(i,"paste",o,{priority:"low"}),r.listenTo(i,"drop",o,{priority:"low"}),r}return p(n,[{key:"onDomEvent",value:function(e){var t={dataTransfer:new Ld(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"==e.type&&(t.dropRange=function(e,t){var n,r=t.target.ownerDocument,i=t.clientX,o=t.clientY;return r.caretRangeFromPoint&&r.caretRangeFromPoint(i,o)?n=r.caretRangeFromPoint(i,o):t.rangeParent&&((n=r.createRange()).setStart(t.rangeParent,t.rangeOffset),n.collapse(!0)),n?e.domConverter.domRangeToView(n):e.document.selection.getFirstRange()}(this.view,e)),this.fire(e.type,e,t)}}]),n}(fo),zd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor.editing.view,t=e.document,n=!1;e.addObserver(Od),this.listenTo(t,"keydown",(function(e,t){n=t.shiftKey})),this.listenTo(t,"clipboardInput",(function(e,t){n&&(t.asPlainText=!0)}),{priority:"high"})}}],[{key:"pluginName",get:function(){return"PastePlainText"}}]),n}(Vc),jd=["figcaption","li"];var Rd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model.document,r=t.editing.view,i=r.document;function o(e,r){var o=r.dataTransfer;r.preventDefault();var a=t.data.toView(t.model.getSelectedContent(n.selection));i.fire("clipboardOutput",{dataTransfer:o,content:a,method:e.name})}this._htmlDataProcessor=new wl(i),r.addObserver(Od),this.listenTo(i,"clipboardInput",(function(e){t.isReadOnly&&e.stop()}),{priority:"highest"}),this.listenTo(i,"clipboardInput",(function(t,n){var i,o=n.dataTransfer,a="";o.getData("text/html")?a=function(e){return e.replace(/(\s+)<\/span>/g,(function(e,t){return 1==t.length?" ":t}))}(o.getData("text/html")):o.getData("text/plain")&&(((i=(i=o.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

    ").replace(/\r?\n/g,"
    ").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

    ")||i.includes("
    "))&&(i="

    ".concat(i,"

    ")),a=i),a=e._htmlDataProcessor.toView(a);var s=new Wt(e,"inputTransformation");e.fire(s,{content:a,dataTransfer:o,asPlainText:n.asPlainText}),s.stop.called&&t.stop(),r.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",(function(r,i){if(!i.content.isEmpty){var o=e.editor.data,a=e.editor.model,s=o.toModel(i.content,"$clipboardHolder");if(0==s.childCount)return;if(i.asPlainText||function(e){return!(e.childCount>1)&&0==h(e.getChild(0).getAttributeKeys()).length}(s)){var l=new Map(Array.from(n.selection.getAttributes()).filter((function(e){return t.model.schema.getAttributeProperties(e[0]).isFormatting})));a.change((function(e){var t,n=d(e.createRangeIn(s).getItems());try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.is("$text")||r.is("$textProxy"))&&e.setAttributes(l,r)}}catch(e){n.e(e)}finally{n.f()}}))}a.insertContent(s),r.stop()}}),{priority:"low"}),this.listenTo(i,"copy",o,{priority:"low"}),this.listenTo(i,"cut",(function(e,n){t.isReadOnly?n.preventDefault():o(e,n)}),{priority:"low"}),this.listenTo(i,"clipboardOutput",(function(r,i){i.content.isEmpty||(i.dataTransfer.setData("text/html",e._htmlDataProcessor.toData(i.content)),i.dataTransfer.setData("text/plain",function e(t){var n="";if(t.is("$text")||t.is("$textProxy"))n=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))n=t.getAttribute("alt");else if(t.is("element","br"))n="\n";else{var r,i=null,o=d(t.getChildren());try{for(o.s();!(r=o.n()).done;){var a=r.value,s=e(a);i&&(i.is("containerElement")||a.is("containerElement"))&&(jd.includes(i.name)||jd.includes(a.name)?n+="\n":n+="\n\n"),n+=s,i=a}}catch(e){o.e(e)}finally{o.f()}}return n}(i.content))),"cut"==i.method&&t.model.deleteContent(n.selection)}),{priority:"low"})}}],[{key:"pluginName",get:function(){return"Clipboard"}},{key:"requires",get:function(){return[zd]}}]),n}(Vc),Fd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"execute",value:function(){var e=this,t=this.editor.model,n=t.document;t.change((function(r){!function(e,t,n,r){var i=n.isCollapsed,o=n.getFirstRange(),a=o.start.parent,s=o.end.parent;if(r.isLimit(a)||r.isLimit(s))i||a!=s||e.deleteContent(n);else if(i){var l=ud(t.model.schema,n.getAttributes());Vd(t,o.start),t.setSelectionAttribute(l)}else{var c=!(o.start.isAtStart&&o.end.isAtEnd),u=a==s;e.deleteContent(n,{leaveUnmerged:c}),c&&(u?Vd(t,n.focus):t.setSelection(s,0))}}(e.editor.model,r,n.selection,t.schema),e.fire("afterExecute",{writer:r})}))}}]),n}(Hc);function Vd(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var Ud=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.editing.view,n=t.document;t.addObserver(gd),e.commands.add("enter",new Fd(e)),this.listenTo(n,"enter",(function(n,r){r.preventDefault(),r.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"})}}],[{key:"pluginName",get:function(){return"Enter"}}]),n}(Vc),Hd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"execute",value:function(){var e=this.editor.model,t=e.document.selection,n=e.schema.getLimitElement(t);if(t.containsEntireContent(n)||!Kd(e.schema,n))do{if(!(n=n.parent))return}while(!Kd(e.schema,n));e.change((function(e){e.setSelection(n,"in")}))}}]),n}(Hc);function Kd(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}for(var Wd=Yr("Ctrl+A"),Gd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new Hd(e)),this.listenTo(t,"keydown",(function(t,n){qr(n)===Wd&&(e.execute("selectAll"),n.preventDefault())}))}}],[{key:"pluginName",get:function(){return"SelectAllEditing"}}]),n}(Vc),qd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor;t.ui.componentFactory.add("selectAll",(function(n){var r=t.commands.get("selectAll"),i=new bc(n),o=n.t;return i.set({label:o("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),i.bind("isOn","isEnabled").to(r,"value","isEnabled"),e.listenTo(i,"execute",(function(){t.execute("selectAll"),t.editing.view.focus()})),i}))}}],[{key:"pluginName",get:function(){return"SelectAllUI"}}]),n}(Vc),Yd=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,null,[{key:"requires",get:function(){return[Gd,qd]}},{key:"pluginName",get:function(){return"SelectAll"}}]),n}(Vc),Qd=function(){function e(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20;m(this,e),this.model=t,this.size=0,this.limit=r,this.isLocked=!1,this._changeCallback=function(e,t){"transparent"!=t.type&&t!==n._batch&&n._reset(!0)},this._selectionChangeCallback=function(){n._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}return p(e,[{key:"input",value:function(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}},{key:"lock",value:function(){this.isLocked=!0}},{key:"unlock",value:function(){this.isLocked=!1}},{key:"destroy",value:function(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}},{key:"_reset",value:function(e){this.isLocked&&!e||(this._batch=null,this.size=0)}},{key:"batch",get:function(){return this._batch||(this._batch=this.model.createBatch()),this._batch}}]),e}(),$d=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e))._buffer=new Qd(e.model,r),i._batches=new WeakSet,i}return p(n,[{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this),this._buffer.destroy()}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.document,i=t.text||"",o=i.length,a=t.range?n.createSelection(t.range):r.selection,s=t.resultRange;n.enqueueChange(this._buffer.batch,(function(t){e._buffer.lock(),e._batches.add(e._buffer.batch),n.deleteContent(a),i&&n.insertContent(t.createText(i,r.selection.getAttributes()),a),s?t.setSelection(s):a.is("documentSelection")||t.setSelection(a),e._buffer.unlock(),e._buffer.input(o)}))}},{key:"buffer",get:function(){return this._buffer}}]),n}(Hc),Zd=[qr("arrowUp"),qr("arrowRight"),qr("arrowDown"),qr("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255],Jd=112;Jd<=135;Jd++)Zd.push(Jd);function Xd(e){return!!e.ctrlKey||Zd.includes(e.keyCode)}function eh(e){if(e.newChildren.length-e.oldChildren.length==1){var t=function(e,t){var n,r=[],i=0;return e.forEach((function(e){"equal"==e?(o(),i++):"insert"==e?(a("insert")?n.values.push(t[i]):(o(),n={type:"insert",index:i,values:[t[i]]}),i++):a("delete")?n.howMany++:(o(),n={type:"delete",index:i,howMany:1})})),o(),r;function o(){n&&(r.push(n),n=null)}function a(e){return n&&n.type==e}}(Di(e.oldChildren,e.newChildren,th),e.newChildren);if(!(t.length>1)){var n=t[0];return n.values[0]&&n.values[0].is("$text")?n:void 0}}}function th(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}var nh=function(){function e(t){m(this,e),this.editor=t,this.editing=this.editor.editing}return p(e,[{key:"handle",value:function(e,t){if(function(e){if(0==e.length)return!1;var t,n=d(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;if("children"===r.type&&!eh(r))return!0}}catch(e){n.e(e)}finally{n.f()}return!1}(e))this._handleContainerChildrenMutations(e,t);else{var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;this._handleTextMutation(i,t),this._handleTextNodeInsertion(i)}}catch(e){r.e(e)}finally{r.f()}}}},{key:"_handleContainerChildrenMutations",value:function(e,t){var n=function(e){var t=e.map((function(e){return e.node})).reduce((function(e,t){return e.getCommonAncestor(t,{includeSelf:!0})}));if(t)return t.getAncestors({includeSelf:!0,parentFirst:!0}).find((function(e){return e.is("containerElement")||e.is("rootElement")}))}(e);if(n){var r=this.editor.editing.view.domConverter.mapViewToDom(n),i=new ji(this.editor.editing.view.document),o=this.editor.data.toModel(i.domToView(r)).getChild(0),a=this.editor.editing.mapper.toModelElement(n);if(a){var s=Array.from(o.getChildren()),l=Array.from(a.getChildren()),c=s[s.length-1],u=l[l.length-1],d=c&&c.is("element","softBreak"),h=u&&!u.is("element","softBreak");d&&h&&s.pop();var f=this.editor.model.schema;if(rh(s,f)&&rh(l,f)){var g=s.map((function(e){return e.is("$text")?e.data:"@"})).join("").replace(/\u00A0/g," "),m=l.map((function(e){return e.is("$text")?e.data:"@"})).join("").replace(/\u00A0/g," ");if(m!==g){var v=ih(Di(m,g)),p=v.firstChangeAt,k=v.insertions,b=v.deletions,y=null;t&&(y=this.editing.mapper.toModelRange(t.getFirstRange()));var w=g.substr(p,k),C=this.editor.model.createRange(this.editor.model.createPositionAt(a,p),this.editor.model.createPositionAt(a,p+b));this.editor.execute("input",{text:w,range:C,resultRange:y})}}}}}},{key:"_handleTextMutation",value:function(e,t){if("text"==e.type){var n=e.newText.replace(/\u00A0/g," "),r=e.oldText.replace(/\u00A0/g," ");if(r!==n){var i=ih(Di(r,n)),o=i.firstChangeAt,a=i.insertions,s=i.deletions,l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));var c=this.editing.view.createPositionAt(e.node,o),u=this.editing.mapper.toModelPosition(c),d=this.editor.model.createRange(u,u.getShiftedBy(s)),h=n.substr(o,a);this.editor.execute("input",{text:h,range:d,resultRange:l})}}}},{key:"_handleTextNodeInsertion",value:function(e){if("children"==e.type){var t=eh(e),n=this.editing.view.createPositionAt(e.node,t.index),r=this.editing.mapper.toModelPosition(n),i=t.values[0].data;this.editor.execute("input",{text:i.replace(/\u00A0/g," "),range:this.editor.model.createRange(r)})}}}]),e}();function rh(e,t){return e.every((function(e){return t.isInline(e)}))}function ih(e){for(var t=null,n=null,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.document;n.enqueueChange(this._buffer.batch,(function(i){e._buffer.lock();var o=i.createSelection(t.selection||r.selection),a=o.isCollapsed;if(o.isCollapsed&&n.modifySelection(o,{direction:e.direction,unit:t.unit}),e._shouldEntireContentBeReplacedWithParagraph(t.sequence||1))e._replaceEntireContentWithParagraph(i);else if(!o.isCollapsed){var s=0;o.getFirstRange().getMinimalFlatRanges().forEach((function(e){s+=Mr(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),n.deleteContent(o,{doNotResetEntireContent:a,direction:e.direction}),e._buffer.input(s),i.setSelection(o),e._buffer.unlock()}}))}},{key:"_shouldEntireContentBeReplacedWithParagraph",value:function(e){if(e>1)return!1;var t=this.editor.model,n=t.document.selection,r=t.schema.getLimitElement(n);if(!n.isCollapsed||!n.containsEntireContent(r))return!1;if(!t.schema.checkChild(r,"paragraph"))return!1;var i=r.getChild(0);return!i||"paragraph"!==i.name}},{key:"_replaceEntireContentWithParagraph",value:function(e){var t=this.editor.model,n=t.document.selection,r=t.schema.getLimitElement(n),i=e.createElement("paragraph");e.remove(e.createRangeIn(r)),e.insert(i,r),e.setSelection(i,0)}},{key:"buffer",get:function(){return this._buffer}}]),n}(Hc),sh=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),r=t.call(this,e);var i=e.document,o=0;function a(e,t,n){var r;i.once("delete",(function(e){return r=e}),{priority:Number.POSITIVE_INFINITY}),i.fire("delete",new ho(i,t,n)),r&&r.stop.called&&e.stop()}return i.on("keyup",(function(e,t){t.keyCode!=Gr.delete&&t.keyCode!=Gr.backspace||(o=0)})),i.on("keydown",(function(e,t){var n={};if(t.keyCode==Gr.delete)n.direction="forward",n.unit="character";else{if(t.keyCode!=Gr.backspace)return;n.direction="backward",n.unit="codePoint"}var r=Rr?t.altKey:t.ctrlKey;n.unit=r?"word":n.unit,n.sequence=++o,a(e,t.domEvent,n)})),Ur&&i.on("beforeinput",(function(t,n){if("deleteContentBackward"==n.domEvent.inputType){var r={unit:"codepoint",direction:"backward",sequence:1},i=n.domTarget.ownerDocument.defaultView.getSelection();i.anchorNode==i.focusNode&&i.anchorOffset+1!=i.focusOffset&&(r.selectionToRemove=e.domConverter.domSelectionToView(i)),a(t,n.domEvent,r)}})),r}return p(n,[{key:"observe",value:function(){}}]),n}(Gi),lh=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.editing.view,n=t.document;if(t.addObserver(sh),e.commands.add("forwardDelete",new ah(e,"forward")),e.commands.add("delete",new ah(e,"backward")),this.listenTo(n,"delete",(function(n,r){var i={unit:r.unit,sequence:r.sequence};if(r.selectionToRemove){var o,a=e.model.createSelection(),s=[],l=d(r.selectionToRemove.getRanges());try{for(l.s();!(o=l.n()).done;){var c=o.value;s.push(e.editing.mapper.toModelRange(c))}}catch(e){l.e(e)}finally{l.f()}a.setTo(s),i.selection=a}e.execute("forward"==r.direction?"forwardDelete":"delete",i),r.preventDefault(),t.scrollToTheSelection()})),Ur){var r=null;this.listenTo(n,"delete",(function(e,t){var n=t.domTarget.ownerDocument.defaultView.getSelection();r={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}}),{priority:"lowest"}),this.listenTo(n,"keyup",(function(e,t){if(r){var n=t.domTarget.ownerDocument.defaultView.getSelection();n.collapse(r.anchorNode,r.anchorOffset),n.extend(r.focusNode,r.focusOffset),r=null}}))}}}],[{key:"pluginName",get:function(){return"Delete"}}]),n}(Vc),ch=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,null,[{key:"requires",get:function(){return[oh,lh]}},{key:"pluginName",get:function(){return"Typing"}}]),n}(Vc),uh=new Map;function dh(e,t,n){var r=uh.get(e);r||(r=new Map,uh.set(e,r)),r.set(t,n)}function hh(e){return[e]}function fh(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=function(e,t){var n=uh.get(e);return n&&n.has(t)?n.get(t):hh}(e.constructor,t.constructor);try{return r(e=e.clone(),t,n)}catch(e){throw e}}function gh(e,t,n){e=e.slice(),t=t.slice();var r=new mh(n.document,n.useRelations,n.forceWeakRemove);r.setOriginalOperations(e),r.setOriginalOperations(t);var i=r.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:i};var o,a=new WeakMap,s=d(e);try{for(s.s();!(o=s.n()).done;){var l=o.value;a.set(l,0)}}catch(e){s.e(e)}finally{s.f()}for(var c={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length},u=0;u2&&void 0!==arguments[2]&&arguments[2];m(this,e),this.originalOperations=new Map,this._history=t.history,this._useRelations=n,this._forceWeakRemove=!!r,this._relations=new Map}return p(e,[{key:"setOriginalOperations",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=n?this.originalOperations.get(n):null,i=d(e);try{for(i.s();!(t=i.n()).done;){var o=t.value;this.originalOperations.set(o,r||o)}}catch(e){i.e(e)}finally{i.f()}}},{key:"updateRelation",value:function(e,t){switch(e.constructor){case _s:switch(t.constructor){case Ms:e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter");break;case _s:e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter")}break;case Ts:switch(t.constructor){case Ms:e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");break;case _s:(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))&&this._setRelation(e,t,"splitBefore")}break;case Ms:switch(t.constructor){case Ms:e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement");break;case Ts:e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource")}break;case Ds:var n=e.newRange;if(!n)return;switch(t.constructor){case _s:var r=ia._createFromPositionAndShift(t.sourcePosition,t.howMany),i=r.containsPosition(n.start)||r.start.isEqual(n.start),o=r.containsPosition(n.end)||r.end.isEqual(n.end);!i&&!o||r.containsRange(n)||this._setRelation(e,t,{side:i?"left":"right",path:i?n.start.path.slice():n.end.path.slice()});break;case Ms:var a=n.start.isEqual(t.targetPosition),s=n.start.isEqual(t.deletionPosition),l=n.end.isEqual(t.deletionPosition),c=n.end.isEqual(t.sourcePosition);(a||s||l||c)&&this._setRelation(e,t,{wasInLeftElement:a,wasStartBeforeMergedElement:s,wasEndBeforeMergedElement:l,wasInRightElement:c})}}}},{key:"getContext",value:function(e,t,n){return{aIsStrong:n,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}},{key:"_wasUndone",value:function(e){var t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}},{key:"_getRelation",value:function(e,t){var n=this.originalOperations.get(t),r=this._history.getUndoneOperation(n);if(!r)return null;var i=this.originalOperations.get(e),o=this._relations.get(i);return o&&o.get(r)||null}},{key:"_setRelation",value:function(e,t,n){var r=this.originalOperations.get(e),i=this.originalOperations.get(t),o=this._relations.get(r);o||(o=new Map,this._relations.set(r,o)),o.set(i,n)}}]),e}();function vh(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){n.value.baseVersion=t++}}catch(e){r.e(e)}finally{r.f()}}function ph(e,t){for(var n=0;n0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]})),dh(_s,xs,(function(e,t){var n=ia._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=n.start,e.howMany=n.end.offset-n.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]})),dh(_s,_s,(function(e,t,n){var r,i=ia._createFromPositionAndShift(e.sourcePosition,e.howMany),o=ia._createFromPositionAndShift(t.sourcePosition,t.howMany),a=n.aIsStrong,s=!n.aIsStrong;if("insertBefore"==n.abRelation||"insertAfter"==n.baRelation?s=!0:"insertAfter"!=n.abRelation&&"insertBefore"!=n.baRelation||(s=!1),r=e.targetPosition.isEqual(t.targetPosition)&&s?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),bh(e,t)&&bh(t,e))return[t.getReversed()];if(i.containsPosition(t.targetPosition)&&i.containsRange(o,!0))return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),yh([i],r);if(o.containsPosition(e.targetPosition)&&o.containsRange(i,!0))return i.start=i.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),i.end=i.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),yh([i],r);var l=vn(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==l||"extension"==l)return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),yh([i],r);"remove"!=e.type||"remove"==t.type||n.aWasUndone||n.forceWeakRemove?"remove"==e.type||"remove"!=t.type||n.bWasUndone||n.forceWeakRemove||(a=!1):a=!0;var c,u=[],f=d(i.getDifference(o));try{for(f.s();!(c=f.n()).done;){var g=c.value;g.start=g.start._getTransformedByDeletion(t.sourcePosition,t.howMany),g.end=g.end._getTransformedByDeletion(t.sourcePosition,t.howMany);var m="same"==vn(g.start.getParentPath(),t.getMovedRangeStart().getParentPath()),v=g._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,m);u.push.apply(u,h(v))}}catch(e){f.e(e)}finally{f.f()}var p=i.getIntersection(o);return null!==p&&a&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===u.length?u.push(p):1==u.length?o.start.isBefore(i.start)||o.start.isEqual(i.start)?u.unshift(p):u.push(p):u.splice(1,0,p)),0===u.length?[new $s(e.baseVersion)]:yh(u,r)})),dh(_s,Ts,(function(e,t,n){var r=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=n.abRelation||(r=e.targetPosition._getTransformedBySplitOperation(t));var i=ia._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=r,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){var o=new ia(t.splitPosition,i.end);return o=o._getTransformedBySplitOperation(t),yh([new ia(i.start,t.splitPosition),o],r)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==n.abRelation&&(r=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==n.abRelation&&(r=e.targetPosition);var a=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){var s=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&s&&!n.aWasUndone&&a.push(ia._createFromPositionAndShift(t.insertionPosition,1))}return yh(a,r)})),dh(_s,Ms,(function(e,t,n){var r=ia._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&r.containsPosition(t.sourcePosition))if("remove"!=e.type||n.forceWeakRemove){if(1==e.howMany)return n.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new $s(0)]}else if(!n.aWasUndone){var i=[],o=t.graveyardPosition.clone(),a=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(i.push(new _s(e.sourcePosition,e.howMany-1,e.targetPosition,0)),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),a=a._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));var s=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),l=new _s(o,1,s,0),c=l.getMovedRangeStart().path.slice();c.push(0);var u=new ea(l.targetPosition.root,c);a=a._getTransformedByMove(o,s,1);var d=new _s(a,t.howMany,u,0);return i.push(l),i.push(d),i}var h=ia._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=h.start,e.howMany=h.end.offset-h.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),dh(Es,xs,(function(e,t){return e.position=e.position._getTransformedByInsertOperation(t),[e]})),dh(Es,Ms,(function(e,t){return e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e])})),dh(Es,_s,(function(e,t){return e.position=e.position._getTransformedByMoveOperation(t),[e]})),dh(Es,Es,(function(e,t,n){if(e.position.isEqual(t.position)){if(!n.aIsStrong)return[new $s(0)];e.oldName=t.newName}return[e]})),dh(Es,Ts,(function(e,t){if("same"==vn(e.position.path,t.splitPosition.getParentPath())&&!t.graveyardPosition){var n=new Es(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,n]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),dh(Ss,Ss,(function(e,t,n){if(e.root===t.root&&e.key===t.key){if(!n.aIsStrong||e.newValue===t.newValue)return[new $s(0)];e.oldValue=t.newValue}return[e]})),dh(Ts,xs,(function(e,t){return e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset0}},{key:"addBatch",value:function(e){var t=this.editor.model.document.selection,n={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:n}),this.refresh()}},{key:"clearStack",value:function(){this._stack=[],this.refresh()}},{key:"_restoreSelection",value:function(e,t,n){var r,i=this.editor.model,o=i.document,a=[],s=e.map((function(e){return e.getTransformedByOperations(n)})),l=s.flat(),c=d(s);try{for(c.s();!(r=c.n()).done;){var u=r.value.filter((function(e){return!Ah(e,l)}));Ch(u);var h=u.find((function(e){return e.root!=o.graveyard}));h&&a.push(h)}}catch(e){c.e(e)}finally{c.f()}a.length&&i.change((function(e){e.setSelection(a,{backward:t})}))}},{key:"_undo",value:function(e,t){var n=this.editor.model,r=n.document;this._createdBatches.add(t);var i=e.operations.slice().filter((function(e){return e.isDocumentOperation}));i.reverse();var o,a=d(i);try{for(a.s();!(o=a.n()).done;){var s,l=o.value,c=l.baseVersion+1,u=Array.from(r.history.getOperations(c)),h=d(gh([l.getReversed()],u,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA);try{for(h.s();!(s=h.n()).done;){var f=s.value;t.addOperation(f),n.applyOperation(f),r.history.setOperationAsUndone(l,f)}}catch(e){h.e(e)}finally{h.f()}}}catch(e){a.e(e)}finally{a.f()}}}]),n}(Hc);function Ch(e){e.sort((function(e,t){return e.start.isBefore(t.start)?-1:1}));for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:null,n=t?this._stack.findIndex((function(e){return e.batch==t})):this._stack.length-1,r=this._stack.splice(n,1)[0],i=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(i,(function(){e._undo(r.batch,i);var t=e.editor.model.document.history.getOperations(r.batch.baseVersion);e._restoreSelection(r.selection.ranges,r.selection.isBackward,t),e.fire("revert",r.batch,i)})),this.refresh()}}]),n}(wh),xh=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"execute",value:function(){var e=this,t=this._stack.pop(),n=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(n,(function(){var r=t.batch.operations[t.batch.operations.length-1].baseVersion+1,i=e.editor.model.document.history.getOperations(r);e._restoreSelection(t.selection.ranges,t.selection.isBackward,i),e._undo(t.batch,n)})),this.refresh()}}]),n}(wh),Dh=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._batchRegistry=new WeakSet,r}return p(n,null,[{key:"pluginName",get:function(){return"UndoEditing"}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor;this._undoCommand=new _h(t),this._redoCommand=new xh(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",(function(t,n){var r=n[0];if(r.isDocumentOperation){var i=r.batch,o=e._redoCommand._createdBatches.has(i),a=e._undoCommand._createdBatches.has(i);e._batchRegistry.has(i)||"transparent"==i.type&&!o&&!a||(o?e._undoCommand.addBatch(i):a||(e._undoCommand.addBatch(i),e._redoCommand.clearStack()),e._batchRegistry.add(i))}}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(function(t,n,r){e._redoCommand.addBatch(r)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}]),n}(Vc),Eh='',Sh='',Mh=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.locale,n=e.t,r="ltr"==t.uiLanguageDirection?Eh:Sh,i="ltr"==t.uiLanguageDirection?Sh:Eh;this._addButton("undo",n("Undo"),"CTRL+Z",r),this._addButton("redo",n("Redo"),"CTRL+Y",i)}},{key:"_addButton",value:function(e,t,n,r){var i=this,o=this.editor;o.ui.componentFactory.add(e,(function(a){var s=o.commands.get(e),l=new bc(a);return l.set({label:t,icon:r,keystroke:n,tooltip:!0}),l.bind("isEnabled").to(s,"isEnabled"),i.listenTo(l,"execute",(function(){o.execute(e),o.editing.view.focus()})),l}))}}]),n}(Vc),Th=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,null,[{key:"requires",get:function(){return[Dh,Mh]}},{key:"pluginName",get:function(){return"Undo"}}]),n}(Vc),Ih=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e)).attributeKey=r,i}return p(n,[{key:"refresh",value:function(){var e=this.editor.model,t=e.document;this.value=t.selection.getAttribute(this.attributeKey),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}},{key:"execute",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.document.selection,i=t.value;n.change((function(t){if(r.isCollapsed)i?t.setSelectionAttribute(e.attributeKey,i):t.removeSelectionAttribute(e.attributeKey);else{var o,a=d(n.schema.getValidRanges(r.getRanges(),e.attributeKey));try{for(a.s();!(o=a.n()).done;){var s=o.value;i?t.setAttribute(e.attributeKey,i,s):t.removeAttribute(e.attributeKey,s)}}catch(e){a.e(e)}finally{a.f()}}}))}}]),n}(Hc),Bh=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).bindTemplate;return r.set("color"),r.set("hasBorder"),r.icon='',r.extendTemplate({attributes:{style:{backgroundColor:i.to("color")},class:["ck","ck-color-grid__tile",i.if("hasBorder","ck-color-table__color-tile_bordered")]}}),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.iconView.fillColor="hsl(0, 0%, 100%)"}}]),n}(bc),Nh=n(27);Yl()(Nh.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Nh.a.locals;var Ph=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n),i=t.call(this,e);var o=r&&r.colorDefinitions||[],a={};return r&&r.columns&&(a.gridTemplateColumns="repeat( ".concat(r.columns,", 1fr)")),i.set("selectedColor"),i.items=i.createCollection(),i.focusTracker=new _l,i.keystrokes=new pl,i._focusCycler=new nc({focusables:i.items,focusTracker:i.focusTracker,keystrokeHandler:i.keystrokes,actions:{focusPrevious:"arrowleft",focusNext:"arrowright"}}),i.items.on("add",(function(e,t){t.isOn=t.color===i.selectedColor})),o.forEach((function(e){var t=new Bh;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",(function(){i.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})})),i.items.add(t)})),i.setTemplate({tag:"div",children:i.items,attributes:{class:["ck","ck-color-grid"],style:a}}),i.on("change:selectedColor",(function(e,t,n){var r,o=d(i.items);try{for(o.s();!(r=o.n()).done;){var a=r.value;a.isOn=a.color===n}}catch(e){o.e(e)}finally{o.f()}})),i}return p(n,[{key:"focus",value:function(){this.items.length&&this.items.first.focus()}},{key:"focusLast",value:function(){this.items.length&&this.items.last.focus()}},{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this);var t,r=d(this.items);try{for(r.s();!(t=r.n()).done;){var i=t.value;this.focusTracker.add(i.element)}}catch(e){r.e(e)}finally{r.f()}this.items.on("add",(function(t,n){e.focusTracker.add(n.element)})),this.items.on("remove",(function(t,n){e.focusTracker.remove(n.element)})),this.keystrokes.listenTo(this.element)}}]),n}($l),Lh=n(28);Yl()(Lh.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Lh.a.locals;var Oh=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).set("text"),r.set("for"),r.id="ck-editor__label_"+qt();var i=r.bindTemplate;return r.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:r.id,for:i.to("for")},children:[{text:i.to("text")}]}),r}return n}($l);ln(function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).set("isEmpty",!0),r.on("change",(function(){r.set("isEmpty",0===r.length)})),r}return p(n,[{key:"add",value:function(e,t){this.find((function(t){return t.color===e.color}))||c(D(n.prototype),"add",this).call(this,e,t)}},{key:"hasColor",value:function(e){return!!this.find((function(t){return t.color===e}))}}]),n}(cn),vr);var zh='',jh=n(29);Yl()(jh.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),jh.a.locals;var Rh="fontSize",Fh="fontFamily";function Vh(e,t){var n,r={model:{key:e,values:[]},view:{},upcastAlso:{}},i=d(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;r.model.values.push(o.model),r.view[o.model]=o.view,o.upcastAlso&&(r.upcastAlso[o.model]=o.upcastAlso)}}catch(e){i.e(e)}finally{i.f()}return r}var Uh=function(e){k(n,e);var t=b(n);function n(e){return m(this,n),t.call(this,e,Fh)}return n}(Ih);function Hh(e){return e.map(Kh).filter((function(e){return!!e}))}function Kh(e){return"object"==E(e)?e:"default"===e?{title:"Default",model:void 0}:"string"==typeof e?function(e){var t=e.replace(/"|'/g,"").split(","),n=t[0],r=t.map(Wh).join(", ");return{title:n,model:r,view:{name:"span",styles:{"font-family":r},priority:7}}}(e):void 0}function Wh(e){return(e=e.trim()).indexOf(" ")>0&&(e="'".concat(e,"'")),e}var Gh=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define(Fh,{options:["default","Arial, Helvetica, sans-serif","Courier New, Courier, monospace","Georgia, serif","Lucida Sans Unicode, Lucida Grande, sans-serif","Tahoma, Geneva, sans-serif","Times New Roman, Times, serif","Trebuchet MS, Helvetica, sans-serif","Verdana, Geneva, sans-serif"],supportAllValues:!1}),r}return p(n,null,[{key:"pluginName",get:function(){return"FontFamilyEditing"}}]),p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:Fh}),e.model.schema.setAttributeProperties(Fh,{isFormatting:!0,copyOnEnter:!0});var t=Hh(e.config.get("fontFamily.options")).filter((function(e){return e.model})),n=Vh(Fh,t);e.config.get("fontFamily.supportAllValues")?this._prepareAnyValueConverters():e.conversion.attributeToElement(n),e.commands.add(Fh,new Uh(e))}},{key:"_prepareAnyValueConverters",value:function(){var e=this.editor;e.conversion.for("downcast").attributeToElement({model:Fh,view:function(e,t){return t.writer.createAttributeElement("span",{style:"font-family:"+e},{priority:7})}}),e.conversion.for("upcast").attributeToAttribute({model:{key:Fh,value:function(e){return e.getStyle("font-family")}},view:{name:"span",styles:{"font-family":/.*/}}})}}]),n}(Vc),qh=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t,r=this._getLocalizedOptions(),i=t.commands.get(Fh);t.ui.componentFactory.add(Fh,(function(o){var a=Ic(o);return Nc(a,function(e,t){var n,r=new cn,i=d(e);try{var o=function(){var e=n.value,i={type:"button",model:new Td({commandName:Fh,commandParam:e.model,label:e.title,withText:!0})};i.model.bind("isOn").to(t,"value",(function(t){return t===e.model||!(!t||!e.model)&&t.split(",")[0].replace(/'/g,"").toLowerCase()===e.model.toLowerCase()})),e.view&&e.view.styles&&i.model.set("labelStyle","font-family: "+e.view.styles["font-family"]),r.add(i)};for(i.s();!(n=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}return r}(r,i)),a.buttonView.set({label:n("Font Family"),icon:'',tooltip:!0}),a.extendTemplate({attributes:{class:"ck-font-family-dropdown"}}),a.bind("isEnabled").to(i),e.listenTo(a,"execute",(function(e){t.execute(e.source.commandName,{value:e.source.commandParam}),t.editing.view.focus()})),a}))}},{key:"_getLocalizedOptions",value:function(){var e=this.editor,t=e.t;return Hh(e.config.get(Fh).options).map((function(e){return"Default"===e.title&&(e.title=t("Default")),e}))}}]),n}(Vc),Yh=function(e){k(n,e);var t=b(n);function n(e){return m(this,n),t.call(this,e,Rh)}return n}(Ih);function Qh(e){return e.map((function(e){return function(e){if("object"==E(t=e)&&t.title&&t.model&&t.view)return Zh(e);var t,n=function(e){return $h[e]||$h[e.model]}(e);return n?Zh(n):"default"===e?{model:void 0,title:"Default"}:function(e){var t;if("object"==E(e)){if(!e.model)throw new Qt.a("font-size-invalid-definition",null,e);t=parseFloat(e.model)}else t=parseFloat(e);return isNaN(t)}(e)?void 0:function(e){return"number"!=typeof e&&"string"!=typeof e||(e={title:String(e),model:parseFloat(e)+"px"}),e.view={name:"span",styles:{"font-size":e.model}},Zh(e)}(e)}(e)})).filter((function(e){return!!e}))}var $h={get tiny(){return{title:"Tiny",model:"tiny",view:{name:"span",classes:"text-tiny",priority:7}}},get small(){return{title:"Small",model:"small",view:{name:"span",classes:"text-small",priority:7}}},get big(){return{title:"Big",model:"big",view:{name:"span",classes:"text-big",priority:7}}},get huge(){return{title:"Huge",model:"huge",view:{name:"span",classes:"text-huge",priority:7}}}};function Zh(e){return e.view.priority||(e.view.priority=7),e}var Jh=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define(Rh,{options:["tiny","small","default","big","huge"],supportAllValues:!1}),r}return p(n,null,[{key:"pluginName",get:function(){return"FontSizeEditing"}}]),p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:Rh}),e.model.schema.setAttributeProperties(Rh,{isFormatting:!0,copyOnEnter:!0});var t=e.config.get("fontSize.supportAllValues"),n=Qh(this.editor.config.get("fontSize.options")).filter((function(e){return e.model})),r=Vh(Rh,n);t?this._prepareAnyValueConverters(r):e.conversion.attributeToElement(r),e.commands.add(Rh,new Yh(e))}},{key:"_prepareAnyValueConverters",value:function(e){var t=this.editor,n=e.model.values.filter((function(e){return!String(e).match(/[\d.]+[\w%]+/)}));if(n.length)throw new Qt.a("font-size-invalid-use-of-named-presets",null,{presets:n});t.conversion.for("downcast").attributeToElement({model:Rh,view:function(e,t){var n=t.writer;if(e)return n.createAttributeElement("span",{style:"font-size:"+e},{priority:7})}}),t.conversion.for("upcast").attributeToAttribute({model:{key:Rh,value:function(e){return e.getStyle("font-size")}},view:{name:"span"}})}}]),n}(Vc),Xh=n(30);Yl()(Xh.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Xh.a.locals;var ef=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t,r=this._getLocalizedOptions(),i=t.commands.get(Rh);t.ui.componentFactory.add(Rh,(function(o){var a=Ic(o);return Nc(a,function(e,t){var n,r=new cn,i=d(e);try{var o=function(){var e=n.value,i={type:"button",model:new Td({commandName:Rh,commandParam:e.model,label:e.title,class:"ck-fontsize-option",withText:!0})};e.view&&e.view.styles&&i.model.set("labelStyle","font-size:"+e.view.styles["font-size"]),e.view&&e.view.classes&&i.model.set("class","".concat(i.model.class," ").concat(e.view.classes)),i.model.bind("isOn").to(t,"value",(function(t){return t===e.model})),r.add(i)};for(i.s();!(n=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}return r}(r,i)),a.buttonView.set({label:n("Font Size"),icon:'',tooltip:!0}),a.extendTemplate({attributes:{class:["ck-font-size-dropdown"]}}),a.bind("isEnabled").to(i),e.listenTo(a,"execute",(function(e){t.execute(e.source.commandName,{value:e.source.commandParam}),t.editing.view.focus()})),a}))}},{key:"_getLocalizedOptions",value:function(){var e=this.editor,t=e.t,n={Default:t("Default"),Tiny:t("Tiny"),Small:t("Small"),Big:t("Big"),Huge:t("Huge")};return Qh(e.config.get(Rh).options).map((function(e){var t=n[e.title];return t&&t!=e.title&&(e=Object.assign({},e,{title:t})),e}))}}]),n}(Vc),tf=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.model,t=Wc(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&nf(t,e.schema)}},{key:"execute",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.editor.model,n=t.document;t.change((function(r){var i,o=d((e.selection||n.selection).getSelectedBlocks());try{for(o.s();!(i=o.n()).done;){var a=i.value;!a.is("element","paragraph")&&nf(a,t.schema)&&r.rename(a,"paragraph")}}catch(e){o.e(e)}finally{o.f()}}))}}]),n}(Hc);function nf(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}var rf=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"execute",value:function(e){var t=this.editor.model,n=e.position;t.change((function(e){var r=e.createElement("paragraph");if(!t.schema.checkChild(n.parent,r)){var i=t.schema.findAllowedParent(n,r);if(!i)return;n=e.split(n,i).position}t.insertContent(r,n),e.setSelection(r,"in")}))}}]),n}(Hc),of=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.model;e.commands.add("paragraph",new tf(e)),e.commands.add("insertParagraph",new rf(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:function(e,t){var r=t.writer;return n.paragraphLikeElements.has(e.name)?e.isEmpty?null:r.createElement("paragraph"):null},view:/.+/,converterPriority:"low"})}}],[{key:"pluginName",get:function(){return"Paragraph"}}]),n}(Vc);of.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var af=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e)).modelElements=r,i}return p(n,[{key:"refresh",value:function(){var e=this,t=Wc(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((function(n){return sf(t,n,e.editor.model.schema)}))}},{key:"execute",value:function(e){var t=this.editor.model,n=t.document,r=e.value;t.change((function(e){var i,o=d(Array.from(n.selection.getSelectedBlocks()).filter((function(e){return sf(e,r,t.schema)})));try{for(o.s();!(i=o.n()).done;){var a=i.value;a.is("element",r)||e.rename(a,r)}}catch(e){o.e(e)}finally{o.f()}}))}}]),n}(Hc);function sf(e,t,n){return n.checkChild(e.parent,t)&&!n.isObject(e)}var lf="paragraph",cf=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]}),r}return p(n,null,[{key:"pluginName",get:function(){return"HeadingEditing"}}]),p(n,[{key:"init",value:function(){var e,t=this.editor,n=[],r=d(t.config.get("heading.options"));try{for(r.s();!(e=r.n()).done;){var i=e.value;i.model!==lf&&(t.model.schema.register(i.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(i),n.push(i.model))}}catch(e){r.e(e)}finally{r.f()}this._addDefaultH1Conversion(t),t.commands.add("heading",new af(t,n))}},{key:"afterInit",value:function(){var e=this.editor,t=e.commands.get("enter"),n=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(function(t,r){var i=e.model.document.selection.getFirstPosition().parent;n.some((function(e){return i.is("element",e.model)}))&&!i.is("element",lf)&&0===i.childCount&&r.writer.rename(i,lf)}))}},{key:"_addDefaultH1Conversion",value:function(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:Yt.get("low")+1})}}],[{key:"requires",get:function(){return[of]}}]),n}(Vc),uf=n(31);Yl()(uf.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),uf.a.locals;var df=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t,r=function(e){var t=e.t,n={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map((function(e){var t=n[e.title];return t&&t!=e.title&&(e.title=t),e}))}(t),i=n("Choose heading"),o=n("Heading");t.ui.componentFactory.add("heading",(function(n){var a,s={},l=new cn,c=t.commands.get("heading"),u=t.commands.get("paragraph"),h=[c],f=d(r);try{var g=function(){var e=a.value,t={type:"button",model:new Td({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(u,"value"),t.model.set("commandName","paragraph"),h.push(u)):(t.model.bind("isOn").to(c,"value",(function(t){return t===e.model})),t.model.set({commandName:"heading",commandValue:e.model})),l.add(t),s[e.model]=e.title};for(f.s();!(a=f.n()).done;)g()}catch(e){f.e(e)}finally{f.f()}var m=Ic(n);return Nc(m,l),m.buttonView.set({isOn:!1,withText:!0,tooltip:o}),m.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),m.bind("isEnabled").toMany(h,"isEnabled",(function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=this.editor.model,r=n.document.selection,i=t.value;n.change((function(t){var o=n.schema.getValidRanges(r.getRanges(),"highlight");if(r.isCollapsed){var a=r.getFirstPosition();if(r.hasAttribute("highlight")){var s=function(t){return t.item.hasAttribute("highlight")&&t.item.getAttribute("highlight")===e.value},l=a.getLastMatchingPosition(s,{direction:"backward"}),c=a.getLastMatchingPosition(s),u=t.createRange(l,c);i&&e.value!==i?(t.setAttribute("highlight",i,u),t.setSelectionAttribute("highlight",i)):(t.removeAttribute("highlight",u),t.removeSelectionAttribute("highlight"))}else i&&t.setSelectionAttribute("highlight",i)}else{var h,f=d(o);try{for(f.s();!(h=f.n()).done;){var g=h.value;i?t.setAttribute("highlight",i,g):t.removeAttribute("highlight",g)}}catch(e){f.e(e)}finally{f.f()}}}))}}]),n}(Hc),ff=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("highlight",{options:[{model:"yellowMarker",class:"marker-yellow",title:"Yellow marker",color:"var(--ck-highlight-marker-yellow)",type:"marker"},{model:"greenMarker",class:"marker-green",title:"Green marker",color:"var(--ck-highlight-marker-green)",type:"marker"},{model:"pinkMarker",class:"marker-pink",title:"Pink marker",color:"var(--ck-highlight-marker-pink)",type:"marker"},{model:"blueMarker",class:"marker-blue",title:"Blue marker",color:"var(--ck-highlight-marker-blue)",type:"marker"},{model:"redPen",class:"pen-red",title:"Red pen",color:"var(--ck-highlight-pen-red)",type:"pen"},{model:"greenPen",class:"pen-green",title:"Green pen",color:"var(--ck-highlight-pen-green)",type:"pen"}]}),r}return p(n,null,[{key:"pluginName",get:function(){return"HighlightEditing"}}]),p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:"highlight"});var t=e.config.get("highlight.options");e.conversion.attributeToElement(function(e){var t,n={model:{key:"highlight",values:[]},view:{}},r=d(e);try{for(r.s();!(t=r.n()).done;){var i=t.value;n.model.values.push(i.model),n.view[i.model]={name:"mark",classes:i.class}}}catch(e){r.e(e)}finally{r.f()}return n}(t)),e.commands.add("highlight",new hf(e))}}]),n}(Vc),gf=n(32);Yl()(gf.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),gf.a.locals;var mf=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e,t=this.editor.config.get("highlight.options"),n=d(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this._addHighlighterButton(r)}}catch(e){n.e(e)}finally{n.f()}this._addRemoveHighlightButton(),this._addDropdown(t)}},{key:"_addRemoveHighlightButton",value:function(){var e=this.editor.t;this._addButton("removeHighlight",e("Remove highlight"),zh)}},{key:"_addHighlighterButton",value:function(e){var t=this.editor.commands.get("highlight");this._addButton("highlight:"+e.model,e.title,vf(e.type),e.model,(function(n){n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",(function(t){return t===e.model})),n.iconView.fillColor=e.color,n.isToggleable=!0}))}},{key:"_addButton",value:function(e,t,n,r){var i=this,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},a=this.editor;a.ui.componentFactory.add(e,(function(e){var s=new bc(e),l=i.localizedOptionTitles[t]?i.localizedOptionTitles[t]:t;return s.set({label:l,icon:n,tooltip:!0}),s.on("execute",(function(){a.execute("highlight",{value:r}),a.editing.view.focus()})),o(s),s}))}},{key:"_addDropdown",value:function(e){var t=this,n=this.editor,r=n.t,i=n.ui.componentFactory,o=e[0],a=e.reduce((function(e,t){return e[t.model]=t,e}),{});i.add("highlight",(function(s){var l=n.commands.get("highlight"),c=Ic(s,Bd),u=c.buttonView;u.set({tooltip:r("Highlight"),lastExecuted:o.model,commandValue:o.model,isToggleable:!0}),u.bind("icon").to(l,"value",(function(e){return vf(h(e,"type"))})),u.bind("color").to(l,"value",(function(e){return h(e,"color")})),u.bind("commandValue").to(l,"value",(function(e){return h(e,"model")})),u.bind("isOn").to(l,"value",(function(e){return!!e})),u.delegate("execute").to(c);var d=e.map((function(e){var n=i.create("highlight:"+e.model);return t.listenTo(n,"execute",(function(){return c.buttonView.set({lastExecuted:e.model})})),n}));function h(e,t){var n=e&&e!==u.lastExecuted?e:u.lastExecuted;return a[n][t]}return c.bind("isEnabled").toMany(d,"isEnabled",(function(){for(var e=arguments.length,t=new Array(e),n=0;n':''}var pf=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"observe",value:function(e){var t=this;this.listenTo(e,"load",(function(e,n){var r=n.target;t.checkShouldIgnoreEventFromTarget(r)||"IMG"==r.tagName&&t._fireEvents(n)}),{useCapture:!0})}},{key:"_fireEvents",value:function(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}]),n}(Gi),kf=function(){function e(){m(this,e),this._stack=[]}return p(e,[{key:"add",value:function(e,t){var n=this._stack,r=n[0];this._insertDescriptor(e);var i=n[0];r===i||bf(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:t})}},{key:"remove",value:function(e,t){var n=this._stack,r=n[0];this._removeDescriptor(e);var i=n[0];r===i||bf(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:t})}},{key:"_insertDescriptor",value:function(e){var t=this._stack,n=t.findIndex((function(t){return t.id===e.id}));if(!bf(e,t[n])){n>-1&&t.splice(n,1);for(var r=0;t[r]&&yf(t[r],e);)r++;t.splice(r,0,e)}}},{key:"_removeDescriptor",value:function(e){var t=this._stack,n=t.findIndex((function(t){return t.id===e}));n>-1&&t.splice(n,1)}}]),e}();function bf(e,t){return e&&t&&e.priority==t.priority&&wf(e.classes)==wf(t.classes)}function yf(e,t){return e.priority>t.priority||!(e.prioritywf(t.classes)}function wf(e){return Array.isArray(e)?e.sort().join(","):e}function Cf(e){return function(t){return t+e}}ln(kf,Jt);var Af=n(33);Yl()(Af.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Af.a.locals;var _f=Cf("px"),xf=Pi.document.body,Df=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).bindTemplate;return r.set("top",0),r.set("left",0),r.set("position","arrow_nw"),r.set("isVisible",!1),r.set("withArrow",!0),r.set("class"),r.content=r.createCollection(),r.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",i.to("position",(function(e){return"ck-balloon-panel_"+e})),i.if("isVisible","ck-balloon-panel_visible"),i.if("withArrow","ck-balloon-panel_with-arrow"),i.to("class")],style:{top:i.to("top",_f),left:i.to("left",_f)}},children:r.content}),r}return p(n,[{key:"show",value:function(){this.isVisible=!0}},{key:"hide",value:function(){this.isVisible=!1}},{key:"attachTo",value:function(e){this.show();var t=n.defaultPositions,r=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast],limiter:xf,fitInViewport:!0},e),i=n._getOptimalPosition(r),o=parseInt(i.left),a=parseInt(i.top),s=i.name;Object.assign(this,{top:a,left:o,position:s})}},{key:"pin",value:function(e){var t=this;this.unpin(),this._pinWhenIsVisibleCallback=function(){t.isVisible?t._startPinning(e):t._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}},{key:"unpin",value:function(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}},{key:"_startPinning",value:function(e){var t=this;this.attachTo(e);var n=Ef(e.target),r=e.limiter?Ef(e.limiter):xf;this.listenTo(Pi.document,"scroll",(function(i,o){var a=o.target,s=n&&a.contains(n),l=r&&a.contains(r);!s&&!l&&n&&r||t.attachTo(e)}),{useCapture:!0}),this.listenTo(Pi.window,"resize",(function(){t.attachTo(e)}))}},{key:"_stopPinning",value:function(){this.stopListening(Pi.document,"scroll"),this.stopListening(Pi.window,"resize")}}]),n}($l);function Ef(e){return Vt(e)?e:To(e)?e.commonAncestorContainer:"function"==typeof e?Ef(e()):null}function Sf(e,t){return e.top-t.height-Df.arrowVerticalOffset}function Mf(e){return e.bottom+Df.arrowVerticalOffset}Df.arrowHorizontalOffset=25,Df.arrowVerticalOffset=10,Df._getOptimalPosition=cc,Df.defaultPositions={northWestArrowSouthWest:function(e,t){return{top:Sf(e,t),left:e.left-Df.arrowHorizontalOffset,name:"arrow_sw"}},northWestArrowSouthMiddleWest:function(e,t){return{top:Sf(e,t),left:e.left-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_smw"}},northWestArrowSouth:function(e,t){return{top:Sf(e,t),left:e.left-t.width/2,name:"arrow_s"}},northWestArrowSouthMiddleEast:function(e,t){return{top:Sf(e,t),left:e.left-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_sme"}},northWestArrowSouthEast:function(e,t){return{top:Sf(e,t),left:e.left-t.width+Df.arrowHorizontalOffset,name:"arrow_se"}},northArrowSouthWest:function(e,t){return{top:Sf(e,t),left:e.left+e.width/2-Df.arrowHorizontalOffset,name:"arrow_sw"}},northArrowSouthMiddleWest:function(e,t){return{top:Sf(e,t),left:e.left+e.width/2-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_smw"}},northArrowSouth:function(e,t){return{top:Sf(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s"}},northArrowSouthMiddleEast:function(e,t){return{top:Sf(e,t),left:e.left+e.width/2-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_sme"}},northArrowSouthEast:function(e,t){return{top:Sf(e,t),left:e.left+e.width/2-t.width+Df.arrowHorizontalOffset,name:"arrow_se"}},northEastArrowSouthWest:function(e,t){return{top:Sf(e,t),left:e.right-Df.arrowHorizontalOffset,name:"arrow_sw"}},northEastArrowSouthMiddleWest:function(e,t){return{top:Sf(e,t),left:e.right-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_smw"}},northEastArrowSouth:function(e,t){return{top:Sf(e,t),left:e.right-t.width/2,name:"arrow_s"}},northEastArrowSouthMiddleEast:function(e,t){return{top:Sf(e,t),left:e.right-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_sme"}},northEastArrowSouthEast:function(e,t){return{top:Sf(e,t),left:e.right-t.width+Df.arrowHorizontalOffset,name:"arrow_se"}},southWestArrowNorthWest:function(e,t){return{top:Mf(e),left:e.left-Df.arrowHorizontalOffset,name:"arrow_nw"}},southWestArrowNorthMiddleWest:function(e,t){return{top:Mf(e),left:e.left-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_nmw"}},southWestArrowNorth:function(e,t){return{top:Mf(e),left:e.left-t.width/2,name:"arrow_n"}},southWestArrowNorthMiddleEast:function(e,t){return{top:Mf(e),left:e.left-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_nme"}},southWestArrowNorthEast:function(e,t){return{top:Mf(e),left:e.left-t.width+Df.arrowHorizontalOffset,name:"arrow_ne"}},southArrowNorthWest:function(e,t){return{top:Mf(e),left:e.left+e.width/2-Df.arrowHorizontalOffset,name:"arrow_nw"}},southArrowNorthMiddleWest:function(e,t){return{top:Mf(e),left:e.left+e.width/2-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_nmw"}},southArrowNorth:function(e,t){return{top:Mf(e),left:e.left+e.width/2-t.width/2,name:"arrow_n"}},southArrowNorthMiddleEast:function(e,t){return{top:Mf(e),left:e.left+e.width/2-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_nme"}},southArrowNorthEast:function(e,t){return{top:Mf(e),left:e.left+e.width/2-t.width+Df.arrowHorizontalOffset,name:"arrow_ne"}},southEastArrowNorthWest:function(e,t){return{top:Mf(e),left:e.right-Df.arrowHorizontalOffset,name:"arrow_nw"}},southEastArrowNorthMiddleWest:function(e,t){return{top:Mf(e),left:e.right-.25*t.width-Df.arrowHorizontalOffset,name:"arrow_nmw"}},southEastArrowNorth:function(e,t){return{top:Mf(e),left:e.right-t.width/2,name:"arrow_n"}},southEastArrowNorthMiddleEast:function(e,t){return{top:Mf(e),left:e.right-.75*t.width+Df.arrowHorizontalOffset,name:"arrow_nme"}},southEastArrowNorthEast:function(e,t){return{top:Mf(e),left:e.right-t.width+Df.arrowHorizontalOffset,name:"arrow_ne"}}};var Tf='',If="widget-type-around";function Bf(e,t,n){return e&&Lf(e)&&!n.isInline(t)}function Nf(e){return e.getAttribute(If)}var Pf="ck-widget_selected";function Lf(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function Of(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e.is("containerElement"))throw new Qt.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=Uf,n.label&&function(e,t,n){n.setCustomProperty("widgetLabel",t,e)}(e,n.label,t),n.hasSelectionHandle&&function(e,t){var n=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){var t=this.toDomElement(e),n=new mc;return n.set("content",Tf),n.render(),t.appendChild(n.element),t}));t.insert(t.createPositionAt(e,0),n),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),zf(e,t,(function(e,t,n){return n.addClass(r(t.classes),e)}),(function(e,t,n){return n.removeClass(r(t.classes),e)})),e;function r(e){return Array.isArray(e)?e:[e]}}function zf(e,t,n,r){var i=new kf;i.on("change:top",(function(t,i){i.oldDescriptor&&r(e,i.oldDescriptor,i.writer),i.newDescriptor&&n(e,i.newDescriptor,i.writer)})),t.setCustomProperty("addHighlight",(function(e,t,n){return i.add(t,n)}),e),t.setCustomProperty("removeHighlight",(function(e,t,n){return i.remove(t,n)}),e)}function jf(e){var t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function Rf(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(function(n,r,i){t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",(function(n,r,i){i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),e}function Ff(e,t){var n=e.getSelectedElement();if(n){var r=Nf(e);if(r)return t.createPositionAt(n,r);if(t.schema.isBlock(n))return t.createPositionAfter(n)}var i=e.getSelectedBlocks().next().value;if(i){if(i.isEmpty)return t.createPositionAt(i,0);var o=t.createPositionAfter(i);return e.focus.isTouching(o)?o:t.createPositionBefore(i)}return e.focus}function Vf(e,t){var n=new No(Pi.window),r=n.getIntersection(e),i=t.height+Df.arrowVerticalOffset;if(e.top-i>n.top||e.bottom+i2&&void 0!==arguments[2]?arguments[2]:{},r=e.createElement("image",n),i=Ff(t.document.selection,t);t.insertContent(r,i),r.parent&&e.setSelection(r,"on")}function qf(e){var t=e.schema,n=e.document.selection;return function(e,t,n){var r=function(e,t){var n=Ff(e,t).parent;return n.isEmpty&&!n.is("element","$root")?n.parent:n}(e,n);return t.checkChild(r,"image")}(n,t,e)&&!function(e,t){var n=e.getSelectedElement();return n&&t.isObject(n)}(n,t)&&function(e){return h(e.focus.getAncestors()).every((function(e){return!e.is("element","image")}))}(n)}function Yf(e){var t,n=[],r=d(e.getChildren());try{for(r.s();!(t=r.n()).done;){var i=t.value;n.push(i),i.is("element")&&n.push.apply(n,h(i.getChildren()))}}catch(e){r.e(e)}finally{r.f()}return n.find((function(e){return e.is("element","img")}))}function Qf(e){return function(n){n.on("attribute:".concat(e,":image"),t)};function t(e,t,n){if(n.consumable.consume(t.item,e.name)){var r=n.writer,i=Yf(n.mapper.toViewElement(t.item));r.setAttribute(t.attributeKey,t.attributeNewValue||"",i)}}}var $f=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){this.isEnabled=qf(this.editor.model)}},{key:"execute",value:function(e){var t=this.editor.model;t.change((function(n){var r,i=d(Array.isArray(e.source)?e.source:[e.source]);try{for(i.s();!(r=i.n()).done;){var o=r.value;Gf(n,t,{src:o})}}catch(e){i.e(e)}finally{i.f()}}))}}]),n}(Hc),Zf=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.model.schema,n=e.t,r=e.conversion;e.editing.view.addObserver(pf),t.register("image",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),r.for("dataDowncast").elementToElement({model:"image",view:function(e,t){return Jf(t.writer)}}),r.for("editingDowncast").elementToElement({model:"image",view:function(e,t){var r=t.writer;return function(e,t,n){return t.setCustomProperty("image",!0,e),Of(e,t,{label:function(){var t=Yf(e).getAttribute("alt");return t?"".concat(t," ").concat(n):n}})}(Jf(r),r,n("image widget"))}}),r.for("downcast").add(Qf("src")).add(Qf("alt")).add(function(){return function(t){t.on("attribute:srcset:image",e)};function e(e,t,n){if(n.consumable.consume(t.item,e.name)){var r=n.writer,i=Yf(n.mapper.toViewElement(t.item));if(null===t.attributeNewValue){var o=t.attributeOldValue;o.data&&(r.removeAttribute("srcset",i),r.removeAttribute("sizes",i),o.width&&r.removeAttribute("width",i))}else{var a=t.attributeNewValue;a.data&&(r.setAttribute("srcset",a.data,i),r.setAttribute("sizes","100vw",i),a.width&&r.setAttribute("width",a.width,i))}}}}()),r.for("upcast").elementToElement({view:{name:"img",attributes:{src:!0}},model:function(e,t){return t.writer.createElement("image",{src:e.getAttribute("src")})}}).attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:function(e){var t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}}).add(function(){return function(t){t.on("element:figure",e)};function e(e,t,n){if(n.consumable.test(t.viewItem,{name:!0,classes:"image"})){var r=Yf(t.viewItem);if(r&&r.hasAttribute("src")&&n.consumable.test(r,{name:!0})){var i=Wc(n.convertItem(r,t.modelCursor).modelRange.getItems());i&&(n.convertChildren(t.viewItem,i),n.updateConversionResult(i,t))}}}}()),e.commands.add("imageInsert",new $f(e))}}],[{key:"pluginName",get:function(){return"ImageEditing"}}]),n}(Vc);function Jf(e){var t=e.createEmptyElement("img"),n=e.createContainerElement("figure",{class:"image"});return e.insert(e.createPositionAt(n,0),t),n}var Xf=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).domEventType="mousedown",r}return p(n,[{key:"onDomEvent",value:function(e){this.fire(e.type,e)}}]),n}(fo),eg=n(34);Yl()(eg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),eg.a.locals;var tg=["before","after"],ng=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,rg="ck-widget__type-around_disabled",ig=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._currentFakeCaretModelElement=null,r}return p(n,null,[{key:"pluginName",get:function(){return"WidgetTypeAround"}}]),p(n,[{key:"init",value:function(){var e=this.editor,t=e.editing.view;this.on("change:isEnabled",(function(n,r,i){t.change((function(e){var n,r=d(t.document.roots);try{for(r.s();!(n=r.n()).done;){var o=n.value;i?e.removeClass(rg,o):e.addClass(rg,o)}}catch(e){r.e(e)}finally{r.f()}})),i||e.model.change((function(e){e.removeSelectionAttribute(If)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration()}},{key:"destroy",value:function(){this._currentFakeCaretModelElement=null}},{key:"_insertParagraph",value:function(e,t){var n=this.editor,r=n.editing.view;n.execute("insertParagraph",{position:n.model.createPositionAt(e,t)}),r.focus(),r.scrollToTheSelection()}},{key:"_listenToIfEnabled",value:function(e,t,n,r){var i=this;this.listenTo(e,t,(function(){i.isEnabled&&n.apply(void 0,arguments)}),r)}},{key:"_insertParagraphAccordingToFakeCaretPosition",value:function(){var e=this.editor.model.document.selection,t=Nf(e);if(!t)return!1;var n=e.getSelectedElement();return this._insertParagraph(n,t),!0}},{key:"_enableTypeAroundUIInjection",value:function(){var e=this.editor,t=e.model.schema,n=e.locale.t,r={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(function(e,n,i){var o=i.mapper.toViewElement(n.item);Bf(o,n.item,t)&&function(e,t,n){var r=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){var n=this.toDomElement(e);return function(e,t){var n,r=d(tg);try{for(r.s();!(n=r.n()).done;){var i=n.value,o=new Sl({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+i],title:t[i]},children:[e.ownerDocument.importNode(ng,!0)]});e.appendChild(o.render())}}catch(e){r.e(e)}finally{r.f()}}(n,t),function(e){var t=new Sl({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(n),n}));e.insert(e.createPositionAt(n,"end"),r)}(i.writer,r,o)}),{priority:"low"})}},{key:"_enableTypeAroundFakeCaretActivationUsingKeyboardArrows",value:function(){var e=this,t=this.editor,n=t.model,r=n.document.selection,i=n.schema,o=t.editing.view;function a(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(o.document,"keydown",(function(t,n){$r(n.keyCode)&&e._handleArrowKeyPress(t,n)}),{priority:Yt.get("high")+10}),this._listenToIfEnabled(r,"change:range",(function(e,n){n.directChange&&t.model.change((function(e){e.removeSelectionAttribute(If)}))})),this._listenToIfEnabled(n.document,"change:data",(function(){var e=r.getSelectedElement();e&&Bf(t.editing.mapper.toViewElement(e),e,i)||t.model.change((function(e){e.removeSelectionAttribute(If)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",(function(t,n,r){var o=r.writer;if(e._currentFakeCaretModelElement){var s=r.mapper.toViewElement(e._currentFakeCaretModelElement);s&&(o.removeClass(tg.map(a),s),e._currentFakeCaretModelElement=null)}var l=n.selection.getSelectedElement();if(l){var c=r.mapper.toViewElement(l);if(Bf(c,l,i)){var u=Nf(n.selection);u&&(o.addClass(a(u),c),e._currentFakeCaretModelElement=l)}}})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",(function(e,n,r){r||t.model.change((function(e){e.removeSelectionAttribute(If)}))}))}},{key:"_handleArrowKeyPress",value:function(e,t){var n,r=this.editor,i=r.model,o=i.document.selection,a=i.schema,s=r.editing.view,l=Jr(t.keyCode,r.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();Bf(c,r.editing.mapper.toModelElement(c),a)?n=this._handleArrowKeyPressOnSelectedWidget(l):o.isCollapsed&&(n=this._handleArrowKeyPressWhenSelectionNextToAWidget(l)),n&&(t.preventDefault(),e.stop())}},{key:"_handleArrowKeyPressOnSelectedWidget",value:function(e){var t=this.editor.model,n=Nf(t.document.selection);return t.change((function(t){return n?n!==(e?"after":"before")&&(t.removeSelectionAttribute(If),!0):(t.setSelectionAttribute(If,e?"after":"before"),!0)}))}},{key:"_handleArrowKeyPressWhenSelectionNextToAWidget",value:function(e){var t=this.editor,n=t.model,r=n.schema,i=t.plugins.get("Widget"),o=i._getObjectElementNextToSelection(e);return!!Bf(t.editing.mapper.toViewElement(o),o,r)&&(n.change((function(t){i._setSelectionOverElement(o),t.setSelectionAttribute(If,e?"before":"after")})),!0)}},{key:"_enableInsertingParagraphsOnButtonClick",value:function(){var e=this,t=this.editor,n=t.editing.view;this._listenToIfEnabled(n.document,"mousedown",(function(r,i){var o=i.domTarget.closest(".ck-widget__type-around__button");if(o){var a=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(o),s=function(e,t){var n=e.closest(".ck-widget");return t.mapDomToView(n)}(o,n.domConverter),l=t.editing.mapper.toModelElement(s);e._insertParagraph(l,a),i.preventDefault(),r.stop()}}))}},{key:"_enableInsertingParagraphsOnEnterKeypress",value:function(){var e=this,t=this.editor,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",(function(r,i){var o,a=n.document.selection.getSelectedElement(),s=t.editing.mapper.toModelElement(a),l=t.model.schema;e._insertParagraphAccordingToFakeCaretPosition()?o=!0:Bf(a,s,l)&&(e._insertParagraph(s,i.isSoft?"before":"after"),o=!0),o&&(i.preventDefault(),r.stop())}))}},{key:"_enableInsertingParagraphsOnTypingKeystroke",value:function(){var e=this,t=this.editor.editing.view,n=[Gr.enter,Gr.delete,Gr.backspace];this._listenToIfEnabled(t.document,"keydown",(function(t,r){n.includes(r.keyCode)||Xd(r)||e._insertParagraphAccordingToFakeCaretPosition()}),{priority:Yt.get("high")+1})}},{key:"_enableDeleteIntegration",value:function(){var e=this.editor,t=e.editing.view,n=e.model,r=n.schema;this._listenToIfEnabled(t.document,"delete",(function(t,i){var o=Nf(n.document.selection);if(o){var a=i.direction,s=n.document.selection.getSelectedElement(),l="forward"==a;if("before"===o===l)e.execute("delete",{selection:n.createSelection(s,"on")});else{var c=r.getNearestSelectionRange(n.createPositionAt(s,o),a);if(c)if(c.isCollapsed){var u=n.createSelection(c.start);if(n.modifySelection(u,{direction:a}),u.focus.isEqual(c.start)){var h=function(e,t){var n,r=t,i=d(t.getAncestors({parentFirst:!0}));try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.childCount>1||e.isLimit(o))break;r=o}}catch(e){i.e(e)}finally{i.f()}return r}(r,c.start.parent);n.deleteContent(n.createSelection(h,"on"),{doNotAutoparagraph:!0})}else n.change((function(t){t.setSelection(c),e.execute(l?"forwardDelete":"delete")}))}else n.change((function(t){t.setSelection(c),e.execute(l?"forwardDelete":"delete")}))}i.preventDefault(),t.stop()}}),{priority:Yt.get("high")+1})}},{key:"_enableInsertContentIntegration",value:function(){var e=this.editor,t=this.editor.model,n=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(function(e,r){var i=u(r,2),o=i[0],a=i[1];if(!a||a.is("documentSelection")){var s=Nf(n);return s?(e.stop(),t.change((function(e){var r=n.getSelectedElement(),i=t.createPositionAt(r,s),a=e.createSelection(i),l=t.insertContent(o,a);return e.setSelection(a),l}))):void 0}}),{priority:"high"})}}]),n}(Vc),og=n(35);function ag(e,t,n){var r,i=e.schema,o="forward"==n?"elementStart":"elementEnd",a=d(e.createRangeIn(t.root).getWalker({startPosition:t,direction:n}));try{for(a.s();!(r=a.n()).done;){var s=r.value,l=s.previousPosition,c=s.item,u=s.type;if(i.isLimit(c)&&!i.isInline(c))return l;if(u==o&&i.isBlock(c))return null}}catch(e){a.e(e)}finally{a.f()}return null}function sg(e,t,n){var r="backward"==n?t.end:t.start;if(e.checkChild(r,"$text"))return r;var i,o=d(t.getWalker({direction:n}));try{for(o.s();!(i=o.n()).done;){var a=i.value.nextPosition;if(e.checkChild(a,"$text"))return a}}catch(e){o.e(e)}finally{o.f()}}Yl()(og.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),og.a.locals;var lg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor.editing.view,n=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(function(t,n,r){e._clearPreviouslySelectedWidgets(r.writer);var i,o=r.writer,a=o.document.selection,s=a.getSelectedElement(),l=null,c=d(a.getRanges());try{for(c.s();!(i=c.n()).done;){var u,h=d(i.value);try{for(h.s();!(u=h.n()).done;){var f=u.value.item;Lf(f)&&!cg(f,l)&&(o.addClass(Pf,f),e._previouslySelected.add(f),l=f,f==s&&o.setSelection(a.getRanges(),{fake:!0,label:jf(s)}))}}catch(e){h.e(e)}finally{h.f()}}}catch(e){c.e(e)}finally{c.f()}}),{priority:"low"}),t.addObserver(Xf),this.listenTo(n,"mousedown",(function(){return e._onMousedown.apply(e,arguments)})),this.listenTo(n,"keydown",(function(){e._handleSelectionChangeOnArrowKeyPress.apply(e,arguments)}),{priority:"high"}),this.listenTo(n,"keydown",(function(){e._preventDefaultOnArrowKeyPress.apply(e,arguments)}),{priority:Yt.get("high")-20}),this.listenTo(n,"keydown",function(e){var t=e.model;return function(n,r){var i=r.keyCode==Gr.arrowup,o=r.keyCode==Gr.arrowdown,a=r.shiftKey,s=t.document.selection;if(i||o){var l=o;if(!a||!function(e,t){return!e.isCollapsed&&e.isBackward==t}(s,l)){var c=function(e,t,n){var r=e.model;if(n){var i=t.isCollapsed?t.focus:t.getLastPosition(),o=ag(r,i,"forward");if(!o)return null;var a=r.createRange(i,o),s=sg(r.schema,a,"backward");return s&&i.isBefore(s)?r.createRange(i,s):null}var l=t.isCollapsed?t.focus:t.getFirstPosition(),c=ag(r,l,"backward");if(!c)return null;var u=r.createRange(c,l),d=sg(r.schema,u,"forward");return d&&l.isAfter(d)?r.createRange(d,l):null}(e,s,l);c&&!c.isCollapsed&&function(e,t,n){var r=e.model,i=e.view.domConverter;if(n){var o=r.createSelection(t.start);r.modifySelection(o),o.focus.isAtEnd||t.start.isEqual(o.focus)||(t=r.createRange(o.focus,t.end))}var a,s,l=e.mapper.toViewRange(t),c=i.viewRangeToDom(l),u=d(No.getDomRangeRects(c));try{for(u.s();!(s=u.n()).done;){var h=s.value;if(void 0!==a){if(Math.round(h.top)>=a)return!1;a=Math.max(a,Math.round(h.bottom))}else a=Math.round(h.bottom)}}catch(e){u.e(e)}finally{u.f()}return!0}(e,c,l)&&(t.change((function(e){var n=l?c.end:c.start;if(a){var r=t.createSelection(s.anchor);r.setFocus(n),e.setSelection(r)}else e.setSelection(n)})),n.stop(),r.preventDefault(),r.stopPropagation())}}}}(this.editor.editing)),this.listenTo(n,"delete",(function(t,n){e._handleDelete("forward"==n.direction)&&(n.preventDefault(),t.stop())}),{priority:"high"})}},{key:"_onMousedown",value:function(e,t){var n=this.editor,r=n.editing.view,i=r.document,o=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Lf(e))return!1;e=e.parent}return!1}(o)){if((Vr||Fr)&&t.domEvent.detail>=3){var a=n.editing.mapper,s=o.is("attributeElement")?o.findAncestor((function(e){return!e.is("attributeElement")})):o,l=a.toModelElement(s);t.preventDefault(),this.editor.model.change((function(e){e.setSelection(l,"in")}))}}else if(Lf(o)||(o=o.findAncestor(Lf))){t.preventDefault(),i.isFocused||r.focus();var c=n.editing.mapper.toModelElement(o);this._setSelectionOverElement(c)}}},{key:"_handleSelectionChangeOnArrowKeyPress",value:function(e,t){var n=t.keyCode;if($r(n)){var r=this.editor.model,i=r.schema,o=r.document.selection,a=o.getSelectedElement(),s=Jr(n,this.editor.locale.contentLanguageDirection);if(a&&i.isObject(a)){var l=s?o.getLastPosition():o.getFirstPosition(),c=i.getNearestSelectionRange(l,s?"forward":"backward");c&&(r.change((function(e){e.setSelection(c)})),t.preventDefault(),e.stop())}else if(o.isCollapsed){var u=this._getObjectElementNextToSelection(s);u&&i.isObject(u)&&(this._setSelectionOverElement(u),t.preventDefault(),e.stop())}}}},{key:"_preventDefaultOnArrowKeyPress",value:function(e,t){if($r(t.keyCode)){var n=this.editor.model,r=n.schema,i=n.document.selection.getSelectedElement();i&&r.isObject(i)&&(t.preventDefault(),e.stop())}}},{key:"_handleDelete",value:function(e){var t=this;if(!this.editor.isReadOnly){var n=this.editor.model.document.selection;if(n.isCollapsed){var r=this._getObjectElementNextToSelection(e);return r?(this.editor.model.change((function(e){for(var i=n.anchor.parent;i.isEmpty;){var o=i;i=o.parent,e.remove(o)}t._setSelectionOverElement(r)})),!0):void 0}}}},{key:"_setSelectionOverElement",value:function(e){this.editor.model.change((function(t){t.setSelection(t.createRangeOn(e))}))}},{key:"_getObjectElementNextToSelection",value:function(e){var t=this.editor.model,n=t.schema,r=t.document.selection,i=t.createSelection(r);t.modifySelection(i,{direction:e?"forward":"backward"});var o=e?i.focus.nodeBefore:i.focus.nodeAfter;return o&&n.isObject(o)?o:null}},{key:"_clearPreviouslySelectedWidgets",value:function(e){var t,n=d(this._previouslySelected);try{for(n.s();!(t=n.n()).done;){var r=t.value;e.removeClass(Pf,r)}}catch(e){n.e(e)}finally{n.f()}this._previouslySelected.clear()}}],[{key:"pluginName",get:function(){return"Widget"}},{key:"requires",get:function(){return[ig]}}]),n}(Vc);function cg(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}var ug=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=Wf(e),Wf(e)&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}},{key:"execute",value:function(e){var t=this.editor.model,n=t.document.selection.getSelectedElement();t.change((function(t){t.setAttribute("alt",e.newValue,n)}))}}]),n}(Hc),dg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){this.editor.commands.add("imageTextAlternative",new ug(this.editor))}}],[{key:"pluginName",get:function(){return"ImageTextAlternativeEditing"}}]),n}(Vc),hg=n(36);Yl()(hg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),hg.a.locals;var fg=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n),i=t.call(this,e);var o="ck-labeled-field-view-"+qt(),a="ck-labeled-field-view-status-"+qt();i.fieldView=r(w(i),o,a),i.set("label"),i.set("isEnabled",!0),i.set("errorText",null),i.set("infoText",null),i.set("class"),i.labelView=i._createLabelView(o),i.statusView=i._createStatusView(a),i.bind("_statusText").to(w(i),"errorText",w(i),"infoText",(function(e,t){return e||t}));var s=i.bindTemplate;return i.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",s.to("class"),s.if("isEnabled","ck-disabled",(function(e){return!e}))]},children:[i.labelView,i.fieldView,i.statusView]}),i}return p(n,[{key:"_createLabelView",value:function(e){var t=new Oh(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}},{key:"_createStatusView",value:function(e){var t=new $l(this.locale),n=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",n.if("errorText","ck-labeled-field-view__status_error"),n.if("_statusText","ck-hidden",(function(e){return!e}))],id:e,role:n.if("errorText","alert")},children:[{text:n.to("_statusText")}]}),t}},{key:"focus",value:function(){this.fieldView.focus()}}]),n}($l),gg=n(37);Yl()(gg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),gg.a.locals;var mg=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).set("value"),r.set("id"),r.set("placeholder"),r.set("isReadOnly",!1),r.set("hasError",!1),r.set("ariaDescribedById");var i=r.bindTemplate;return r.setTemplate({tag:"input",attributes:{type:"text",class:["ck","ck-input","ck-input-text",i.if("hasError","ck-error")],id:i.to("id"),placeholder:i.to("placeholder"),readonly:i.to("isReadOnly"),"aria-invalid":i.if("hasError",!0),"aria-describedby":i.to("ariaDescribedById")},on:{input:i.to("input")}}),r}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this);var t=function(t){e.element.value=t||0===t?t:""};t(this.value),this.on("change:value",(function(e,n,r){t(r)}))}},{key:"select",value:function(){this.element.select()}},{key:"focus",value:function(){this.element.focus()}}]),n}($l);function vg(e,t,n){var r=new mg(e.locale);return r.set({id:t,ariaDescribedById:n}),r.bind("isReadOnly").to(e,"isEnabled",(function(e){return!e})),r.bind("hasError").to(e,"errorText",(function(e){return!!e})),r.on("input",(function(){e.errorText=null})),r}function pg(e,t,n){var r=Ic(e.locale);return r.set({id:t,ariaDescribedById:n}),r.bind("isEnabled").to(e),r}function kg(e){var t=e.view;t.listenTo(t.element,"submit",(function(e,n){n.preventDefault(),t.fire("submit")}),{useCapture:!0})}var bg='',yg='',wg=n(38),Cg=(Yl()(wg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),wg.a.locals,n(39));Yl()(Cg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Cg.a.locals;var Ag=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n);var i=(r=t.call(this,e)).locale.t;return r.focusTracker=new _l,r.keystrokes=new pl,r.labeledInput=r._createLabeledInputView(),r.saveButtonView=r._createButton(i("Save"),bg,"ck-button-save"),r.saveButtonView.type="submit",r.cancelButtonView=r._createButton(i("Cancel"),yg,"ck-button-cancel","cancel"),r._focusables=new El,r._focusCycler=new nc({focusables:r._focusables,focusTracker:r.focusTracker,keystrokeHandler:r.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),r.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[r.labeledInput,r.saveButtonView,r.cancelButtonView]}),r}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),this.keystrokes.listenTo(this.element),kg({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((function(t){e._focusables.add(t),e.focusTracker.add(t.element)}))}},{key:"_createButton",value:function(e,t,n,r){var i=new bc(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}},{key:"_createLabeledInputView",value:function(){var e=this.locale.t,t=new fg(this.locale,vg);return t.label=e("Text alternative"),t.fieldView.placeholder=e("Text alternative"),t}}]),n}($l),_g=n(40),xg=(Yl()(_g.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),_g.a.locals,n(41));Yl()(xg.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),xg.a.locals;var Dg=Cf("px"),Eg=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).positionLimiter=function(){var e=r.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},r.set("visibleView",null),r.view=new Df(e.locale),e.ui.view.body.add(r.view),e.ui.focusTracker.add(r.view.element),r._viewToStack=new Map,r._idToStack=new Map,r.set("_numberOfStacks",0),r.set("_singleViewMode",!1),r._rotatorView=r._createRotatorView(),r._fakePanelsView=r._createFakePanelsView(),r}return p(n,null,[{key:"pluginName",get:function(){return"ContextualBalloon"}}]),p(n,[{key:"hasView",value:function(e){return Array.from(this._viewToStack.keys()).includes(e)}},{key:"add",value:function(e){if(this.hasView(e.view))throw new Qt.a("contextualballoon-add-view-exist",[this,e]);var t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));var n=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),n.set(e.view,e),this._viewToStack.set(e.view,n),n===this._visibleStack&&this._showView(e)}},{key:"remove",value:function(e){if(!this.hasView(e))throw new Qt.a("contextualballoon-remove-view-not-exist",[this,e]);var t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}},{key:"updatePosition",value:function(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}},{key:"showStack",value:function(e){this.visibleStack=e;var t=this._idToStack.get(e);if(!t)throw new Qt.a("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}},{key:"_getStackId",value:function(e){return Array.from(this._idToStack.entries()).find((function(t){return t[1]===e}))[0]}},{key:"_showNextStack",value:function(){var e=Array.from(this._idToStack.values()),t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}},{key:"_showPrevStack",value:function(){var e=Array.from(this._idToStack.values()),t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}},{key:"_createRotatorView",value:function(){var e=this,t=new Sg(this.editor.locale),n=this.editor.locale.t;return this.view.content.add(t),t.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(function(e,t){return!t&&e>1})),t.on("change:isNavigationVisible",(function(){return e.updatePosition()}),{priority:"low"}),t.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(function(t,r){if(r<2)return"";var i=Array.from(e._idToStack.values()).indexOf(e._visibleStack)+1;return n("%0 of %1",[i,r])})),t.buttonNextView.on("execute",(function(){t.focusTracker.isFocused&&e.editor.editing.view.focus(),e._showNextStack()})),t.buttonPrevView.on("execute",(function(){t.focusTracker.isFocused&&e.editor.editing.view.focus(),e._showPrevStack()})),t}},{key:"_createFakePanelsView",value:function(){var e=new Mg(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(function(e,t){return!t&&e>=2?Math.min(e-1,2):0})),e.listenTo(this.view,"change:top",(function(){return e.updatePosition()})),e.listenTo(this.view,"change:left",(function(){return e.updatePosition()})),this.editor.ui.view.body.add(e),e}},{key:"_showView",value:function(e){var t=e.view,n=e.balloonClassName,r=void 0===n?"":n,i=e.withArrow,o=void 0===i||i,a=e.singleViewMode,s=void 0!==a&&a;this.view.class=r,this.view.withArrow=o,this._rotatorView.showView(t),this.visibleView=t,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),s&&(this._singleViewMode=!0)}},{key:"_getBalloonPosition",value:function(){var e=Array.from(this._visibleStack.values()).pop().position;return e&&!e.limiter&&(e=Object.assign({},e,{limiter:this.positionLimiter})),e}},{key:"_visibleStack",get:function(){return this._viewToStack.get(this.visibleView)}}]),n}(Vc),Sg=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),r=t.call(this,e);var i=e.t,o=r.bindTemplate;return r.set("isNavigationVisible",!0),r.focusTracker=new _l,r.buttonPrevView=r._createButtonView(i("Previous"),''),r.buttonNextView=r._createButtonView(i("Next"),''),r.content=r.createCollection(),r.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",o.to("isNavigationVisible",(function(e){return e?"":"ck-hidden"}))]},children:[r.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:o.to("counter")}]},r.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:r.content}]}),r}return p(n,[{key:"render",value:function(){c(D(n.prototype),"render",this).call(this),this.focusTracker.add(this.element)}},{key:"showView",value:function(e){this.hideView(),this.content.add(e)}},{key:"hideView",value:function(){this.content.clear()}},{key:"_createButtonView",value:function(e,t){var n=new bc(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n}}]),n}($l),Mg=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n);var o=(i=t.call(this,e)).bindTemplate;return i.set("top",0),i.set("left",0),i.set("height",0),i.set("width",0),i.set("numberOfPanels",0),i.content=i.createCollection(),i._balloonPanelView=r,i.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",o.to("numberOfPanels",(function(e){return e?"":"ck-hidden"}))],style:{top:o.to("top",Dg),left:o.to("left",Dg),width:o.to("width",Dg),height:o.to("height",Dg)}},children:i.content}),i.on("change:numberOfPanels",(function(e,t,n,r){n>r?i._addPanels(n-r):i._removePanels(r-n),i.updatePosition()})),i}return p(n,[{key:"_addPanels",value:function(e){for(;e--;){var t=new $l;t.setTemplate({tag:"div"}),this.content.add(t),this.registerChild(t)}}},{key:"_removePanels",value:function(e){for(;e--;){var t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}},{key:"updatePosition",value:function(){if(this.numberOfPanels){var e=this._balloonPanelView,t=e.top,n=e.left,r=new No(this._balloonPanelView.element),i=r.width,o=r.height;Object.assign(this,{top:t,left:n,width:i,height:o})}}}]),n}($l);function Tg(e){var t=e.editing.view,n=Df.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast]}}var Ig=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){this._createButton(),this._createForm()}},{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this),this._form.destroy()}},{key:"_createButton",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add("imageTextAlternative",(function(r){var i=t.commands.get("imageTextAlternative"),o=new bc(r);return o.set({label:n("Change image text alternative"),icon:'',tooltip:!0}),o.bind("isEnabled").to(i,"isEnabled"),e.listenTo(o,"execute",(function(){e._showForm()})),o}))}},{key:"_createForm",value:function(){var e=this,t=this.editor,n=t.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Ag(t.locale),this._form.render(),this.listenTo(this._form,"submit",(function(){t.execute("imageTextAlternative",{newValue:e._form.labeledInput.fieldView.element.value}),e._hideForm(!0)})),this.listenTo(this._form,"cancel",(function(){e._hideForm(!0)})),this._form.keystrokes.set("Esc",(function(t,n){e._hideForm(!0),n()})),this.listenTo(t.ui,"update",(function(){Kf(n.selection)?e._isVisible&&function(e){var t=e.plugins.get("ContextualBalloon");if(Kf(e.editing.view.document.selection)){var n=Tg(e);t.updatePosition(n)}}(t):e._hideForm(!0)})),Sc({emitter:this._form,activator:function(){return e._isVisible},contextElements:[this._balloon.view.element],callback:function(){return e._hideForm()}})}},{key:"_showForm",value:function(){if(!this._isVisible){var e=this.editor,t=e.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._isInBalloon||this._balloon.add({view:this._form,position:Tg(e)}),n.fieldView.value=n.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select()}}},{key:"_hideForm",value:function(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}},{key:"_isVisible",get:function(){return this._balloon.visibleView===this._form}},{key:"_isInBalloon",get:function(){return this._balloon.hasView(this._form)}}],[{key:"requires",get:function(){return[Eg]}},{key:"pluginName",get:function(){return"ImageTextAlternativeUI"}}]),n}(Vc),Bg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,null,[{key:"requires",get:function(){return[dg,Ig]}},{key:"pluginName",get:function(){return"ImageTextAlternative"}}]),n}(Vc),Ng=n(42);Yl()(Ng.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Ng.a.locals;var Pg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,null,[{key:"requires",get:function(){return[Zf,lg,Bg]}},{key:"pluginName",get:function(){return"Image"}}]),n}(Vc);function Lg(e){var t,n=d(e.getChildren());try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r&&r.is("element","caption"))return r}}catch(e){n.e(e)}finally{n.f()}return null}function Og(e){var t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("image")?{name:!0}:null}var zg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.editing.view,r=t.model.schema,i=t.data,o=t.editing,a=t.t;r.register("caption",{allowIn:"image",allowContentOf:"$block",isLimit:!0}),t.model.document.registerPostFixer((function(t){return e._insertMissingModelCaptionElement(t)})),t.conversion.for("upcast").elementToElement({view:Og,model:"caption"}),i.downcastDispatcher.on("insert:caption",jg((function(e){return e.createContainerElement("figcaption")}),!1));var s=(a("Enter image caption"),function(e){var t=e.createEditableElement("figcaption");return e.setCustomProperty("imageCaption",!0,t),Rf(t,e)});o.downcastDispatcher.on("insert:caption",jg(s)),o.downcastDispatcher.on("insert",this._fixCaptionVisibility((function(e){return e.item})),{priority:"high"}),o.downcastDispatcher.on("remove",this._fixCaptionVisibility((function(e){return e.position.parent})),{priority:"high"}),n.document.registerPostFixer((function(t){return e._updateCaptionVisibility(t)}))}},{key:"_updateCaptionVisibility",value:function(e){var t,n=this.editor.editing.mapper,r=this._lastSelectedCaption,i=this.editor.model.document.selection,o=i.getSelectedElement();if(o&&o.is("element","image")){var a=Lg(o);t=n.toViewElement(a)}var s=Rg(i.getFirstPosition().parent);if(s&&(t=n.toViewElement(s)),t)return r?(r===t||(Fg(r,e),this._lastSelectedCaption=t),Vg(t,e)):(this._lastSelectedCaption=t,Vg(t,e));if(r){var l=Fg(r,e);return this._lastSelectedCaption=null,l}return!1}},{key:"_fixCaptionVisibility",value:function(e){var t=this;return function(n,r,i){var o=Rg(e(r)),a=t.editor.editing.mapper,s=i.writer;if(o){var l=a.toViewElement(o);l&&(o.childCount?s.removeClass("ck-hidden",l):s.addClass("ck-hidden",l))}}}},{key:"_insertMissingModelCaptionElement",value:function(e){var t,n=this.editor.model,r=[],i=d(n.document.differ.getChanges());try{for(i.s();!(t=i.n()).done;){var o=t.value;if("insert"==o.type&&"$text"!=o.name){var a=o.position.nodeAfter;if(a.is("element","image")&&!Lg(a)&&r.push(a),!a.is("element","image")&&a.childCount){var s,l=d(n.createRangeIn(a).getItems());try{for(l.s();!(s=l.n()).done;){var c=s.value;c.is("element","image")&&!Lg(c)&&r.push(c)}}catch(e){l.e(e)}finally{l.f()}}}}}catch(e){i.e(e)}finally{i.f()}for(var u=0,h=r;u1&&void 0!==arguments[1])||arguments[1];return function(n,r,i){var o=r.item;if((o.childCount||t)&&Wf(o.parent)){if(!i.consumable.consume(r.item,"insert"))return;var a=i.mapper.toViewElement(r.range.start.parent),s=e(i.writer),l=i.writer;o.childCount||l.addClass("ck-hidden",s),function(e,t,n,r){var i=r.writer.createPositionAt(n,"end");r.writer.insert(i,e),r.mapper.bindElements(t,e)}(s,r.item,a,i)}}}function Rg(e){var t=e.getAncestors({includeSelf:!0}).find((function(e){return"caption"==e.name}));return t&&t.parent&&"image"==t.parent.name?t:null}function Fg(e,t){return!e.childCount&&!e.hasClass("ck-hidden")&&(t.addClass("ck-hidden",e),!0)}function Vg(e,t){return!!e.hasClass("ck-hidden")&&(t.removeClass("ck-hidden",e),!0)}var Ug=n(43);Yl()(Ug.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Ug.a.locals;var Hg=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e)).defaultStyle=!1,i.styles=r.reduce((function(e,t){return e[t.name]=t,t.isDefault&&(i.defaultStyle=t.name),e}),{}),i}return p(n,[{key:"refresh",value:function(){var e=this.editor.model.document.selection.getSelectedElement();if(this.isEnabled=Wf(e),e)if(e.hasAttribute("imageStyle")){var t=e.getAttribute("imageStyle");this.value=!!this.styles[t]&&t}else this.value=this.defaultStyle;else this.value=!1}},{key:"execute",value:function(e){var t=this,n=e.value,r=this.editor.model,i=r.document.selection.getSelectedElement();r.change((function(e){t.styles[n].isDefault?e.removeAttribute("imageStyle",i):e.setAttribute("imageStyle",n,i)}))}}]),n}(Hc);function Kg(e,t){var n,r=d(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.name===e)return i}}catch(e){r.e(e)}finally{r.f()}}var Wg='',Gg='',qg='',Yg='',Qg={full:{name:"full",title:"Full size image",icon:Wg,isDefault:!0},side:{name:"side",title:"Side image",icon:Yg,className:"image-style-side"},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:Gg,className:"image-style-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:qg,className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:Yg,className:"image-style-align-right"}},$g={full:Wg,left:Gg,right:Yg,center:qg};function Zg(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.map(Jg)}function Jg(e){if("string"==typeof e){var t=e;Qg[t]?e=Object.assign({},Qg[t]):(Object(Qt.c)("image-style-not-found",{name:t}),e={name:t})}else if(Qg[e.name]){var n=Qg[e.name],r=Object.assign({},e);for(var i in n)Object.prototype.hasOwnProperty.call(e,i)||(r[i]=n[i]);e=r}return"string"==typeof e.icon&&$g[e.icon]&&(e.icon=$g[e.icon]),e}var Xg=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.model.schema,n=e.data,r=e.editing;e.config.define("image.styles",["full","side"]);var i=Zg(e.config.get("image.styles"));t.extend("image",{allowAttributes:"imageStyle"});var o=function(e){return function(t,n,r){if(r.consumable.consume(n.item,t.name)){var i=Kg(n.attributeNewValue,e),o=Kg(n.attributeOldValue,e),a=r.mapper.toViewElement(n.item),s=r.writer;o&&s.removeClass(o.className,a),i&&s.addClass(i.className,a)}}}(i);r.downcastDispatcher.on("attribute:imageStyle:image",o),n.downcastDispatcher.on("attribute:imageStyle:image",o),n.upcastDispatcher.on("element:figure",function(e){var t=e.filter((function(e){return!e.isDefault}));return function(e,n,r){if(n.modelRange){var i=n.viewItem,o=Wc(n.modelRange.getItems());if(r.schema.checkAttribute(o,"imageStyle")){var a,s=d(t);try{for(s.s();!(a=s.n()).done;){var l=a.value;r.consumable.consume(i,{classes:l.className})&&r.writer.setAttribute("imageStyle",l.name,o)}}catch(e){s.e(e)}finally{s.f()}}}}}(i),{priority:"low"}),e.commands.add("imageStyle",new Hg(e,i))}}],[{key:"pluginName",get:function(){return"ImageStyleEditing"}}]),n}(Vc),em=n(44);Yl()(em.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),em.a.locals;var tm=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e,t=function(e,t){var n,r=d(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;t[i.title]&&(i.title=t[i.title])}}catch(e){r.e(e)}finally{r.f()}return e}(Zg(this.editor.config.get("image.styles")),this.localizedDefaultStylesTitles),n=d(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this._createButton(r)}}catch(e){n.e(e)}finally{n.f()}}},{key:"_createButton",value:function(e){var t=this,n=this.editor,r="imageStyle:"+e.name;n.ui.componentFactory.add(r,(function(r){var i=n.commands.get("imageStyle"),o=new bc(r);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(i,"isEnabled"),o.bind("isOn").to(i,"value",(function(t){return t===e.name})),t.listenTo(o,"execute",(function(){n.execute("imageStyle",{value:e.name}),n.editing.view.focus()})),o}))}},{key:"localizedDefaultStylesTitles",get:function(){var e=this.editor.t;return{"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}}],[{key:"pluginName",get:function(){return"ImageStyleUI"}}]),n}(Vc),nm=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor;if(t.plugins.has("BalloonToolbar")){var n=t.plugins.get("BalloonToolbar");this.listenTo(n,"show",(function(e){(function(e){var t=e.getSelectedElement();return!(!t||!Lf(t))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(function(){e._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(function(){e._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(function(){e._updateToolbarsVisibility()}),{priority:"low"})}},{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this);var e,t=d(this._toolbarDefinitions.values());try{for(t.s();!(e=t.n()).done;){e.value.view.destroy()}}catch(e){t.e(e)}finally{t.f()}}},{key:"register",value:function(e,t){var n=t.ariaLabel,r=t.items,i=t.getRelatedElement,o=t.balloonClassName,a=void 0===o?"ck-toolbar-container":o;if(r.length){var s=this.editor,l=s.t,c=new Lc(s.locale);if(c.ariaLabel=n||l("Widget toolbar"),this._toolbarDefinitions.has(e))throw new Qt.a("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(r,s.ui.componentFactory),this._toolbarDefinitions.set(e,{view:c,getRelatedElement:i,balloonClassName:a})}else Object(Qt.c)("widget-toolbar-no-items",{toolbarId:e})}},{key:"_updateToolbarsVisibility",value:function(){var e,t=0,n=null,r=null,i=d(this._toolbarDefinitions.values());try{for(i.s();!(e=i.n()).done;){var o=e.value,a=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&a)if(this.editor.ui.focusTracker.isFocused){var s=a.getAncestors().length;s>t&&(t=s,n=a,r=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}}catch(e){i.e(e)}finally{i.f()}r&&this._showToolbar(r,n)}},{key:"_hideToolbar",value:function(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}},{key:"_showToolbar",value:function(e,t){var n=this;this._isToolbarVisible(e)?rm(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:im(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(function(){var e,t=d(n._toolbarDefinitions.values());try{for(t.s();!(e=t.n()).done;){var r=e.value;if(n._isToolbarVisible(r)){var i=r.getRelatedElement(n.editor.editing.view.document.selection);rm(n.editor,i)}}}catch(e){t.e(e)}finally{t.f()}})))}},{key:"_isToolbarVisible",value:function(e){return this._balloon.visibleView===e.view}},{key:"_isToolbarInBalloon",value:function(e){return this._balloon.hasView(e.view)}}],[{key:"requires",get:function(){return[Eg]}},{key:"pluginName",get:function(){return"WidgetToolbarRepository"}}]),n}(Vc);function rm(e,t){var n=e.plugins.get("ContextualBalloon"),r=im(e,t);n.updatePosition(r)}function im(e,t){var n=e.editing.view,r=Df.defaultPositions;return{target:n.domConverter.mapViewToDom(t),positions:[r.northArrowSouth,r.northArrowSouthWest,r.northArrowSouthEast,r.southArrowNorth,r.southArrowNorthWest,r.southArrowNorthEast,Vf]}}var om=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).buttonView=new bc(e),r._fileInputView=new am(e),r._fileInputView.bind("acceptedType").to(w(r)),r._fileInputView.bind("allowMultipleFiles").to(w(r)),r._fileInputView.delegate("done").to(w(r)),r.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[r.buttonView,r._fileInputView]}),r.buttonView.on("execute",(function(){r._fileInputView.open()})),r}return p(n,[{key:"focus",value:function(){this.buttonView.focus()}}]),n}($l),am=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),(r=t.call(this,e)).set("acceptedType"),r.set("allowMultipleFiles",!1);var i=r.bindTemplate;return r.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:i.to("acceptedType"),multiple:i.to("allowMultipleFiles")},on:{change:i.to((function(){r.element&&r.element.files&&r.element.files.length&&r.fire("done",r.element.files),r.element.value=""}))}}),r}return p(n,[{key:"open",value:function(){this.element.click()}}]),n}($l);function sm(e){var t=e.map((function(e){return e.replace("+","\\+")}));return new RegExp("^image\\/(".concat(t.join("|"),")$"))}var lm=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.t;e.ui.componentFactory.add("imageUpload",(function(n){var r=new om(n),i=e.commands.get("imageUpload"),o=e.config.get("image.upload.types"),a=sm(o);return r.set({acceptedType:o.map((function(e){return"image/"+e})).join(","),allowMultipleFiles:!0}),r.buttonView.set({label:t("Insert image"),icon:'',tooltip:!0}),r.buttonView.bind("isEnabled").to(i),r.on("done",(function(t,n){var r=Array.from(n).filter((function(e){return a.test(e.type)}));r.length&&e.execute("imageUpload",{file:r})})),r}))}}],[{key:"pluginName",get:function(){return"ImageUploadUI"}}]),n}(Vc),cm=function(){function e(){var t=this;m(this,e);var n=new window.FileReader;this._reader=n,this._data=void 0,this.set("loaded",0),n.onprogress=function(e){t.loaded=e.loaded}}return p(e,[{key:"read",value:function(e){var t=this,n=this._reader;return this.total=e.size,new Promise((function(r,i){n.onload=function(){var e=n.result;t._data=e,r(e)},n.onerror=function(){i("error")},n.onabort=function(){i("aborted")},t._reader.readAsDataURL(e)}))}},{key:"abort",value:function(){this._reader.abort()}},{key:"error",get:function(){return this._reader.error}},{key:"data",get:function(){return this._data}}]),e}();ln(cm,vr);var um=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this;this.loaders=new cn,this.loaders.on("add",(function(){return e._updatePendingAction()})),this.loaders.on("remove",(function(){return e._updatePendingAction()})),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(function(e,t){return t?e/t*100:0}))}},{key:"getLoader",value:function(e){return this._loadersMap.get(e)||null}},{key:"createLoader",value:function(e){var t=this;if(!this.createUploadAdapter)return Object(Qt.c)("filerepository-no-upload-adapter"),null;var n=new dm(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(n),this._loadersMap.set(e,n),e instanceof Promise&&n.file.then((function(e){t._loadersMap.set(e,n)})).catch((function(){})),n.on("change:uploaded",(function(){var e,n=0,r=d(t.loaders);try{for(r.s();!(e=r.n()).done;){n+=e.value.uploaded}}catch(e){r.e(e)}finally{r.f()}t.uploaded=n})),n.on("change:uploadTotal",(function(){var e,n=0,r=d(t.loaders);try{for(r.s();!(e=r.n()).done;){var i=e.value;i.uploadTotal&&(n+=i.uploadTotal)}}catch(e){r.e(e)}finally{r.f()}t.uploadTotal=n})),n}},{key:"destroyLoader",value:function(e){var t=this,n=e instanceof dm?e:this.getLoader(e);n._destroy(),this.loaders.remove(n),this._loadersMap.forEach((function(e,r){e===n&&t._loadersMap.delete(r)}))}},{key:"_updatePendingAction",value:function(){var e=this.editor.plugins.get(zu);if(this.loaders.length){if(!this._pendingAction){var t=this.editor.t,n=function(e){return"".concat(t("Upload in progress")," ").concat(parseInt(e),"%.")};this._pendingAction=e.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else e.remove(this._pendingAction),this._pendingAction=null}}],[{key:"pluginName",get:function(){return"FileRepository"}},{key:"requires",get:function(){return[zu]}}]),n}(Vc);ln(um,vr);var dm=function(){function e(t,n){m(this,e),this.id=qt(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=n(this),this._reader=new cm,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(function(e,t){return t?e/t*100:0})),this.set("uploadResponse",null)}return p(e,[{key:"read",value:function(){var e=this;if("idle"!=this.status)throw new Qt.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((function(t){return e._reader.read(t)})).then((function(t){if("reading"!==e.status)throw e.status;return e.status="idle",t})).catch((function(t){if("aborted"===t)throw e.status="aborted","aborted";throw e.status="error",e._reader.error?e._reader.error:t}))}},{key:"upload",value:function(){var e=this;if("idle"!=this.status)throw new Qt.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((function(){return e._adapter.upload()})).then((function(t){return e.uploadResponse=t,e.status="idle",t})).catch((function(t){if("aborted"===e.status)throw"aborted";throw e.status="error",t}))}},{key:"abort",value:function(){var e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((function(){})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}},{key:"_destroy",value:function(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}},{key:"_createFilePromiseWrapper",value:function(e){var t={};return t.promise=new Promise((function(n,r){t.rejecter=r,t.isFulfilled=!1,e.then((function(e){t.isFulfilled=!0,n(e)})).catch((function(e){t.isFulfilled=!0,r(e)}))})),t}},{key:"file",get:function(){var e=this;return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((function(t){return e._filePromiseWrapper?t:null})):Promise.resolve(null)}},{key:"data",get:function(){return this._reader.data}}]),e}();ln(dm,vr);var hm=n(45),fm=(Yl()(hm.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),hm.a.locals,n(46)),gm=(Yl()(fm.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),fm.a.locals,n(47));Yl()(gm.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),gm.a.locals;var mm=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).placeholder="data:image/svg+xml;utf8,"+encodeURIComponent(''),r}return p(n,[{key:"init",value:function(){var e=this;this.editor.editing.downcastDispatcher.on("attribute:uploadStatus:image",(function(){return e.uploadStatusChange.apply(e,arguments)}))}},{key:"uploadStatusChange",value:function(e,t,n){var r=this.editor,i=t.item,o=i.getAttribute("uploadId");if(n.consumable.consume(t.item,e.name)){var a=r.plugins.get(um),s=o?t.attributeNewValue:null,l=this.placeholder,c=r.editing.mapper.toViewElement(i),u=n.writer;if("reading"==s)return vm(c,u),void pm(l,c,u);if("uploading"==s){var d=a.loaders.get(o);return vm(c,u),void(d?(km(c,u),function(e,t,n,r){var i=function(e){var t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),i),n.on("change:uploadedPercent",(function(e,t,n){r.change((function(e){e.setStyle("width",n+"%",i)}))}))}(c,u,d,r.editing.view),function(e,t,n){if(n.data){var r=Yf(e);t.setAttribute("src",n.data,r)}}(c,u,d)):pm(l,c,u))}"complete"==s&&a.loaders.get(o)&&function(e,t,n){var r=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),r),setTimeout((function(){n.change((function(e){return e.remove(e.createRangeOn(r))}))}),3e3)}(c,u,r.editing.view),function(e,t){ym(e,t,"progressBar")}(c,u),km(c,u),function(e,t){t.removeClass("ck-appear",e)}(c,u)}}}]),n}(Vc);function vm(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function pm(e,t,n){t.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",t);var r=Yf(t);r.getAttribute("src")!==e&&n.setAttribute("src",e,r),bm(t,"placeholder")||n.insert(n.createPositionAfter(r),function(e){var t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function km(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),ym(e,t,"placeholder")}function bm(e,t){var n,r=d(e.getChildren());try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.getCustomProperty(t))return i}}catch(e){r.e(e)}finally{r.f()}}function ym(e,t,n){var r=bm(e,n);r&&t.remove(t.createRangeOn(r))}var wm=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){this.on("show:warning",(function(e,t){window.alert(t.message)}),{priority:"lowest"})}},{key:"showSuccess",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}},{key:"showInfo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}},{key:"showWarning",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}},{key:"_showNotification",value:function(e){var t="show:"+e.type+(e.namespace?":"+e.namespace:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}],[{key:"pluginName",get:function(){return"Notification"}}]),n}(Ou),Cm=function(){function e(t){m(this,e),this.document=t}return p(e,[{key:"createDocumentFragment",value:function(e){return new ii(this.document,e)}},{key:"createElement",value:function(e,t,n){return new sr(this.document,e,t,n)}},{key:"createText",value:function(e){return new bn(this.document,e)}},{key:"clone",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e._clone(t)}},{key:"appendChild",value:function(e,t){return t._appendChild(e)}},{key:"insertChild",value:function(e,t,n){return n._insertChild(e,t)}},{key:"removeChildren",value:function(e,t,n){return n._removeChildren(e,t)}},{key:"remove",value:function(e){var t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}},{key:"replace",value:function(e,t){var n=e.parent;if(n){var r=n.getChildIndex(e);return this.removeChildren(r,1,n),this.insertChild(r,t,n),!0}return!1}},{key:"unwrapElement",value:function(e){var t=e.parent;if(t){var n=t.getChildIndex(e);this.remove(e),this.insertChild(n,e.getChildren(),t)}}},{key:"rename",value:function(e,t){var n=new sr(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,n)?n:null}},{key:"setAttribute",value:function(e,t,n){n._setAttribute(e,t)}},{key:"removeAttribute",value:function(e,t){t._removeAttribute(e)}},{key:"addClass",value:function(e,t){t._addClass(e)}},{key:"removeClass",value:function(e,t){t._removeClass(e)}},{key:"setStyle",value:function(e,t,n){R(e)&&void 0===n&&(n=t),n._setStyle(e,t)}},{key:"removeStyle",value:function(e,t){t._removeStyle(e)}},{key:"setCustomProperty",value:function(e,t,n){n._setCustomProperty(e,t)}},{key:"removeCustomProperty",value:function(e,t){return t._removeCustomProperty(e)}},{key:"createPositionAt",value:function(e,t){return Dr._createAt(e,t)}},{key:"createPositionAfter",value:function(e){return Dr._createAfter(e)}},{key:"createPositionBefore",value:function(e){return Dr._createBefore(e)}},{key:"createRange",value:function(e,t){return new Er(e,t)}},{key:"createRangeOn",value:function(e){return Er._createOn(e)}},{key:"createRangeIn",value:function(e){return Er._createIn(e)}},{key:"createSelection",value:function(e,t,n){return new Tr(e,t,n)}}]),e}(),Am=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.model.document.selection.getSelectedElement(),t=e&&"image"===e.name||!1;this.isEnabled=qf(this.editor.model)||t}},{key:"execute",value:function(e){var t=this.editor,n=t.model,r=t.plugins.get(um);n.change((function(t){var i,o=d(Array.isArray(e.file)?e.file:[e.file]);try{for(o.s();!(i=o.n()).done;){var a=i.value;_m(t,n,r,a)}}catch(e){o.e(e)}finally{o.f()}}))}}]),n}(Hc);function _m(e,t,n,r){var i=n.createLoader(r);i&&Gf(e,t,{uploadId:i.id})}var xm=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),r}return p(n,null,[{key:"requires",get:function(){return[um,wm,Rd]}},{key:"pluginName",get:function(){return"ImageUploadEditing"}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model.document,r=t.model.schema,i=t.conversion,o=t.plugins.get(um),a=sm(t.config.get("image.upload.types"));r.extend("image",{allowAttributes:["uploadId","uploadStatus"]}),t.commands.add("imageUpload",new Am(t)),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",(function(e,n){if(r=n.dataTransfer,!Array.from(r.types).includes("text/html")||""===r.getData("text/html")){var r,i=Array.from(n.dataTransfer.files).filter((function(e){return!!e&&a.test(e.type)})),o=n.targetRanges.map((function(e){return t.editing.mapper.toModelRange(e)}));t.model.change((function(n){n.setSelection(o),i.length&&(e.stop(),t.model.enqueueChange("default",(function(){t.execute("imageUpload",{file:i})})))}))}})),this.listenTo(t.plugins.get(Rd),"inputTransformation",(function(e,n){var r=Array.from(t.editing.view.createRangeIn(n.content)).filter((function(e){return!(!(t=e.item).is("element","img")||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))&&!e.item.getAttribute("uploadProcessed");var t})).map((function(e){return{promise:(t=e.item,new Promise((function(e,n){var r=t.getAttribute("src");fetch(r).then((function(e){return e.blob()})).then((function(t){var n=function(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}(t,r),i=n.replace("image/",""),o=new File([t],"image."+i,{type:n});e(o)})).catch(n)}))),imageElement:e.item};var t}));if(r.length){var i,a=new Cm(t.editing.view.document),s=d(r);try{for(s.s();!(i=s.n()).done;){var l=i.value;a.setAttribute("uploadProcessed",!0,l.imageElement);var c=o.createLoader(l.promise);c&&(a.setAttribute("src","",l.imageElement),a.setAttribute("uploadId",c.id,l.imageElement))}}catch(e){s.e(e)}finally{s.f()}}})),t.editing.view.document.on("dragover",(function(e,t){t.preventDefault()})),n.on("change",(function(){var r,i=d(n.differ.getChanges({includeChangesInGraveyard:!0}));try{for(i.s();!(r=i.n()).done;){var a=r.value;if("insert"==a.type&&"$text"!=a.name){var s,l=a.position.nodeAfter,c="$graveyard"==a.position.root.rootName,u=d(Dm(t,l));try{for(u.s();!(s=u.n()).done;){var h=s.value,f=h.getAttribute("uploadId");if(f){var g=o.loaders.get(f);g&&(c?g.abort():"idle"==g.status&&e._readAndUpload(g,h))}}}catch(e){u.e(e)}finally{u.f()}}}}catch(e){i.e(e)}finally{i.f()}}))}},{key:"_readAndUpload",value:function(e,t){var n=this,r=this.editor,i=r.model,o=r.locale.t,a=r.plugins.get(um),s=r.plugins.get(wm);return i.enqueueChange("transparent",(function(e){e.setAttribute("uploadStatus","reading",t)})),e.read().then((function(){var n=e.upload();if(Vr){var o=Yf(r.editing.mapper.toViewElement(t));r.editing.view.once("render",(function(){if(o.parent){var e=r.editing.view.domConverter.mapViewToDom(o.parent);if(e){var t=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=t}}}))}return i.enqueueChange("transparent",(function(e){e.setAttribute("uploadStatus","uploading",t)})),n})).then((function(e){i.enqueueChange("transparent",(function(r){r.setAttributes({uploadStatus:"complete",src:e.default},t),n._parseAndSetSrcsetAttributeOnImage(e,t,r)})),l()})).catch((function(n){if("error"!==e.status&&"aborted"!==e.status)throw n;"error"==e.status&&n&&s.showWarning(n,{title:o("Upload failed"),namespace:"upload"}),l(),i.enqueueChange("transparent",(function(e){e.remove(t)}))}));function l(){i.enqueueChange("transparent",(function(e){e.removeAttribute("uploadId",t),e.removeAttribute("uploadStatus",t)})),a.destroyLoader(e)}}},{key:"_parseAndSetSrcsetAttributeOnImage",value:function(e,t,n){var r=0,i=Object.keys(e).filter((function(e){var t=parseInt(e,10);if(!isNaN(t))return r=Math.max(r,t),!0})).map((function(t){return"".concat(e[t]," ").concat(t,"w")})).join(", ");""!=i&&n.setAttribute("srcset",{data:i,width:r},t)}}]),n}(Vc);function Dm(e,t){return Array.from(e.model.createRangeOn(t)).filter((function(e){return e.item.is("element","image")})).map((function(e){return e.item}))}var Em=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._childCommands=[],r}return p(n,[{key:"refresh",value:function(){}},{key:"execute",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n0}},{key:"getNextIndent",value:function(e){var t=parseFloat(e||0);if(e&&!e.endsWith(this.unit))return this.isForward?this.offset+this.unit:void 0;var n=t+(this.isForward?this.offset:-this.offset);return n>0?n+this.unit:void 0}}]),e}(),Pm=function(){function e(t){m(this,e),this.isForward="forward"===t.direction,this.classes=t.classes}return p(e,[{key:"checkEnabled",value:function(e){var t=this.classes.indexOf(e);return this.isForward?t=0}},{key:"getNextIndent",value:function(e){var t=this.classes.indexOf(e),n=this.isForward?1:-1;return this.classes[t+n]}}]),e}(),Lm=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Om=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,zm=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,jm=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,Rm=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,Fm=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","rebeccapurple","currentcolor","transparent"]);function Vm(e){return e.startsWith("#")?Lm.test(e):e.startsWith("rgb")?Om.test(e)||zm.test(e):e.startsWith("hsl")?jm.test(e)||Rm.test(e):Fm.has(e.toLowerCase())}var Um=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function Hm(e){return Um.includes(e)}var Km=/^([+-]?[0-9]*[.]?[0-9]+(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function Wm(e){return Km.test(e)}var Gm=/^[+-]?[0-9]*[.]?[0-9]+%$/,qm=["repeat-x","repeat-y","repeat","space","round","no-repeat"],Ym=["center","top","bottom","left","right"];function Qm(e){return Ym.includes(e)}var $m=["fixed","scroll","local"];function Zm(e){return $m.includes(e)}var Jm=/^url\(/;function Xm(e){return Jm.test(e)}function ev(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};var t=iv(e),n=t[0],r=t[2]||n,i=t[1]||n;return{top:n,bottom:r,right:i,left:t[3]||i}}function tv(e){return function(t){var n=t.top,r=t.right,i=t.bottom,o=t.left,a=[];return[n,r,o,i].every((function(e){return!!e}))?a.push([e,nv(t)]):(n&&a.push([e+"-top",n]),r&&a.push([e+"-right",r]),i&&a.push([e+"-bottom",i]),o&&a.push([e+"-left",o])),a}}function nv(e){var t=e.top,n=e.right,r=e.bottom,i=e.left,o=[];return i!==n?o.push(t,n,r,i):r!==t?o.push(t,n,r):n!==t?o.push(t,n):o.push(t),o.join(" ")}function rv(e){return function(t){return{path:e,value:ev(t)}}}function iv(e){return e.replace(/, /g,",").split(" ").map((function(e){return e.replace(/,/g,", ")}))}function ov(e){e.setNormalizer("margin",rv("margin")),e.setNormalizer("margin-top",(function(e){return{path:"margin.top",value:e}})),e.setNormalizer("margin-right",(function(e){return{path:"margin.right",value:e}})),e.setNormalizer("margin-bottom",(function(e){return{path:"margin.bottom",value:e}})),e.setNormalizer("margin-left",(function(e){return{path:"margin.left",value:e}})),e.setReducer("margin",tv("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}var av="italic",sv=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:av}),e.model.schema.setAttributeProperties(av,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:av,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add(av,new Gu(e,av)),e.keystrokes.set("CTRL+I",av)}}],[{key:"pluginName",get:function(){return"ItalicEditing"}}]),n}(Vc),lv="italic",cv=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add(lv,(function(r){var i=t.commands.get(lv),o=new bc(r);return o.set({label:n("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),e.listenTo(o,"execute",(function(){t.execute(lv),t.editing.view.focus()})),o}))}}]),n}(Vc),uv=function(){function e(){m(this,e),this._definitions=new Set}return p(e,[{key:"add",value:function(e){var t=this;Array.isArray(e)?e.forEach((function(e){return t._definitions.add(e)})):this._definitions.add(e)}},{key:"getDispatcher",value:function(){var e=this;return function(t){t.on("attribute:linkHref",(function(t,n,r){if(r.consumable.test(n.item,"attribute:linkHref")){var i,o=r.writer,a=o.document.selection,s=d(e._definitions);try{for(s.s();!(i=s.n()).done;){var l=i.value,c=o.createAttributeElement("a",l.attributes,{priority:5});o.setCustomProperty("link",!0,c),l.callback(n.attributeNewValue)?n.item.is("selection")?o.wrap(a.getFirstRange(),c):o.wrap(r.mapper.toViewRange(n.range),c):o.unwrap(r.mapper.toViewRange(n.range),c)}}catch(e){s.e(e)}finally{s.f()}}}),{priority:"high"})}}},{key:"getDispatcherForLinkedImage",value:function(){var e=this;return function(t){t.on("attribute:linkHref:image",(function(t,n,r){var i,o=r.mapper.toViewElement(n.item),a=Array.from(o.getChildren()).find((function(e){return"a"===e.name})),s=d(e._definitions);try{for(s.s();!(i=s.n()).done;){var l=i.value,c=wn(l.attributes);if(l.callback(n.attributeNewValue)){var h,f=d(c);try{for(f.s();!(h=f.n()).done;){var g=u(h.value,2),m=g[0],v=g[1];"class"===m?r.writer.addClass(v,a):r.writer.setAttribute(m,v,a)}}catch(e){f.e(e)}finally{f.f()}}else{var p,k=d(c);try{for(k.s();!(p=k.n()).done;){var b=u(p.value,2),y=b[0],w=b[1];"class"===y?r.writer.removeClass(w,a):r.writer.removeAttribute(y,a)}}catch(e){k.e(e)}finally{k.f()}}}}catch(e){s.e(e)}finally{s.f()}}))}}},{key:"length",get:function(){return this._definitions.size}}]),e}(),dv=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e)).manualDecorators=new cn,r.automaticDecorators=new uv,r}return p(n,[{key:"restoreManualDecoratorStates",value:function(){var e,t=d(this.manualDecorators);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.value=this._getDecoratorStateFromModel(n.id)}}catch(e){t.e(e)}finally{t.f()}}},{key:"refresh",value:function(){var e=this.editor.model,t=e.document,n=Wc(t.selection.getSelectedBlocks());Iu(n,e.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(n,"linkHref")):(this.value=t.selection.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"linkHref"));var r,i=d(this.manualDecorators);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.value=this._getDecoratorStateFromModel(o.id)}}catch(e){i.e(e)}finally{i.f()}}},{key:"execute",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.editor.model,i=r.document.selection,o=[],a=[];for(var s in n)n[s]?o.push(s):a.push(s);r.change((function(n){if(i.isCollapsed){var s=i.getFirstPosition();if(i.hasAttribute("linkHref")){var l=nd(s,"linkHref",i.getAttribute("linkHref"),r);n.setAttribute("linkHref",e,l),o.forEach((function(e){n.setAttribute(e,!0,l)})),a.forEach((function(e){n.removeAttribute(e,l)})),n.setSelection(n.createPositionAfter(l.end.nodeBefore))}else if(""!==e){var c=wn(i.getAttributes());c.set("linkHref",e),o.forEach((function(e){c.set(e,!0)}));var u=n.createText(e,c);r.insertContent(u,s),n.setSelection(n.createPositionAfter(u))}["linkHref"].concat(o,a).forEach((function(e){n.removeSelectionAttribute(e)}))}else{var h,f=r.schema.getValidRanges(i.getRanges(),"linkHref"),g=[],m=d(i.getSelectedBlocks());try{for(m.s();!(h=m.n()).done;){var v=h.value;r.schema.checkAttribute(v,"linkHref")&&g.push(n.createRangeOn(v))}}catch(e){m.e(e)}finally{m.f()}var p,k=g.slice(),b=d(f);try{for(b.s();!(p=b.n()).done;){var y=p.value;t._isRangeToUpdate(y,g)&&k.push(y)}}catch(e){b.e(e)}finally{b.f()}var w,C=d(k);try{var A=function(){var t=w.value;n.setAttribute("linkHref",e,t),o.forEach((function(e){n.setAttribute(e,!0,t)})),a.forEach((function(e){n.removeAttribute(e,t)}))};for(C.s();!(w=C.n()).done;)A()}catch(e){C.e(e)}finally{C.f()}}}))}},{key:"_getDecoratorStateFromModel",value:function(e){var t=this.editor.model,n=t.document,r=Wc(n.selection.getSelectedBlocks());return Iu(r,t.schema)?r.getAttribute(e):n.selection.getAttribute(e)}},{key:"_isRangeToUpdate",value:function(e,t){var n,r=d(t);try{for(r.s();!(n=r.n()).done;){if(n.value.containsRange(e))return!1}}catch(e){r.e(e)}finally{r.f()}return!0}}]),n}(Hc),hv=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.model,t=e.document,n=Wc(t.selection.getSelectedBlocks());Iu(n,e.schema)?this.isEnabled=e.schema.checkAttribute(n,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"linkHref")}},{key:"execute",value:function(){var e=this.editor,t=this.editor.model,n=t.document.selection,r=e.commands.get("link");t.change((function(e){var i,o=d(n.isCollapsed?[nd(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),t)]:n.getRanges());try{for(o.s();!(i=o.n()).done;){var a=i.value;if(e.removeAttribute("linkHref",a),r){var s,l=d(r.manualDecorators);try{for(l.s();!(s=l.n()).done;){var c=s.value;e.removeAttribute(c.id,a)}}catch(e){l.e(e)}finally{l.f()}}}}catch(e){o.e(e)}finally{o.f()}}))}}]),n}(Hc),fv=function e(t){var n=t.id,r=t.label,i=t.attributes,o=t.defaultValue;m(this,e),this.id=n,this.set("value"),this.defaultValue=o,this.label=r,this.attributes=i};ln(fv,vr);var gv=n(48);Yl()(gv.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),gv.a.locals;var mv="automatic",vv=/^(https?:)?\/\//,pv=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("link",{addTargetToExternalLinks:!1}),r}return p(n,null,[{key:"pluginName",get:function(){return"LinkEditing"}},{key:"requires",get:function(){return[Zu,oh,Rd]}}]),p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Mu}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:function(e,t){return Mu(Tu(e),t)}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:function(e){return e.getAttribute("href")}}}),e.commands.add("link",new dv(e)),e.commands.add("unlink",new hv(e));var t=function(e,t){var n={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((function(e){return e.label&&n[e.label]&&(e.label=n[e.label]),e})),t}(e.t,function(e){var t=[];if(e)for(var n=0,r=Object.entries(e);n0&&void 0!==arguments[0]?arguments[0]:"https://",t=this.locale.t,n=new fg(this.locale,vg);return n.label=t("Link URL"),n.fieldView.placeholder=e+"example.com",n}},{key:"_createButton",value:function(e,t,n,r){var i=new bc(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}},{key:"_createManualDecoratorSwitches",value:function(e){var t,n=this,r=this.createCollection(),i=d(e.manualDecorators);try{var o=function(){var i=t.value,o=new Ec(n.locale);o.set({name:i.id,label:i.label,withText:!0}),o.bind("isOn").toMany([i,e],"value",(function(e,t){return void 0===t&&void 0===e?i.defaultValue:e})),o.on("execute",(function(){i.set("value",!o.isOn)})),r.add(o)};for(i.s();!(t=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}return r}},{key:"_createFormChildren",value:function(e){var t=this.createCollection();if(t.add(this.urlInputView),e.length){var n=new $l;n.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((function(e){return{tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(n)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}]),n}($l),Av=n(50);Yl()(Av.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Av.a.locals;var _v=function(e){k(n,e);var t=b(n);function n(e){var r;m(this,n),r=t.call(this,e);var i=e.t;return r.focusTracker=new _l,r.keystrokes=new pl,r.previewButtonView=r._createPreviewButton(),r.unlinkButtonView=r._createButton(i("Unlink"),'',"unlink"),r.editButtonView=r._createButton(i("Edit link"),'',"edit"),r.set("href"),r._focusables=new El,r._focusCycler=new nc({focusables:r._focusables,focusTracker:r.focusTracker,keystrokeHandler:r.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),r.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[r.previewButtonView,r.editButtonView,r.unlinkButtonView]}),r}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((function(t){e._focusables.add(t),e.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}},{key:"focus",value:function(){this._focusCycler.focusFirst()}},{key:"_createButton",value:function(e,t,n){var r=new bc(this.locale);return r.set({label:e,icon:t,tooltip:!0}),r.delegate("execute").to(this,n),r}},{key:"_createPreviewButton",value:function(){var e=new bc(this.locale),t=this.bindTemplate,n=this.t;return e.set({withText:!0,tooltip:n("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(function(e){return e&&Tu(e)})),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",(function(e){return e||n("This link has no URL")})),e.bind("isEnabled").to(this,"href",(function(e){return!!e})),e.template.tag="a",e.template.eventListeners={},e}}]),n}($l),xv='',Dv="link-ui",Ev=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor;e.editing.view.addObserver(yv),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(Eg),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:Dv,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Dv,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}},{key:"destroy",value:function(){c(D(n.prototype),"destroy",this).call(this),this.formView.destroy()}},{key:"_createActionsView",value:function(){var e=this,t=this.editor,n=new _v(t.locale),r=t.commands.get("link"),i=t.commands.get("unlink");return n.bind("href").to(r,"value"),n.editButtonView.bind("isEnabled").to(r),n.unlinkButtonView.bind("isEnabled").to(i),this.listenTo(n,"edit",(function(){e._addFormView()})),this.listenTo(n,"unlink",(function(){t.execute("unlink"),e._hideUI()})),n.keystrokes.set("Esc",(function(t,n){e._hideUI(),n()})),n.keystrokes.set(Su,(function(t,n){e._addFormView(),n()})),n}},{key:"_createFormView",value:function(){var e=this,t=this.editor,n=t.commands.get("link"),r=t.config.get("link.defaultProtocol"),i=new Cv(t.locale,n,r);return i.urlInputView.fieldView.bind("value").to(n,"value"),i.urlInputView.bind("isReadOnly").to(n,"isEnabled",(function(e){return!e})),i.saveButtonView.bind("isEnabled").to(n),this.listenTo(i,"submit",(function(){var n=Bu(i.urlInputView.fieldView.element.value,r);t.execute("link",n,i.getDecoratorSwitchesState()),e._closeFormView()})),this.listenTo(i,"cancel",(function(){e._closeFormView()})),i.keystrokes.set("Esc",(function(t,n){e._closeFormView(),n()})),i}},{key:"_createToolbarLinkButton",value:function(){var e=this,t=this.editor,n=t.commands.get("link"),r=t.t;t.keystrokes.set(Su,(function(t,r){r(),n.isEnabled&&e._showUI(!0)})),t.ui.componentFactory.add("link",(function(t){var i=new bc(t);return i.isEnabled=!0,i.label=r("Link"),i.icon=xv,i.keystroke=Su,i.tooltip=!0,i.isToggleable=!0,i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value",(function(e){return!!e})),e.listenTo(i,"execute",(function(){return e._showUI(!0)})),i}))}},{key:"_enableUserBalloonInteractions",value:function(){var e=this,t=this.editor.editing.view.document;this.listenTo(t,"click",(function(){e._getSelectedLinkElement()&&e._showUI()})),this.editor.keystrokes.set("Tab",(function(t,n){e._areActionsVisible&&!e.actionsView.focusTracker.isFocused&&(e.actionsView.focus(),n())}),{priority:"high"}),this.editor.keystrokes.set("Esc",(function(t,n){e._isUIVisible&&(e._hideUI(),n())})),Sc({emitter:this.formView,activator:function(){return e._isUIInPanel},contextElements:[this._balloon.view.element],callback:function(){return e._hideUI()}})}},{key:"_addActionsView",value:function(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}},{key:"_addFormView",value:function(){if(!this._isFormInPanel){var e=this.editor.commands.get("link");this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.urlInputView.fieldView.element.value=e.value||""}}},{key:"_closeFormView",value:function(){var e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}},{key:"_removeFormView",value:function(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}},{key:"_showUI",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}},{key:"_hideUI",value:function(){if(this._isUIInPanel){var e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}}},{key:"_startUpdatingUI",value:function(){var e=this,t=this.editor,n=t.editing.view.document,r=this._getSelectedLinkElement(),i=a(),o=function(){var t=e._getSelectedLinkElement(),n=a();r&&!t||!r&&n!==i?e._hideUI():e._isUIVisible&&e._balloon.updatePosition(e._getBalloonPositionData()),r=t,i=n};function a(){return n.selection.focus.getAncestors().reverse().find((function(e){return e.is("element")}))}this.listenTo(t.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}},{key:"_getBalloonPositionData",value:function(){var e=this.editor.editing.view,t=this.editor.model,n=e.document,r=null;if(t.markers.has(Dv)){var i=Array.from(this.editor.editing.mapper.markerNameToElements(Dv)),o=e.createRange(e.createPositionBefore(i[0]),e.createPositionAfter(i[i.length-1]));r=e.domConverter.viewRangeToDom(o)}else{var a=this._getSelectedLinkElement(),s=n.selection.getFirstRange();r=a?e.domConverter.mapViewToDom(a):e.domConverter.viewRangeToDom(s)}return{target:r}}},{key:"_getSelectedLinkElement",value:function(){var e=this.editor.editing.view,t=e.document.selection;if(t.isCollapsed)return Sv(t.getFirstPosition());var n=t.getFirstRange().getTrimmed(),r=Sv(n.start),i=Sv(n.end);return r&&r==i&&e.createRangeIn(r).getTrimmed().isEqual(n)?r:null}},{key:"_showFakeVisualSelection",value:function(){var e=this.editor.model;e.change((function(t){var n=e.document.selection.getFirstRange();if(e.markers.has(Dv))t.updateMarker(Dv,{range:n});else if(n.start.isAtEnd){var r=function e(t,n,r){var i=[t.start.path[0]+1,0],o=r.createPositionFromPath(t.start.root,i,"toNext"),a=r.createRange(o,t.end);return a.start.path[0]>t.end.path[0]?r.createRange(n):o.isAtStart&&o.isAtEnd?e(a,n,r):a}(n,e.document.selection.focus,t);t.addMarker(Dv,{usingOperation:!1,affectsData:!1,range:r})}else t.addMarker(Dv,{usingOperation:!1,affectsData:!1,range:n})}))}},{key:"_hideFakeVisualSelection",value:function(){var e=this.editor.model;e.markers.has(Dv)&&e.change((function(e){e.removeMarker(Dv)}))}},{key:"_isFormInPanel",get:function(){return this._balloon.hasView(this.formView)}},{key:"_areActionsInPanel",get:function(){return this._balloon.hasView(this.actionsView)}},{key:"_areActionsVisible",get:function(){return this._balloon.visibleView===this.actionsView}},{key:"_isUIInPanel",get:function(){return this._isFormInPanel||this._areActionsInPanel}},{key:"_isUIVisible",get:function(){return this._balloon.visibleView==this.formView||this._areActionsVisible}}],[{key:"requires",get:function(){return[Eg]}},{key:"pluginName",get:function(){return"LinkUI"}}]),n}(Vc);function Sv(e){return e.getAncestors().find((function(e){return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))}var Mv=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor;e.model.schema.extend("image",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((function(e){e.on("element:a",(function(e,t,n){var r=t.viewItem,i=Nv(r);if(i){if(n.consumable.consume(r,{attributes:["href"]})){var o=r.getAttribute("href");if(o){var a=t.modelCursor.parent;if(!a.is("element","image")){var s=n.convertItem(i,t.modelCursor);t.modelRange=s.modelRange,t.modelCursor=s.modelCursor,a=t.modelCursor.nodeBefore}a&&a.is("element","image")&&n.writer.setAttribute("linkHref",o,a)}}}}),{priority:"high"})})),e.conversion.for("editingDowncast").add(Tv({attachIconIndicator:!0})),e.conversion.for("dataDowncast").add(Tv({attachIconIndicator:!1})),this._enableAutomaticDecorators(),this._enableManualDecorators()}},{key:"_enableAutomaticDecorators",value:function(){var e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}},{key:"_enableManualDecorators",value:function(){var e,t=this.editor,n=t.commands.get("link"),r=n.manualDecorators,i=d(n.manualDecorators);try{for(i.s();!(e=i.n()).done;){var o=e.value;t.model.schema.extend("image",{allowAttributes:o.id}),t.conversion.for("downcast").add(Iv(r,o)),t.conversion.for("upcast").add(Bv(r,o))}}catch(e){i.e(e)}finally{i.f()}}}],[{key:"requires",get:function(){return[Zf,pv]}},{key:"pluginName",get:function(){return"LinkImageEditing"}}]),n}(Vc);function Tv(e){return function(t){t.on("attribute:linkHref:image",(function(t,n,r){var i,o=r.mapper.toViewElement(n.item),a=r.writer,s=Array.from(o.getChildren()).find((function(e){return"a"===e.name}));if(e.attachIconIndicator&&(i=a.createUIElement("span",{class:"ck ck-link-image_icon"},(function(e){var t=this.toDomElement(e);return t.innerHTML=xv,t}))),s)if(n.attributeNewValue)a.setAttribute("href",n.attributeNewValue,s);else{var l=Array.from(s.getChildren()).find((function(e){return"img"===e.name}));a.move(a.createRangeOn(l),a.createPositionAt(o,0)),a.remove(s)}else{var c=a.createContainerElement("a",{href:n.attributeNewValue});a.insert(a.createPositionAt(o,0),c),a.move(a.createRangeOn(o.getChild(1)),a.createPositionAt(c,0)),i&&a.insert(a.createPositionAt(c,"end"),i)}}))}}function Iv(e,t){return function(n){n.on("attribute:".concat(t.id,":image"),(function(n,r,i){var o,a=e.get(t.id).attributes,s=i.mapper.toViewElement(r.item),l=Array.from(s.getChildren()).find((function(e){return"a"===e.name})),c=d(wn(a));try{for(c.s();!(o=c.n()).done;){var h=u(o.value,2),f=h[0],g=h[1];i.writer.setAttribute(f,g,l)}}catch(e){c.e(e)}finally{c.f()}}))}}function Bv(e,t){return function(n){n.on("element:a",(function(n,r,i){var o=r.viewItem;if(Nv(o)){var a={attributes:e.get(t.id).attributes},s=new Cn(a).match(o);if(s&&i.consumable.consume(o,s.match)){var l=r.modelCursor.nodeBefore||r.modelCursor.parent;i.writer.setAttribute(t.id,!0,l)}}}),{priority:"high"})}}function Nv(e){return Array.from(e.getChildren()).find((function(e){return"img"===e.name}))}var Pv=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor.editing.view.document;this.listenTo(e,"click",(function(t,n){Lv(e.selection.getSelectedElement())&&n.preventDefault()})),this._createToolbarLinkImageButton()}},{key:"_createToolbarLinkImageButton",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add("linkImage",(function(r){var i=new bc(r),o=t.plugins.get("LinkUI"),a=t.commands.get("link");return i.set({isEnabled:!0,label:n("Link image"),icon:xv,keystroke:Su,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(function(e){return!!e})),e.listenTo(i,"execute",(function(){Lv(t.editing.view.document.selection.getSelectedElement())?o._addActionsView():o._showUI(!0)})),i}))}}],[{key:"requires",get:function(){return[Pg,pv,Ev]}},{key:"pluginName",get:function(){return"LinkImageUI"}}]),n}(Vc);function Lv(e){return!(!e||!Hf(e))&&e.getChild(0).is("element","a")}var Ov=n(51);Yl()(Ov.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Ov.a.locals;var zv=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e)).type=r,i}return p(n,[{key:"refresh",value:function(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=this.editor.model,n=t.document,r=Array.from(n.selection.getSelectedBlocks()).filter((function(e){return Rv(e,t.schema)})),i=!0===this.value;t.change((function(t){if(i){for(var n=r[r.length-1].nextSibling,o=Number.POSITIVE_INFINITY,a=[];n&&"listItem"==n.name&&0!==n.getAttribute("listIndent");){var s=n.getAttribute("listIndent");s=n;)o>i.getAttribute("listIndent")&&(o=i.getAttribute("listIndent")),i.getAttribute("listIndent")==o&&e[t?"unshift":"push"](i),i=i[t?"previousSibling":"nextSibling"]}function Rv(e,t){return t.checkChild(e.parent,"listItem")&&!t.isObject(e)}var Fv=function(e){k(n,e);var t=b(n);function n(e,r){var i;return m(this,n),(i=t.call(this,e))._indentBy="forward"==r?1:-1,i}return p(n,[{key:"refresh",value:function(){this.isEnabled=this._checkEnabled()}},{key:"execute",value:function(){var e=this,t=this.editor.model,n=t.document,r=Array.from(n.selection.getSelectedBlocks());t.change((function(t){for(var n=r[r.length-1],i=n.nextSibling;i&&"listItem"==i.name&&i.getAttribute("listIndent")>n.getAttribute("listIndent");)r.push(i),i=i.nextSibling;e._indentBy<0&&(r=r.reverse());var o,a=d(r);try{for(a.s();!(o=a.n()).done;){var s=o.value,l=s.getAttribute("listIndent")+e._indentBy;l<0?t.rename(s,"paragraph"):t.setAttribute("listIndent",l,s)}}catch(e){a.e(e)}finally{a.f()}e.fire("_executeCleanup",r)}))}},{key:"_checkEnabled",value:function(){var e=Wc(this.editor.model.document.selection.getSelectedBlocks());if(!e||!e.is("element","listItem"))return!1;if(this._indentBy>0){for(var t=e.getAttribute("listIndent"),n=e.getAttribute("listType"),r=e.previousSibling;r&&r.is("element","listItem")&&r.getAttribute("listIndent")>=t;){if(r.getAttribute("listIndent")==t)return r.getAttribute("listType")==n;r=r.previousSibling}return!1}return!0}}]),n}(Hc);function Vv(e,t,n,r){var i=t.parent,o=n.mapper,a=n.writer,s=o.toViewPosition(r.createPositionBefore(e)),l=Kv(e.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:e.getAttribute("listIndent")}),c=e.previousSibling;if(l&&l.getAttribute("listIndent")==e.getAttribute("listIndent")){var u=o.toViewElement(l);s=a.breakContainer(a.createPositionAfter(u))}else if(c&&"listItem"==c.name){s=o.toViewPosition(r.createPositionAt(c,"end"));var h=o.findMappedViewAncestor(s),f=function(e){var t,n=d(e.getChildren());try{for(n.s();!(t=n.n()).done;){var r=t.value;if("ul"==r.name||"ol"==r.name)return r}}catch(e){n.e(e)}finally{n.f()}return null}(h);s=f?a.createPositionBefore(f):a.createPositionAt(h,"end")}else s=o.toViewPosition(r.createPositionBefore(e));if(s=Hv(s),a.insert(s,i),c&&"listItem"==c.name){var g,m=o.toViewElement(c),v=a.createRange(a.createPositionAt(m,0),s).getWalker({ignoreElementEnd:!0}),p=d(v);try{for(p.s();!(g=p.n()).done;){var k=g.value;if(k.item.is("element","li")){var b=a.breakContainer(a.createPositionBefore(k.item)),y=k.item.parent,w=a.createPositionAt(t,"end");Uv(a,w.nodeBefore,w.nodeAfter),a.move(a.createRangeOn(y),w),v.position=b}}}catch(e){p.e(e)}finally{p.f()}}else{var C=i.nextSibling;if(C&&(C.is("element","ul")||C.is("element","ol"))){var A,_=null,x=d(C.getChildren());try{for(x.s();!(A=x.n()).done;){var D=A.value,E=o.toModelElement(D);if(!(E&&E.getAttribute("listIndent")>e.getAttribute("listIndent")))break;_=D}}catch(e){x.e(e)}finally{x.f()}_&&(a.breakContainer(a.createPositionAfter(_)),a.move(a.createRangeOn(_.parent),a.createPositionAt(t,"end")))}}Uv(a,i,i.nextSibling),Uv(a,i.previousSibling,i)}function Uv(e,t,n){return!t||!n||"ul"!=t.name&&"ol"!=t.name||t.name!=n.name||t.getAttribute("class")!==n.getAttribute("class")?null:e.mergeContainers(e.createPositionAfter(t))}function Hv(e){return e.getLastMatchingPosition((function(e){return e.item.is("uiElement")}))}function Kv(e,t){for(var n=!!t.sameIndent,r=!!t.smallerIndent,i=t.listIndent,o=e;o&&"listItem"==o.name;){var a=o.getAttribute("listIndent");if(n&&i==a||r&&i>a)return o;o="forward"===t.direction?o.nextSibling:o.previousSibling}return null}function Wv(e,t,n,r){e.ui.componentFactory.add(t,(function(i){var o=e.commands.get(t),a=new bc(i);return a.set({label:n,icon:r,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(o,"value","isEnabled"),a.on("execute",(function(){e.execute(t),e.editing.view.focus()})),a}))}function Gv(){var e=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||e?0:ur.call(this)}function qv(e){return function(t,n,r){var i=r.consumable;if(i.test(n.item,"insert")&&i.test(n.item,"attribute:listType")&&i.test(n.item,"attribute:listIndent")){i.consume(n.item,"insert"),i.consume(n.item,"attribute:listType"),i.consume(n.item,"attribute:listIndent");var o=n.item;Vv(o,function(e,t){var n=t.mapper,r=t.writer,i="numbered"==e.getAttribute("listType")?"ol":"ul",o=function(e){var t=e.createContainerElement("li");return t.getFillerOffset=Gv,t}(r),a=r.createContainerElement(i,null);return r.insert(r.createPositionAt(a,0),o),n.bindElements(e,o),o}(o,r),r,e)}}}function Yv(e,t,n){if(n.consumable.consume(t.item,"attribute:listType")){var r=n.mapper.toViewElement(t.item),i=n.writer;i.breakContainer(i.createPositionBefore(r)),i.breakContainer(i.createPositionAfter(r));var o=r.parent,a="numbered"==t.attributeNewValue?"ol":"ul";i.rename(a,o)}}function Qv(e,t,n){var r=n.mapper.toViewElement(t.item).parent,i=n.writer;Uv(i,r,r.nextSibling),Uv(i,r.previousSibling,r);var o,a=d(t.item.getChildren());try{for(a.s();!(o=a.n()).done;){var s=o.value;n.consumable.consume(s,"insert")}}catch(e){a.e(e)}finally{a.f()}}function $v(e,t,n){if("listItem"!=t.item.name){for(var r=n.mapper.toViewPosition(t.range.start),i=n.writer,o=[];("ul"==r.parent.name||"ol"==r.parent.name)&&"li"==(r=i.breakContainer(r)).parent.name;){var a=r,s=i.createPositionAt(r.parent,"end");if(!a.isEqual(s)){var l=i.remove(i.createRange(a,s));o.push(l)}r=i.createPositionAfter(r.parent)}if(o.length>0){for(var c=0;c0){var d=Uv(i,u,u.nextSibling);d&&d.parent==u&&r.offset--}}Uv(i,r.nodeBefore,r.nodeAfter)}}}function Zv(e,t,n){var r=n.mapper.toViewPosition(t.position),i=r.nodeBefore,o=r.nodeAfter;Uv(n.writer,i,o)}function Jv(e,t,n){if(n.consumable.consume(t.viewItem,{name:!0})){var r=n.writer,i=r.createElement("listItem"),o=function(e){for(var t=0,n=e.parent;n;){if(n.is("element","li"))t++;else{var r=n.previousSibling;r&&r.is("element","li")&&t++}n=n.parent}return t}(t.viewItem);r.setAttribute("listIndent",o,i);var a=t.viewItem.parent&&"ol"==t.viewItem.parent.name?"numbered":"bulleted";if(r.setAttribute("listType",a,i),!n.safeInsert(i,t.modelCursor))return;var s=function(e,t,n){var r,i=n.writer,o=n.schema,a=i.createPositionAfter(e),s=d(t);try{for(s.s();!(r=s.n()).done;){var l=r.value;if("ul"==l.name||"ol"==l.name)a=n.convertItem(l,a).modelCursor;else{var c=n.convertItem(l,i.createPositionAt(e,"end")),u=c.modelRange.start.nodeAfter;u&&u.is("element")&&!o.checkChild(e,u.name)&&(e=c.modelCursor.parent.is("element","listItem")?c.modelCursor.parent:rp(c.modelCursor),a=i.createPositionAfter(e))}}}catch(e){s.e(e)}finally{s.f()}return a}(i,t.viewItem.getChildren(),n);t.modelRange=r.createRange(t.modelCursor,s),n.updateConversionResult(i,t)}}function Xv(e,t,n){if(n.consumable.test(t.viewItem,{name:!0}))for(var r=0,i=Array.from(t.viewItem.getChildren());r0)for(;a&&a.is("element","listItem");)a._setAttribute("listIndent",a.getAttribute("listIndent")+c),a=a.nextSibling}}}function rp(e){var t,n=new Jo({startPosition:e});do{t=n.next()}while(!t.value.item.is("element","listItem"));return t.value.item}function ip(e,t,n,r,i,o){var a,s=Kv(t.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:e,foo:"b"}),l=i.mapper,c=i.writer,u=s?s.getAttribute("listIndent"):null;if(s)if(u==e){var d=l.toViewElement(s).parent;a=c.createPositionAfter(d)}else{var f=o.createPositionAt(s,"end");a=l.toViewPosition(f)}else a=n;a=Hv(a);for(var g=0,m=h(r.getChildren());gn){var a=void 0;null===r?(r=i-n,a=n):(r>i&&(r=i),a=i-r),t.setAttribute("listIndent",a,e),o=!0}else r=null,n=e.getAttribute("listIndent")+1;e=e.nextSibling}}function p(e){for(var n=[],r=null;e&&e.is("element","listItem");){var i=e.getAttribute("listIndent");if(r&&r.getAttribute("listIndent")>i&&(n=n.slice(0,i+1)),0!=i)if(n[i]){var a=n[i];e.getAttribute("listType")!=a&&(t.setAttribute("listType",a,e),o=!0)}else n[i]=e.getAttribute("listType");r=e,e=e.nextSibling}}}(t.model,e)})),i.mapper.registerViewToModelLength("li",sp),r.mapper.registerViewToModelLength("li",sp),i.mapper.on("modelToViewPosition",tp(i.view)),i.mapper.on("viewToModelPosition",(n=t.model,function(e,t){var r=t.viewPosition,i=r.parent,o=t.mapper;if("ul"==i.name||"ol"==i.name){if(r.isAtEnd){var a=o.toModelElement(r.nodeBefore),s=o.getModelLength(r.nodeBefore);t.modelPosition=n.createPositionBefore(a).getShiftedBy(s)}else{var l=o.toModelElement(r.nodeAfter);t.modelPosition=n.createPositionBefore(l)}e.stop()}else if("li"==i.name&&r.nodeBefore&&("ul"==r.nodeBefore.name||"ol"==r.nodeBefore.name)){for(var c=o.toModelElement(i),u=1,d=r.nodeBefore;d&&op(d);)u+=o.getModelLength(d),d=d.previousSibling;t.modelPosition=n.createPositionBefore(c).getShiftedBy(u),e.stop()}})),r.mapper.on("modelToViewPosition",tp(i.view)),t.conversion.for("editingDowncast").add((function(e){e.on("insert",$v,{priority:"high"}),e.on("insert:listItem",qv(t.model)),e.on("attribute:listType:listItem",Yv,{priority:"high"}),e.on("attribute:listType:listItem",Qv,{priority:"low"}),e.on("attribute:listIndent:listItem",function(e){return function(t,n,r){if(r.consumable.consume(n.item,"attribute:listIndent")){var i=r.mapper.toViewElement(n.item),o=r.writer;o.breakContainer(o.createPositionBefore(i)),o.breakContainer(o.createPositionAfter(i));var a=i.parent,s=a.previousSibling,l=o.createRangeOn(a);o.remove(l),s&&s.nextSibling&&Uv(o,s,s.nextSibling),ip(n.attributeOldValue+1,n.range.start,l.start,i,r,e),Vv(n.item,i,r,e);var c,u=d(n.item.getChildren());try{for(u.s();!(c=u.n()).done;){var h=c.value;r.consumable.consume(h,"insert")}}catch(e){u.e(e)}finally{u.f()}}}}(t.model)),e.on("remove:listItem",function(e){return function(t,n,r){var i=r.mapper.toViewPosition(n.position).getLastMatchingPosition((function(e){return!e.item.is("element","li")})).nodeAfter,o=r.writer;o.breakContainer(o.createPositionBefore(i)),o.breakContainer(o.createPositionAfter(i));var a=i.parent,s=a.previousSibling,l=o.createRangeOn(a),c=o.remove(l);s&&s.nextSibling&&Uv(o,s,s.nextSibling),ip(r.mapper.toModelElement(i).getAttribute("listIndent")+1,n.position,l.start,i,r,e);var u,h=d(o.createRangeIn(c).getItems());try{for(h.s();!(u=h.n()).done;){var f=u.value;r.mapper.unbindViewElement(f)}}catch(e){h.e(e)}finally{h.f()}t.stop()}}(t.model)),e.on("remove",Zv,{priority:"low"})})),t.conversion.for("dataDowncast").add((function(e){e.on("insert",$v,{priority:"high"}),e.on("insert:listItem",qv(t.model))})),t.conversion.for("upcast").add((function(e){e.on("element:ul",Xv,{priority:"high"}),e.on("element:ol",Xv,{priority:"high"}),e.on("element:li",ep,{priority:"high"}),e.on("element:li",Jv)})),t.model.on("insertContent",np,{priority:"high"}),t.commands.add("numberedList",new zv(t,"numbered")),t.commands.add("bulletedList",new zv(t,"bulleted")),t.commands.add("indentList",new Fv(t,"forward")),t.commands.add("outdentList",new Fv(t,"backward"));var o=i.view.document;this.listenTo(o,"enter",(function(t,n){var r=e.editor.model.document,i=r.selection.getLastPosition().parent;r.selection.isCollapsed&&"listItem"==i.name&&i.isEmpty&&(e.editor.execute("outdentList"),n.preventDefault(),t.stop())})),this.listenTo(o,"delete",(function(t,n){if("backward"===n.direction){var r=e.editor.model.document.selection;if(r.isCollapsed){var i=r.getFirstPosition();if(i.isAtStart){var o=i.parent;"listItem"===o.name&&(o.previousSibling&&"listItem"===o.previousSibling.name||(e.editor.execute("outdentList"),n.preventDefault(),t.stop()))}}}}),{priority:"high"});var a=function(t){return function(n,r){e.editor.commands.get(t).isEnabled&&(e.editor.execute(t),r())}};t.keystrokes.set("Tab",a("indentList")),t.keystrokes.set("Shift+Tab",a("outdentList"))}},{key:"afterInit",value:function(){var e=this.editor.commands,t=e.get("indent"),n=e.get("outdent");t&&t.registerChildCommand(e.get("indentList")),n&&n.registerChildCommand(e.get("outdentList"))}}],[{key:"pluginName",get:function(){return"ListEditing"}},{key:"requires",get:function(){return[of]}}]),n}(Vc);function sp(e){var t,n=1,r=d(e.getChildren());try{for(r.s();!(t=r.n()).done;){var i=t.value;if("ul"==i.name||"ol"==i.name){var o,a=d(i.getChildren());try{for(a.s();!(o=a.n()).done;){n+=sp(o.value)}}catch(e){a.e(e)}finally{a.f()}}}}catch(e){r.e(e)}finally{r.f()}return n}var lp=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor.t;Wv(this.editor,"numberedList",e("Numbered List"),''),Wv(this.editor,"bulletedList",e("Bulleted List"),'')}}]),n}(Vc);function cp(e,t){return function(e){e.on("attribute:url:media",n)};function n(n,r,i){if(i.consumable.consume(r.item,n.name)){var o=r.attributeNewValue,a=i.writer,s=i.mapper.toViewElement(r.item),l=h(s.getChildren()).find((function(e){return e.getCustomProperty("media-content")}));a.remove(l);var c=e.getMediaViewElement(a,o,t);a.insert(a.createPositionAt(s,0),c)}}}function up(e,t,n,r){var i=e.createContainerElement("figure",{class:"media"});return e.insert(e.createPositionAt(i,0),t.getMediaViewElement(e,n,r)),i}function dp(e){var t=e.getSelectedElement();return t&&t.is("element","media")?t:null}function hp(e,t,n){e.change((function(r){var i=r.createElement("media",{url:t});e.insertContent(i,n),r.setSelection(i,"on")}))}var fp=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){var e=this.editor.model,t=e.document.selection,n=e.schema,r=Ff(t,e),i=dp(t),o=r.parent;o.isEmpty&&!e.schema.isLimit(o)&&(o=o.parent),this.value=i?i.getAttribute("url"):null,this.isEnabled=n.checkChild(o,"media")}},{key:"execute",value:function(e){var t=this.editor.model,n=t.document.selection,r=dp(n);if(r)t.change((function(t){t.setAttribute("url",e,r)}));else{var i=Ff(n,t);hp(t,e,i)}}}]),n}(Hc),gp=function(){function e(t,n){m(this,e);var r=n.providers,i=n.extraProviders||[],o=new Set(n.removeProviders),a=r.concat(i).filter((function(e){var t=e.name;return t?!o.has(t):(Object(Qt.c)("media-embed-no-provider-name",{provider:e}),!1)}));this.locale=t,this.providerDefinitions=a}return p(e,[{key:"hasMedia",value:function(e){return!!this._getMedia(e)}},{key:"getMediaViewElement",value:function(e,t,n){return this._getMedia(t).getViewElement(e,n)}},{key:"_getMedia",value:function(e){if(!e)return new mp(this.locale);e=e.trim();var t,n=d(this.providerDefinitions);try{for(n.s();!(t=n.n()).done;){var r=t.value,i=r.html,o=r.url;Array.isArray(o)||(o=[o]);var a,s=d(o);try{for(s.s();!(a=s.n()).done;){var l=a.value,c=this._getUrlMatches(e,l);if(c)return new mp(this.locale,e,c,i)}}catch(e){s.e(e)}finally{s.f()}}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"_getUrlMatches",value:function(e,t){var n=e.match(t);if(n)return n;var r=e.replace(/^https?:\/\//,"");return(n=r.match(t))||((n=(r=r.replace(/^www\./,"")).match(t))||null)}}]),e}(),mp=function(){function e(t,n,r,i){m(this,e),this.url=this._getValidUrl(n),this._t=t.t,this._match=r,this._previewRenderer=i}return p(e,[{key:"getViewElement",value:function(e,t){var n,r={};if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(r["data-oembed-url"]=this.url),t.renderForEditingView&&(r.class="ck-media__wrapper");var i=this._getPreviewHtml(t);n=e.createRawElement("div",r,(function(e){e.innerHTML=i}))}else this.url&&(r.url=this.url),n=e.createEmptyElement("oembed",r);return e.setCustomProperty("media-content",!0,n),n}},{key:"_getPreviewHtml",value:function(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}},{key:"_getPlaceholderHtml",value:function(){var e=new pc,t=new mc;return e.text=this._t("Open media in new tab"),t.content='',t.viewBox="0 0 64 42",new Sl({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},e]}]}).render().outerHTML}},{key:"_getValidUrl",value:function(e){return e?e.match(/^https?/)?e:"https://"+e:null}}]),e}(),vp=n(52);Yl()(vp.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),vp.a.locals;var pp=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),r=t.call(this,e),e.config.define("mediaEmbed",{providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:function(e){return'
    ')}},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:function(e){return'
    ')}},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:function(e){return'
    ')}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:function(e){return'
    ')}},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:/^google\.com\/maps/},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),r.registry=new gp(e.locale,e.config.get("mediaEmbed")),r}return p(n,null,[{key:"pluginName",get:function(){return"MediaEmbedEditing"}}]),p(n,[{key:"init",value:function(){var e=this.editor,t=e.model.schema,n=e.t,r=e.conversion,i=e.config.get("mediaEmbed.previewsInData"),o=this.registry;e.commands.add("mediaEmbed",new fp(e)),t.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),r.for("dataDowncast").elementToElement({model:"media",view:function(e,t){var n=t.writer,r=e.getAttribute("url");return up(n,o,r,{renderMediaPreview:r&&i})}}),r.for("dataDowncast").add(cp(o,{renderMediaPreview:i})),r.for("editingDowncast").elementToElement({model:"media",view:function(e,t){var r=t.writer,i=e.getAttribute("url");return function(e,t,n){return t.setCustomProperty("media",!0,e),Of(e,t,{label:n})}(up(r,o,i,{renderForEditingView:!0}),r,n("media widget"))}}),r.for("editingDowncast").add(cp(o,{renderForEditingView:!0})),r.for("upcast").elementToElement({view:{name:"oembed",attributes:{url:!0}},model:function(e,t){var n=t.writer,r=e.getAttribute("url");if(o.hasMedia(r))return n.createElement("media",{url:r})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:function(e,t){var n=t.writer,r=e.getAttribute("data-oembed-url");if(o.hasMedia(r))return n.createElement("media",{url:r})}})}}]),n}(Vc),kp=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#[\]@!$&'()*+,;=%]+$/,bp=function(e){k(n,e);var t=b(n);function n(e){var r;return m(this,n),(r=t.call(this,e))._timeoutId=null,r._positionToInsert=null,r}return p(n,null,[{key:"requires",get:function(){return[Rd,Th]}},{key:"pluginName",get:function(){return"AutoMediaEmbed"}}]),p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.model.document;this.listenTo(t.plugins.get(Rd),"inputTransformation",(function(){var t=n.selection.getFirstRange(),r=Js.fromPosition(t.start);r.stickiness="toPrevious";var i=Js.fromPosition(t.end);i.stickiness="toNext",n.once("change:data",(function(){e._embedMediaBetweenPositions(r,i),r.detach(),i.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(function(){e._timeoutId&&(Pi.window.clearTimeout(e._timeoutId),e._positionToInsert.detach(),e._timeoutId=null,e._positionToInsert=null)}),{priority:"high"})}},{key:"_embedMediaBetweenPositions",value:function(e,t){var n,r=this,i=this.editor,o=i.plugins.get(pp).registry,a=new pa(e,t),s=a.getWalker({ignoreElementEnd:!0}),l="",c=d(s);try{for(c.s();!(n=c.n()).done;){var u=n.value;u.item.is("$textProxy")&&(l+=u.item.data)}}catch(e){c.e(e)}finally{c.f()}(l=l.trim()).match(kp)&&o.hasMedia(l)&&i.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=Js.fromPosition(e),this._timeoutId=Pi.window.setTimeout((function(){i.model.change((function(e){var t;r._timeoutId=null,e.remove(a),a.detach(),"$graveyard"!==r._positionToInsert.root.rootName&&(t=r._positionToInsert),hp(i.model,l,t),r._positionToInsert.detach(),r._positionToInsert=null}))}),100)):a.detach()}}]),n}(Vc),yp=n(53);Yl()(yp.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),yp.a.locals;var wp=function(e){k(n,e);var t=b(n);function n(e,r){var i;m(this,n),i=t.call(this,r);var o=r.t;return i.focusTracker=new _l,i.keystrokes=new pl,i.set("mediaURLInputValue",""),i.urlInputView=i._createUrlInput(),i.saveButtonView=i._createButton(o("Save"),bg,"ck-button-save"),i.saveButtonView.type="submit",i.saveButtonView.bind("isEnabled").to(w(i),"mediaURLInputValue",(function(e){return!!e})),i.cancelButtonView=i._createButton(o("Cancel"),yg,"ck-button-cancel","cancel"),i._focusables=new El,i._focusCycler=new nc({focusables:i._focusables,focusTracker:i.focusTracker,keystrokeHandler:i.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),i._validators=e,i.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[i.urlInputView,i.saveButtonView,i.cancelButtonView]}),i}return p(n,[{key:"render",value:function(){var e=this;c(D(n.prototype),"render",this).call(this),kg({view:this}),[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((function(t){e._focusables.add(t),e.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);var t=function(e){return e.stopPropagation()};this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",(function(e,t){t.stopPropagation()}),{priority:"high"})}},{key:"focus",value:function(){this._focusCycler.focusFirst()}},{key:"isValid",value:function(){this.resetFormStatus();var e,t=d(this._validators);try{for(t.s();!(e=t.n()).done;){var n=(0,e.value)(this);if(n)return this.urlInputView.errorText=n,!1}}catch(e){t.e(e)}finally{t.f()}return!0}},{key:"resetFormStatus",value:function(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}},{key:"_createUrlInput",value:function(){var e=this,t=this.locale.t,n=new fg(this.locale,vg),r=n.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),n.label=t("Media URL"),n.infoText=this._urlInputViewInfoDefault,r.placeholder="https://example.com",r.on("input",(function(){n.infoText=r.element.value?e._urlInputViewInfoTip:e._urlInputViewInfoDefault,e.mediaURLInputValue=r.element.value.trim()})),n}},{key:"_createButton",value:function(e,t,n,r){var i=new bc(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}},{key:"url",get:function(){return this.urlInputView.fieldView.element.value.trim()},set:function(e){this.urlInputView.fieldView.element.value=e.trim()}}]),n}($l),Cp=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.commands.get("mediaEmbed"),r=t.plugins.get(pp).registry;t.ui.componentFactory.add("mediaEmbed",(function(i){var o=Ic(i),a=new wp(function(e,t){return[function(t){if(!t.url.length)return e("The URL must not be empty.")},function(n){if(!t.hasMedia(n.url))return e("This media URL is not supported.")}]}(t.t,r),t.locale);return e._setUpDropdown(o,a,n,t),e._setUpForm(o,a,n),o}))}},{key:"_setUpDropdown",value:function(e,t,n){var r=this.editor,i=r.t,o=e.buttonView;function a(){r.editing.view.focus(),e.isOpen=!1}e.bind("isEnabled").to(n),e.panelView.children.add(t),o.set({label:i("Insert media"),icon:'',tooltip:!0}),o.on("open",(function(){t.url=n.value||"",t.urlInputView.fieldView.select(),t.focus()}),{priority:"low"}),e.on("submit",(function(){t.isValid()&&(r.execute("mediaEmbed",t.url),a())})),e.on("change:isOpen",(function(){return t.resetFormStatus()})),e.on("cancel",(function(){return a()}))}},{key:"_setUpForm",value:function(e,t,n){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(n,"value"),t.urlInputView.bind("isReadOnly").to(n,"isEnabled",(function(e){return!e}))}}],[{key:"requires",get:function(){return[pp]}},{key:"pluginName",get:function(){return"MediaEmbedUI"}}]),n}(Vc),Ap=n(54);Yl()(Ap.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),Ap.a.locals;var _p=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"refresh",value:function(){this.isEnabled=function(e){var t=e.schema,n=e.document.selection;return function(e,t,n){var r=function(e,t){var n=Ff(e,t).parent;return n.isEmpty&&!n.is("element","$root")?n.parent:n}(e,n);return t.checkChild(r,"pageBreak")}(n,t,e)&&!function(e,t){var n=e.getSelectedElement();return n&&t.isObject(n)}(n,t)}(this.editor.model)}},{key:"execute",value:function(){var e=this.editor.model;e.change((function(t){var n=t.createElement("pageBreak");e.insertContent(n);var r=n.nextSibling;!(r&&e.schema.checkChild(r,"$text"))&&e.schema.checkChild(n.parent,"paragraph")&&(r=t.createElement("paragraph"),e.insertContent(r,t.createPositionAfter(n))),r&&t.setSelection(r,0)}))}}]),n}(Hc),xp=n(55);Yl()(xp.a,{injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0}),xp.a.locals;var Dp=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this.editor,t=e.model.schema,n=e.t,r=e.conversion;t.register("pageBreak",{isObject:!0,allowWhere:"$block"}),r.for("dataDowncast").elementToElement({model:"pageBreak",view:function(e,t){var n=t.writer,r=n.createContainerElement("div",{class:"page-break",style:"page-break-after: always"}),i=n.createContainerElement("span",{style:"display: none"});return n.insert(n.createPositionAt(r,0),i),r}}),r.for("editingDowncast").elementToElement({model:"pageBreak",view:function(e,t){var r=t.writer,i=n("Page break"),o=r.createContainerElement("div"),a=r.createContainerElement("span"),s=r.createText(n("Page break"));return r.addClass("page-break",o),r.setCustomProperty("pageBreak",!0,o),r.addClass("page-break__label",a),r.insert(r.createPositionAt(o,0),a),r.insert(r.createPositionAt(a,0),s),function(e,t,n){return t.setCustomProperty("pageBreak",!0,e),Of(e,t,{label:n})}(o,r,i)}}),r.for("upcast").elementToElement({view:function(e){var t="always"==e.getStyle("page-break-before"),n="always"==e.getStyle("page-break-after");if(t||n){if(1==e.childCount){var r=e.getChild(0);if(!r.is("element","span")||"none"!=r.getStyle("display")||1!=r.childCount)return;var i=r.getChild(0);if(!i.is("$text")||" "!==i.data)return}else if(e.childCount>1)return;return{name:!0}}},model:"pageBreak",converterPriority:"high"}),e.commands.add("pageBreak",new _p(e))}}],[{key:"pluginName",get:function(){return"PageBreakEditing"}}]),n}(Vc),Ep=function(e){k(n,e);var t=b(n);function n(){return m(this,n),t.apply(this,arguments)}return p(n,[{key:"init",value:function(){var e=this,t=this.editor,n=t.t;t.ui.componentFactory.add("pageBreak",(function(r){var i=t.commands.get("pageBreak"),o=new bc(r);return o.set({label:n("Page break"),icon:'',tooltip:!0}),o.bind("isEnabled").to(i,"isEnabled"),e.listenTo(o,"execute",(function(){t.execute("pageBreak"),t.editing.view.focus()})),o}))}}]),n}(Vc);function Sp(e,t,n){var r=t.parent,i=n.createElement(e.type),o=r.getChildIndex(t)+1;return n.insertChild(o,i,r),i}function Mp(e){var t={},n=e.getStyle("mso-list");if(n){var r=n.match(/(^|\s+)l(\d+)/i),i=n.match(/\s*lfo(\d+)/i),o=n.match(/\s*level(\d+)/i);r&&i&&o&&(t.id=r[2],t.order=i[1],t.indent=o[1])}return t}var Tp=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i,Ip=function(){function e(t){m(this,e),this.document=t}return p(e,[{key:"isActive",value:function(e){return Tp.test(e)}},{key:"execute",value:function(e){var t=new Cm(this.document);!function(e,t){var n,r=d(e.getChildren());try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.is("element","b")&&"normal"===i.getStyle("font-weight")){var o=e.getChildIndex(i);t.remove(i),t.insertChild(o,i.getChildren(),e)}}}catch(e){r.e(e)}finally{r.f()}}(e.content,t),function(e,t){var n,r=d(t.createRangeIn(e));try{for(r.s();!(n=r.n()).done;){var i=n.value.item;if(i.is("element","li")){var o=i.getChild(0);o&&o.is("element","p")&&t.unwrapElement(o)}}}catch(e){r.e(e)}finally{r.f()}}(e.content,t)}}]),e}();function Bp(e){return e.replace(/(\s+)<\/span>/g,(function(e,t){return 1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length)}))}function Np(e){return btoa(e.match(/\w{2}/g).map((function(e){return String.fromCharCode(parseInt(e,16))})).join(""))}var Pp=//i,Lp=/xmlns:o="urn:schemas-microsoft-com/i,Op=function(){function e(t){m(this,e),this.document=t}return p(e,[{key:"isActive",value:function(e){return Pp.test(e)||Lp.test(e)}},{key:"execute",value:function(e){var t=function(e,t){var n=new DOMParser,r=function(e){return Bp(Bp(e)).replace(/([\s]*?)[\r\n]+(\s*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>(\s*[\r\n]\s*)<")}(function(e){var t=e.match(/<\/body>(.*?)(<\/html>|$)/);return t&&t[1]&&(e=e.slice(0,t.index)+e.slice(t.index).replace(t[1],"")),e}(e=e.replace(/

    abc

    \n\t\t\t//\n\t\t\tif ( isAttribute && this._wrapAttributeElement( wrapElement, child ) ) {\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\n\t\t\t}\n\t\t\t//\n\t\t\t// Wrap the child if it is not an attribute element or if it is an attribute element that should be inside\n\t\t\t// `wrapElement` (due to priority).\n\t\t\t//\n\t\t\t//

    abc

    -->

    abc

    \n\t\t\t//

    abc

    -->

    abc

    \n\t\t\telse if ( isText || isEmpty || isUI || isRaw || ( isAttribute && shouldABeOutsideB( wrapElement, child ) ) ) {\n\t\t\t\t// Clone attribute.\n\t\t\t\tconst newAttribute = wrapElement._clone();\n\n\t\t\t\t// Wrap current node with new attribute.\n\t\t\t\tchild._remove();\n\t\t\t\tnewAttribute._appendChild( child );\n\n\t\t\t\tparent._insertChild( i, newAttribute );\n\t\t\t\tthis._addToClonedElementsGroup( newAttribute );\n\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\n\t\t\t}\n\t\t\t//\n\t\t\t// If other nested attribute is found and it wasn't wrapped (see above), continue wrapping inside it.\n\t\t\t//\n\t\t\t//

    abc

    -->

    abc

    \n\t\t\t//\n\t\t\telse if ( isAttribute ) {\n\t\t\t\tthis._wrapChildren( child, 0, child.childCount, wrapElement );\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\t// Merge at each wrap.\n\t\tlet offsetChange = 0;\n\n\t\tfor ( const position of wrapPositions ) {\n\t\t\tposition.offset -= offsetChange;\n\n\t\t\t// Do not merge with elements outside selected children.\n\t\t\tif ( position.offset == startOffset ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst newPosition = this.mergeAttributes( position );\n\n\t\t\t// If nodes were merged - other merge offsets will change.\n\t\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\t\toffsetChange++;\n\t\t\t\tendOffset--;\n\t\t\t}\n\t\t}\n\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n\t}\n\n\t/**\n\t * Unwraps children from provided `unwrapElement`. Only children contained in `parent` element between\n\t * `startOffset` and `endOffset` will be unwrapped.\n\t *\n\t * @private\n\t * @param {module:engine/view/element~Element} parent\n\t * @param {Number} startOffset\n\t * @param {Number} endOffset\n\t * @param {module:engine/view/element~Element} unwrapElement\n\t */\n\t_unwrapChildren( parent, startOffset, endOffset, unwrapElement ) {\n\t\tlet i = startOffset;\n\t\tconst unwrapPositions = [];\n\n\t\t// Iterate over each element between provided offsets inside parent.\n\t\t// We don't use tree walker or range iterator because we will be removing and merging potentially multiple nodes,\n\t\t// so it could get messy. It is safer to it manually in this case.\n\t\twhile ( i < endOffset ) {\n\t\t\tconst child = parent.getChild( i );\n\n\t\t\t// Skip all text nodes. There should be no container element's here either.\n\t\t\tif ( !child.is( 'attributeElement' ) ) {\n\t\t\t\ti++;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// (In all examples, assume that `unwrapElement` is `` element.)\n\t\t\t//\n\t\t\t// If the child is similar to the given attribute element, unwrap it - it will be completely removed.\n\t\t\t//\n\t\t\t//

    abcxyz

    -->

    abcxyz

    \n\t\t\t//\n\t\t\tif ( child.isSimilar( unwrapElement ) ) {\n\t\t\t\tconst unwrapped = child.getChildren();\n\t\t\t\tconst count = child.childCount;\n\n\t\t\t\t// Replace wrapper element with its children\n\t\t\t\tchild._remove();\n\t\t\t\tparent._insertChild( i, unwrapped );\n\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\n\n\t\t\t\t// Save start and end position of moved items.\n\t\t\t\tunwrapPositions.push(\n\t\t\t\t\tnew Position( parent, i ),\n\t\t\t\t\tnew Position( parent, i + count )\n\t\t\t\t);\n\n\t\t\t\t// Skip elements that were unwrapped. Assuming there won't be another element to unwrap in child elements.\n\t\t\t\ti += count;\n\t\t\t\tendOffset += count - 1;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// If the child is not similar but is an attribute element, try partial unwrapping - remove the same attributes/styles/classes.\n\t\t\t// Partial unwrapping will happen only if the elements have the same name.\n\t\t\t//\n\t\t\t//

    abcxyz

    -->

    abcxyz

    \n\t\t\t//

    abcxyz

    -->

    abcxyz

    \n\t\t\t//\n\t\t\tif ( this._unwrapAttributeElement( unwrapElement, child ) ) {\n\t\t\t\tunwrapPositions.push(\n\t\t\t\t\tnew Position( parent, i ),\n\t\t\t\t\tnew Position( parent, i + 1 )\n\t\t\t\t);\n\n\t\t\t\ti++;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// If other nested attribute is found, look through it's children for elements to unwrap.\n\t\t\t//\n\t\t\t//

    abc

    -->

    abc

    \n\t\t\t//\n\t\t\tthis._unwrapChildren( child, 0, child.childCount, unwrapElement );\n\n\t\t\ti++;\n\t\t}\n\n\t\t// Merge at each unwrap.\n\t\tlet offsetChange = 0;\n\n\t\tfor ( const position of unwrapPositions ) {\n\t\t\tposition.offset -= offsetChange;\n\n\t\t\t// Do not merge with elements outside selected children.\n\t\t\tif ( position.offset == startOffset || position.offset == endOffset ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst newPosition = this.mergeAttributes( position );\n\n\t\t\t// If nodes were merged - other merge offsets will change.\n\t\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\t\toffsetChange++;\n\t\t\t\tendOffset--;\n\t\t\t}\n\t\t}\n\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n\t}\n\n\t/**\n\t * Helper function for `view.writer.wrap`. Wraps range with provided attribute element.\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t *\n\t * @private\n\t * @param {module:engine/view/range~Range} range\n\t * @param {module:engine/view/attributeelement~AttributeElement} attribute\n\t * @returns {module:engine/view/range~Range} New range after wrapping, spanning over wrapping attribute element.\n\t */\n\t_wrapRange( range, attribute ) {\n\t\t// Break attributes at range start and end.\n\t\tconst { start: breakStart, end: breakEnd } = this._breakAttributesRange( range, true );\n\t\tconst parentContainer = breakStart.parent;\n\n\t\t// Wrap all children with attribute.\n\t\tconst newRange = this._wrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t\t// Merge attributes at the both ends and return a new range.\n\t\tconst start = this.mergeAttributes( newRange.start );\n\n\t\t// If start position was merged - move end position back.\n\t\tif ( !start.isEqual( newRange.start ) ) {\n\t\t\tnewRange.end.offset--;\n\t\t}\n\t\tconst end = this.mergeAttributes( newRange.end );\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Helper function for {@link #wrap}. Wraps position with provided attribute element.\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t *\n\t * @private\n\t * @param {module:engine/view/position~Position} position\n\t * @param {module:engine/view/attributeelement~AttributeElement} attribute\n\t * @returns {module:engine/view/position~Position} New position after wrapping.\n\t */\n\t_wrapPosition( position, attribute ) {\n\t\t// Return same position when trying to wrap with attribute similar to position parent.\n\t\tif ( attribute.isSimilar( position.parent ) ) {\n\t\t\treturn movePositionToTextNode( position.clone() );\n\t\t}\n\n\t\t// When position is inside text node - break it and place new position between two text nodes.\n\t\tif ( position.parent.is( '$text' ) ) {\n\t\t\tposition = breakTextNode( position );\n\t\t}\n\n\t\t// Create fake element that will represent position, and will not be merged with other attributes.\n\t\tconst fakePosition = this.createAttributeElement();\n\t\tfakePosition._priority = Number.POSITIVE_INFINITY;\n\t\tfakePosition.isSimilar = () => false;\n\n\t\t// Insert fake element in position location.\n\t\tposition.parent._insertChild( position.offset, fakePosition );\n\n\t\t// Range around inserted fake attribute element.\n\t\tconst wrapRange = new Range( position, position.getShiftedBy( 1 ) );\n\n\t\t// Wrap fake element with attribute (it will also merge if possible).\n\t\tthis.wrap( wrapRange, attribute );\n\n\t\t// Remove fake element and place new position there.\n\t\tconst newPosition = new Position( fakePosition.parent, fakePosition.index );\n\t\tfakePosition._remove();\n\n\t\t// If position is placed between text nodes - merge them and return position inside.\n\t\tconst nodeBefore = newPosition.nodeBefore;\n\t\tconst nodeAfter = newPosition.nodeAfter;\n\n\t\tif ( nodeBefore instanceof Text && nodeAfter instanceof Text ) {\n\t\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t\t}\n\n\t\t// If position is next to text node - move position inside.\n\t\treturn movePositionToTextNode( newPosition );\n\t}\n\n\t/**\n\t * \tWraps one {@link module:engine/view/attributeelement~AttributeElement AttributeElement} into another by\n\t * \tmerging them if possible. When merging is possible - all attributes, styles and classes are moved from wrapper\n\t * \telement to element being wrapped.\n\t *\n\t * \t@private\n\t * \t@param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n\t * \t@param {module:engine/view/attributeelement~AttributeElement} toWrap AttributeElement to wrap using wrapper element.\n\t * \t@returns {Boolean} Returns `true` if elements are merged.\n\t */\n\t_wrapAttributeElement( wrapper, toWrap ) {\n\t\tif ( !canBeJoined( wrapper, toWrap ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Can't merge if name or priority differs.\n\t\tif ( wrapper.name !== toWrap.name || wrapper.priority !== toWrap.priority ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if attributes can be merged.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If some attributes are different we cannot wrap.\n\t\t\tif ( toWrap.hasAttribute( key ) && toWrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if styles can be merged.\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\tif ( toWrap.hasStyle( key ) && toWrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Move all attributes/classes/styles from wrapper to wrapped AttributeElement.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Move only these attributes that are not present - other are similar.\n\t\t\tif ( !toWrap.hasAttribute( key ) ) {\n\t\t\t\tthis.setAttribute( key, wrapper.getAttribute( key ), toWrap );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\tif ( !toWrap.hasStyle( key ) ) {\n\t\t\t\tthis.setStyle( key, wrapper.getStyle( key ), toWrap );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const key of wrapper.getClassNames() ) {\n\t\t\tif ( !toWrap.hasClass( key ) ) {\n\t\t\t\tthis.addClass( key, toWrap );\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Unwraps {@link module:engine/view/attributeelement~AttributeElement AttributeElement} from another by removing\n\t * corresponding attributes, classes and styles. All attributes, classes and styles from wrapper should be present\n\t * inside element being unwrapped.\n\t *\n\t * @private\n\t * @param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n\t * @param {module:engine/view/attributeelement~AttributeElement} toUnwrap AttributeElement to unwrap using wrapper element.\n\t * @returns {Boolean} Returns `true` if elements are unwrapped.\n\t **/\n\t_unwrapAttributeElement( wrapper, toUnwrap ) {\n\t\tif ( !canBeJoined( wrapper, toUnwrap ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Can't unwrap if name or priority differs.\n\t\tif ( wrapper.name !== toUnwrap.name || wrapper.priority !== toUnwrap.priority ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper attributes.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If some attributes are missing or different we cannot unwrap.\n\t\t\tif ( !toUnwrap.hasAttribute( key ) || toUnwrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper classes.\n\t\tif ( !toUnwrap.hasClass( ...wrapper.getClassNames() ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper styles.\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\t// If some styles are missing or different we cannot unwrap.\n\t\t\tif ( !toUnwrap.hasStyle( key ) || toUnwrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Remove all wrapper's attributes from unwrapped element.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.removeAttribute( key, toUnwrap );\n\t\t}\n\n\t\t// Remove all wrapper's classes from unwrapped element.\n\t\tthis.removeClass( Array.from( wrapper.getClassNames() ), toUnwrap );\n\n\t\t// Remove all wrapper's styles from unwrapped element.\n\t\tthis.removeStyle( Array.from( wrapper.getStyleNames() ), toUnwrap );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at the boundaries of given range.\n\t *\n\t * @private\n\t * @param {module:engine/view/range~Range} range Range which `start` and `end` positions will be used to break attributes.\n\t * @param {Boolean} [forceSplitText=false] If set to `true`, will break text nodes even if they are directly in container element.\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\n\t * @returns {module:engine/view/range~Range} New range with located at break positions.\n\t */\n\t_breakAttributesRange( range, forceSplitText = false ) {\n\t\tconst rangeStart = range.start;\n\t\tconst rangeEnd = range.end;\n\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\t// Break at the collapsed position. Return new collapsed range.\n\t\tif ( range.isCollapsed ) {\n\t\t\tconst position = this._breakAttributes( range.start, forceSplitText );\n\n\t\t\treturn new Range( position, position );\n\t\t}\n\n\t\tconst breakEnd = this._breakAttributes( rangeEnd, forceSplitText );\n\t\tconst count = breakEnd.parent.childCount;\n\t\tconst breakStart = this._breakAttributes( rangeStart, forceSplitText );\n\n\t\t// Calculate new break end offset.\n\t\tbreakEnd.offset += breakEnd.parent.childCount - count;\n\n\t\treturn new Range( breakStart, breakEnd );\n\t}\n\n\t/**\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at given position.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element` when break position\n\t * is placed inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element` when break position\n\t * is placed inside {@link module:engine/view/uielement~UIElement UIElement}.\n\t *\n\t * @private\n\t * @param {module:engine/view/position~Position} position Position where to break attributes.\n\t * @param {Boolean} [forceSplitText=false] If set to `true`, will break text nodes even if they are directly in container element.\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\n\t * @returns {module:engine/view/position~Position} New position after breaking the attributes.\n\t */\n\t_breakAttributes( position, forceSplitText = false ) {\n\t\tconst positionOffset = position.offset;\n\t\tconst positionParent = position.parent;\n\n\t\t// If position is placed inside EmptyElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'emptyElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break an `EmptyElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-empty-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-empty-element', this.document );\n\t\t}\n\n\t\t// If position is placed inside UIElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'uiElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break a `UIElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-ui-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-ui-element', this.document );\n\t\t}\n\n\t\t// If position is placed inside RawElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'rawElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break a `RawElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-raw-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-raw-element', this.document );\n\t\t}\n\n\t\t// There are no attributes to break and text nodes breaking is not forced.\n\t\tif ( !forceSplitText && positionParent.is( '$text' ) && isContainerOrFragment( positionParent.parent ) ) {\n\t\t\treturn position.clone();\n\t\t}\n\n\t\t// Position's parent is container, so no attributes to break.\n\t\tif ( isContainerOrFragment( positionParent ) ) {\n\t\t\treturn position.clone();\n\t\t}\n\n\t\t// Break text and start again in new position.\n\t\tif ( positionParent.is( '$text' ) ) {\n\t\t\treturn this._breakAttributes( breakTextNode( position ), forceSplitText );\n\t\t}\n\n\t\tconst length = positionParent.childCount;\n\n\t\t//

    foobar{}

    \n\t\t//

    foobar[]

    \n\t\t//

    foobar[]

    \n\t\tif ( positionOffset == length ) {\n\t\t\tconst newPosition = new Position( positionParent.parent, positionParent.index + 1 );\n\n\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t} else {\n\t\t\t//

    foo{}bar

    \n\t\t\t//

    foo[]bar

    \n\t\t\t//

    foo{}bar

    \n\t\t\tif ( positionOffset === 0 ) {\n\t\t\t\tconst newPosition = new Position( positionParent.parent, positionParent.index );\n\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t\t}\n\t\t\t//

    foob{}ar

    \n\t\t\t//

    foob[]ar

    \n\t\t\t//

    foob[]ar

    \n\t\t\t//

    foob[]ar

    \n\t\t\telse {\n\t\t\t\tconst offsetAfter = positionParent.index + 1;\n\n\t\t\t\t// Break element.\n\t\t\t\tconst clonedNode = positionParent._clone();\n\n\t\t\t\t// Insert cloned node to position's parent node.\n\t\t\t\tpositionParent.parent._insertChild( offsetAfter, clonedNode );\n\t\t\t\tthis._addToClonedElementsGroup( clonedNode );\n\n\t\t\t\t// Get nodes to move.\n\t\t\t\tconst count = positionParent.childCount - positionOffset;\n\t\t\t\tconst nodesToMove = positionParent._removeChildren( positionOffset, count );\n\n\t\t\t\t// Move nodes to cloned node.\n\t\t\t\tclonedNode._appendChild( nodesToMove );\n\n\t\t\t\t// Create new position to work on.\n\t\t\t\tconst newPosition = new Position( positionParent.parent, offsetAfter );\n\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Stores the information that an {@link module:engine/view/attributeelement~AttributeElement attribute element} was\n\t * added to the tree. Saves the reference to the group in the given element and updates the group, so other elements\n\t * from the group now keep a reference to the given attribute element.\n\t *\n\t * The clones group can be obtained using {@link module:engine/view/attributeelement~AttributeElement#getElementsWithSameId}.\n\t *\n\t * Does nothing if added element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t *\n\t * @private\n\t * @param {module:engine/view/attributeelement~AttributeElement} element Attribute element to save.\n\t */\n\t_addToClonedElementsGroup( element ) {\n\t\t// Add only if the element is in document tree.\n\t\tif ( !element.root.is( 'rootElement' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Traverse the element's children recursively to find other attribute elements that also might got inserted.\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\n\t\tif ( element.is( 'element' ) ) {\n\t\t\tfor ( const child of element.getChildren() ) {\n\t\t\t\tthis._addToClonedElementsGroup( child );\n\t\t\t}\n\t\t}\n\n\t\tconst id = element.id;\n\n\t\tif ( !id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet group = this._cloneGroups.get( id );\n\n\t\tif ( !group ) {\n\t\t\tgroup = new Set();\n\t\t\tthis._cloneGroups.set( id, group );\n\t\t}\n\n\t\tgroup.add( element );\n\t\telement._clonesGroup = group;\n\t}\n\n\t/**\n\t * Removes all the information about the given {@link module:engine/view/attributeelement~AttributeElement attribute element}\n\t * from its clones group.\n\t *\n\t * Keep in mind, that the element will still keep a reference to the group (but the group will not keep a reference to it).\n\t * This allows to reference the whole group even if the element was already removed from the tree.\n\t *\n\t * Does nothing if the element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t *\n\t * @private\n\t * @param {module:engine/view/attributeelement~AttributeElement} element Attribute element to remove.\n\t */\n\t_removeFromClonedElementsGroup( element ) {\n\t\t// Traverse the element's children recursively to find other attribute elements that also got removed.\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\n\t\tif ( element.is( 'element' ) ) {\n\t\t\tfor ( const child of element.getChildren() ) {\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\n\t\t\t}\n\t\t}\n\n\t\tconst id = element.id;\n\n\t\tif ( !id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst group = this._cloneGroups.get( id );\n\n\t\tif ( !group ) {\n\t\t\treturn;\n\t\t}\n\n\t\tgroup.delete( element );\n\t\t// Not removing group from element on purpose!\n\t\t// If other parts of code have reference to this element, they will be able to get references to other elements from the group.\n\t}\n}\n\n// Helper function for `view.writer.wrap`. Checks if given element has any children that are not ui elements.\nfunction _hasNonUiChildren( parent ) {\n\treturn Array.from( parent.getChildren() ).some( child => !child.is( 'uiElement' ) );\n}\n\n/**\n * The `attribute` passed to {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`}\n * must be an instance of {@link module:engine/view/attributeelement~AttributeElement `AttributeElement`}.\n *\n * @error view-writer-wrap-invalid-attribute\n */\n\n// Returns first parent container of specified {@link module:engine/view/position~Position Position}.\n// Position's parent node is checked as first, then next parents are checked.\n// Note that {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n//\n// @param {module:engine/view/position~Position} position Position used as a start point to locate parent container.\n// @returns {module:engine/view/containerelement~ContainerElement|module:engine/view/documentfragment~DocumentFragment|undefined}\n// Parent container element or `undefined` if container is not found.\nfunction getParentContainer( position ) {\n\tlet parent = position.parent;\n\n\twhile ( !isContainerOrFragment( parent ) ) {\n\t\tif ( !parent ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\n\treturn parent;\n}\n\n// Checks if first {@link module:engine/view/attributeelement~AttributeElement AttributeElement} provided to the function\n// can be wrapped otuside second element. It is done by comparing elements'\n// {@link module:engine/view/attributeelement~AttributeElement#priority priorities}, if both have same priority\n// {@link module:engine/view/element~Element#getIdentity identities} are compared.\n//\n// @param {module:engine/view/attributeelement~AttributeElement} a\n// @param {module:engine/view/attributeelement~AttributeElement} b\n// @returns {Boolean}\nfunction shouldABeOutsideB( a, b ) {\n\tif ( a.priority < b.priority ) {\n\t\treturn true;\n\t} else if ( a.priority > b.priority ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use identities.\n\treturn a.getIdentity() < b.getIdentity();\n}\n\n// Returns new position that is moved to near text node. Returns same position if there is no text node before of after\n// specified position.\n//\n//\t\t

    foo[]

    ->

    foo{}

    \n//\t\t

    []foo

    ->

    {}foo

    \n//\n// @param {module:engine/view/position~Position} position\n// @returns {module:engine/view/position~Position} Position located inside text node or same position if there is no text nodes\n// before or after position location.\nfunction movePositionToTextNode( position ) {\n\tconst nodeBefore = position.nodeBefore;\n\n\tif ( nodeBefore && nodeBefore.is( '$text' ) ) {\n\t\treturn new Position( nodeBefore, nodeBefore.data.length );\n\t}\n\n\tconst nodeAfter = position.nodeAfter;\n\n\tif ( nodeAfter && nodeAfter.is( '$text' ) ) {\n\t\treturn new Position( nodeAfter, 0 );\n\t}\n\n\treturn position;\n}\n\n// Breaks text node into two text nodes when possible.\n//\n//\t\t

    foo{}bar

    ->

    foo[]bar

    \n//\t\t

    {}foobar

    ->

    []foobar

    \n//\t\t

    foobar{}

    ->

    foobar[]

    \n//\n// @param {module:engine/view/position~Position} position Position that need to be placed inside text node.\n// @returns {module:engine/view/position~Position} New position after breaking text node.\nfunction breakTextNode( position ) {\n\tif ( position.offset == position.parent.data.length ) {\n\t\treturn new Position( position.parent.parent, position.parent.index + 1 );\n\t}\n\n\tif ( position.offset === 0 ) {\n\t\treturn new Position( position.parent.parent, position.parent.index );\n\t}\n\n\t// Get part of the text that need to be moved.\n\tconst textToMove = position.parent.data.slice( position.offset );\n\n\t// Leave rest of the text in position's parent.\n\tposition.parent._data = position.parent.data.slice( 0, position.offset );\n\n\t// Insert new text node after position's parent text node.\n\tposition.parent.parent._insertChild( position.parent.index + 1, new Text( position.root.document, textToMove ) );\n\n\t// Return new position between two newly created text nodes.\n\treturn new Position( position.parent.parent, position.parent.index + 1 );\n}\n\n// Merges two text nodes into first node. Removes second node and returns merge position.\n//\n// @param {module:engine/view/text~Text} t1 First text node to merge. Data from second text node will be moved at the end of\n// this text node.\n// @param {module:engine/view/text~Text} t2 Second text node to merge. This node will be removed after merging.\n// @returns {module:engine/view/position~Position} Position after merging text nodes.\nfunction mergeTextNodes( t1, t2 ) {\n\t// Merge text data into first text node and remove second one.\n\tconst nodeBeforeLength = t1.data.length;\n\tt1._data += t2.data;\n\tt2._remove();\n\n\treturn new Position( t1, nodeBeforeLength );\n}\n\n// Checks if provided nodes are valid to insert.\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n// contains instances that are not supported ones (see error description for valid ones.\n//\n// @param Iterable. nodes\n// @param {Object} errorContext\nfunction validateNodesToInsert( nodes, errorContext ) {\n\tfor ( const node of nodes ) {\n\t\tif ( !validNodesToInsert.some( ( validNode => node instanceof validNode ) ) ) { // eslint-disable-line no-use-before-define\n\t\t\t/**\n\t\t\t * One of the nodes to be inserted is of an invalid type.\n\t\t\t *\n\t\t\t * Nodes to be inserted with {@link module:engine/view/downcastwriter~DowncastWriter#insert `DowncastWriter#insert()`} should be\n\t\t\t * of the following types:\n\t\t\t *\n\t\t\t * * {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n\t\t\t * * {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n\t\t\t * * {@link module:engine/view/emptyelement~EmptyElement EmptyElement},\n\t\t\t * * {@link module:engine/view/uielement~UIElement UIElement},\n\t\t\t * * {@link module:engine/view/rawelement~RawElement RawElement},\n\t\t\t * * {@link module:engine/view/text~Text Text}.\n\t\t\t *\n\t\t\t * @error view-writer-insert-invalid-node-type\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-insert-invalid-node-type', errorContext );\n\t\t}\n\n\t\tif ( !node.is( '$text' ) ) {\n\t\t\tvalidateNodesToInsert( node.getChildren(), errorContext );\n\t\t}\n\t}\n}\n\nconst validNodesToInsert = [ Text, AttributeElement, ContainerElement, EmptyElement, RawElement, UIElement ];\n\n// Checks if node is ContainerElement or DocumentFragment, because in most cases they should be treated the same way.\n//\n// @param {module:engine/view/node~Node} node\n// @returns {Boolean} Returns `true` if node is instance of ContainerElement or DocumentFragment.\nfunction isContainerOrFragment( node ) {\n\treturn node && ( node.is( 'containerElement' ) || node.is( 'documentFragment' ) );\n}\n\n// Checks if {@link module:engine/view/range~Range#start range start} and {@link module:engine/view/range~Range#end range end} are placed\n// inside same {@link module:engine/view/containerelement~ContainerElement container element}.\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when validation fails.\n//\n// @param {module:engine/view/range~Range} range\n// @param {Object} errorContext\nfunction validateRangeContainer( range, errorContext ) {\n\tconst startContainer = getParentContainer( range.start );\n\tconst endContainer = getParentContainer( range.end );\n\n\tif ( !startContainer || !endContainer || startContainer !== endContainer ) {\n\t\t/**\n\t\t * The container of the given range is invalid.\n\t\t *\n\t\t * This may happen if {@link module:engine/view/range~Range#start range start} and\n\t\t * {@link module:engine/view/range~Range#end range end} positions are not placed inside the same container element or\n\t\t * a parent container for these positions cannot be found.\n\t\t *\n\t\t * Methods like {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#remove()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#clean()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#unwrap()`} need to be called\n\t\t * on a range that has its start and end positions located in the same container element. Both positions can be\n\t\t * nested within other elements (e.g. an attribute element) but the closest container ancestor must be the same.\n\t\t *\n\t\t * @error view-writer-invalid-range-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-range-container', errorContext );\n\t}\n}\n\n// Checks if two attribute elements can be joined together. Elements can be joined together if, and only if\n// they do not have ids specified.\n//\n// @private\n// @param {module:engine/view/element~Element} a\n// @param {module:engine/view/element~Element} b\n// @returns {Boolean}\nfunction canBeJoined( a, b ) {\n\treturn a.id === null && b.id === null;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/istext\n */\n\n/**\n * Checks if the object is a native DOM Text node.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isText( obj ) {\n\treturn Object.prototype.toString.call( obj ) == '[object Text]';\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport { keyCodes } from '@ckeditor/ckeditor5-utils/src/keyboard';\nimport isText from '@ckeditor/ckeditor5-utils/src/dom/istext';\n\n/**\n * Set of utils related to block and inline fillers handling.\n *\n * Browsers do not allow to put caret in elements which does not have height. Because of it, we need to fill all\n * empty elements which should be selectable with elements or characters called \"fillers\". Unfortunately there is no one\n * universal filler, this is why two types are uses:\n *\n * * Block filler is an element which fill block elements, like `

    `. CKEditor uses `
    ` as a block filler during the editing,\n * as browsers do natively. So instead of an empty `

    ` there will be `


    `. The advantage of block filler is that\n * it is transparent for the selection, so when the caret is before the `
    ` and user presses right arrow he will be\n * moved to the next paragraph, not after the `
    `. The disadvantage is that it breaks a block, so it can not be used\n * in the middle of a line of text. The {@link module:engine/view/filler~BR_FILLER `
    ` filler} can be replaced with any other\n * character in the data output, for instance {@link module:engine/view/filler~NBSP_FILLER non-breaking space}.\n *\n * * Inline filler is a filler which does not break a line of text, so it can be used inside the text, for instance in the empty\n * `` surrendered by text: `foobar`, if we want to put the caret there. CKEditor uses a sequence of the zero-width\n * spaces as an {@link module:engine/view/filler~INLINE_FILLER inline filler} having the predetermined\n * {@link module:engine/view/filler~INLINE_FILLER_LENGTH length}. A sequence is used, instead of a single character to\n * avoid treating random zero-width spaces as the inline filler. Disadvantage of the inline filler is that it is not\n * transparent for the selection. The arrow key moves the caret between zero-width spaces characters, so the additional\n * code is needed to handle the caret.\n *\n * Both inline and block fillers are handled by the {@link module:engine/view/renderer~Renderer renderer} and are not present in the\n * view.\n *\n * @module engine/view/filler\n */\n\n/**\n * Non-breaking space filler creator. This is a function which creates ` ` text node.\n * It defines how the filler is created.\n *\n * @see module:engine/view/filler~BR_FILLER\n * @function\n */\nexport const NBSP_FILLER = domDocument => domDocument.createTextNode( '\\u00A0' );\n\n/**\n * `
    ` filler creator. This is a function which creates `
    ` element.\n * It defines how the filler is created.\n *\n * @see module:engine/view/filler~NBSP_FILLER\n * @function\n */\nexport const BR_FILLER = domDocument => {\n\tconst fillerBr = domDocument.createElement( 'br' );\n\tfillerBr.dataset.ckeFiller = true;\n\n\treturn fillerBr;\n};\n\n/**\n * Length of the {@link module:engine/view/filler~INLINE_FILLER INLINE_FILLER}.\n */\nexport const INLINE_FILLER_LENGTH = 7;\n\n/**\n * Inline filler which is a sequence of the zero width spaces.\n *\n * @type {String}\n */\nexport const INLINE_FILLER = ( () => {\n\tlet inlineFiller = '';\n\n\tfor ( let i = 0; i < INLINE_FILLER_LENGTH; i++ ) {\n\t\tinlineFiller += '\\u200b';\n\t}\n\n\treturn inlineFiller;\n} )(); // Usu IIF so the INLINE_FILLER appears as a constant in the docs.\n\n/**\n * Checks if the node is a text node which starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n *\n *\t\tstartsWithFiller( document.createTextNode( INLINE_FILLER ) ); // true\n *\t\tstartsWithFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // true\n *\t\tstartsWithFiller( document.createTextNode( 'foo' ) ); // false\n *\t\tstartsWithFiller( document.createElement( 'p' ) ); // false\n *\n * @param {Node} domNode DOM node.\n * @returns {Boolean} True if the text node starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n */\nexport function startsWithFiller( domNode ) {\n\treturn isText( domNode ) && ( domNode.data.substr( 0, INLINE_FILLER_LENGTH ) === INLINE_FILLER );\n}\n\n/**\n * Checks if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n *\n *\t\tisInlineFiller( document.createTextNode( INLINE_FILLER ) ); // true\n *\t\tisInlineFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // false\n *\n * @param {Text} domText DOM text node.\n * @returns {Boolean} True if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n */\nexport function isInlineFiller( domText ) {\n\treturn domText.data.length == INLINE_FILLER_LENGTH && startsWithFiller( domText );\n}\n\n/**\n * Get string data from the text node, removing an {@link module:engine/view/filler~INLINE_FILLER inline filler} from it,\n * if text node contains it.\n *\n *\t\tgetDataWithoutFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ) == 'foo' // true\n *\t\tgetDataWithoutFiller( document.createTextNode( 'foo' ) ) == 'foo' // true\n *\n * @param {Text} domText DOM text node, possible with inline filler.\n * @returns {String} Data without filler.\n */\nexport function getDataWithoutFiller( domText ) {\n\tif ( startsWithFiller( domText ) ) {\n\t\treturn domText.data.slice( INLINE_FILLER_LENGTH );\n\t} else {\n\t\treturn domText.data;\n\t}\n}\n\n/**\n * Assign key observer which move cursor from the end of the inline filler to the beginning of it when\n * the left arrow is pressed, so the filler does not break navigation.\n *\n * @param {module:engine/view/view~View} view View controller instance we should inject quirks handling on.\n */\nexport function injectQuirksHandling( view ) {\n\tview.document.on( 'keydown', jumpOverInlineFiller );\n}\n\n// Move cursor from the end of the inline filler to the beginning of it when, so the filler does not break navigation.\nfunction jumpOverInlineFiller( evt, data ) {\n\tif ( data.keyCode == keyCodes.arrowleft ) {\n\t\tconst domSelection = data.domTarget.ownerDocument.defaultView.getSelection();\n\n\t\tif ( domSelection.rangeCount == 1 && domSelection.getRangeAt( 0 ).collapsed ) {\n\t\t\tconst domParent = domSelection.getRangeAt( 0 ).startContainer;\n\t\t\tconst domOffset = domSelection.getRangeAt( 0 ).startOffset;\n\n\t\t\tif ( startsWithFiller( domParent ) && domOffset <= INLINE_FILLER_LENGTH ) {\n\t\t\t\tdomSelection.collapse( domParent, 0 );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/fastdiff\n */\n\n/**\n * Finds positions of the first and last change in the given string/array and generates a set of changes:\n *\n *\t\tfastDiff( '12a', '12xyza' );\n *\t\t// [ { index: 2, type: 'insert', values: [ 'x', 'y', 'z' ] } ]\n *\n *\t\tfastDiff( '12a', '12aa' );\n *\t\t// [ { index: 3, type: 'insert', values: [ 'a' ] } ]\n *\n *\t\tfastDiff( '12xyza', '12a' );\n *\t\t// [ { index: 2, type: 'delete', howMany: 3 } ]\n *\n *\t\tfastDiff( [ '1', '2', 'a', 'a' ], [ '1', '2', 'a' ] );\n *\t\t// [ { index: 3, type: 'delete', howMany: 1 } ]\n *\n *\t\tfastDiff( [ '1', '2', 'a', 'b', 'c', '3' ], [ '2', 'a', 'b' ] );\n *\t\t// [ { index: 0, type: 'insert', values: [ '2', 'a', 'b' ] }, { index: 3, type: 'delete', howMany: 6 } ]\n *\n * Passed arrays can contain any type of data, however to compare them correctly custom comparator function\n * should be passed as a third parameter:\n *\n *\t\tfastDiff( [ { value: 1 }, { value: 2 } ], [ { value: 1 }, { value: 3 } ], ( a, b ) => {\n *\t\t\treturn a.value === b.value;\n *\t\t} );\n *\t\t// [ { index: 1, type: 'insert', values: [ { value: 3 } ] }, { index: 2, type: 'delete', howMany: 1 } ]\n *\n * The resulted set of changes can be applied to the input in order to transform it into the output, for example:\n *\n *\t\tlet input = '12abc3';\n *\t\tconst output = '2ab';\n *\t\tconst changes = fastDiff( input, output );\n *\n *\t\tchanges.forEach( change => {\n *\t\t\tif ( change.type == 'insert' ) {\n *\t\t\t\tinput = input.substring( 0, change.index ) + change.values.join( '' ) + input.substring( change.index );\n *\t\t\t} else if ( change.type == 'delete' ) {\n *\t\t\t\tinput = input.substring( 0, change.index ) + input.substring( change.index + change.howMany );\n *\t\t\t}\n *\t\t} );\n *\n *\t\t// input equals output now\n *\n * or in case of arrays:\n *\n *\t\tlet input = [ '1', '2', 'a', 'b', 'c', '3' ];\n *\t\tconst output = [ '2', 'a', 'b' ];\n *\t\tconst changes = fastDiff( input, output );\n *\n *\t\tchanges.forEach( change => {\n *\t\t\tif ( change.type == 'insert' ) {\n *\t\t\t\tinput = input.slice( 0, change.index ).concat( change.values, input.slice( change.index ) );\n *\t\t\t} else if ( change.type == 'delete' ) {\n *\t\t\t\tinput = input.slice( 0, change.index ).concat( input.slice( change.index + change.howMany ) );\n *\t\t\t}\n *\t\t} );\n *\n *\t\t// input equals output now\n *\n * By passing `true` as the fourth parameter (`atomicChanges`) the output of this function will become compatible with\n * the {@link module:utils/diff~diff `diff()`} function:\n *\n *\t\tfastDiff( '12a', '12xyza' );\n *\t\t// [ 'equal', 'equal', 'insert', 'insert', 'insert', 'equal' ]\n *\n * The default output format of this function is compatible with the output format of\n * {@link module:utils/difftochanges~diffToChanges `diffToChanges()`}. The `diffToChanges()` input format is, in turn,\n * compatible with the output of {@link module:utils/diff~diff `diff()`}:\n *\n *\t\tconst a = '1234';\n *\t\tconst b = '12xyz34';\n *\n *\t\t// Both calls will return the same results (grouped changes format).\n *\t\tfastDiff( a, b );\n *\t\tdiffToChanges( diff( a, b ) );\n *\n *\t\t// Again, both calls will return the same results (atomic changes format).\n *\t\tfastDiff( a, b, null, true );\n *\t\tdiff( a, b );\n *\n *\n * @param {Array|String} a Input array or string.\n * @param {Array|String} b Input array or string.\n * @param {Function} [cmp] Optional function used to compare array values, by default `===` (strict equal operator) is used.\n * @param {Boolean} [atomicChanges=false] Whether an array of `inset|delete|equal` operations should\n * be returned instead of changes set. This makes this function compatible with {@link module:utils/diff~diff `diff()`}.\n * @returns {Array} Array of changes.\n */\nexport default function fastDiff( a, b, cmp, atomicChanges = false ) {\n\t// Set the comparator function.\n\tcmp = cmp || function( a, b ) {\n\t\treturn a === b;\n\t};\n\n\t// Convert the string (or any array-like object - eg. NodeList) to an array by using the slice() method because,\n\t// unlike Array.from(), it returns array of UTF-16 code units instead of the code points of a string.\n\t// One code point might be a surrogate pair of two code units. All text offsets are expected to be in code units.\n\t// See ckeditor/ckeditor5#3147.\n\t//\n\t// We need to make sure here that fastDiff() works identical to diff().\n\tif ( !Array.isArray( a ) ) {\n\t\ta = Array.prototype.slice.call( a );\n\t}\n\n\tif ( !Array.isArray( b ) ) {\n\t\tb = Array.prototype.slice.call( b );\n\t}\n\n\t// Find first and last change.\n\tconst changeIndexes = findChangeBoundaryIndexes( a, b, cmp );\n\n\t// Transform into changes array.\n\treturn atomicChanges ? changeIndexesToAtomicChanges( changeIndexes, b.length ) : changeIndexesToChanges( b, changeIndexes );\n}\n\n// Finds position of the first and last change in the given arrays. For example:\n//\n//\t\tconst indexes = findChangeBoundaryIndexes( [ '1', '2', '3', '4' ], [ '1', '3', '4', '2', '4' ] );\n//\t\tconsole.log( indexes ); // { firstIndex: 1, lastIndexOld: 3, lastIndexNew: 4 }\n//\n// The above indexes means that in the first array the modified part is `1[23]4` and in the second array it is `1[342]4`.\n// Based on such indexes, array with `insert`/`delete` operations which allows transforming first value into the second one\n// can be generated.\n//\n// @param {Array} arr1\n// @param {Array} arr2\n// @param {Function} cmp Comparator function.\n// @returns {Object}\n// @returns {Number} return.firstIndex Index of the first change in both values (always the same for both).\n// @returns {Number} result.lastIndexOld Index of the last common value in `arr1`.\n// @returns {Number} result.lastIndexNew Index of the last common value in `arr2`.\nfunction findChangeBoundaryIndexes( arr1, arr2, cmp ) {\n\t// Find the first difference between passed values.\n\tconst firstIndex = findFirstDifferenceIndex( arr1, arr2, cmp );\n\n\t// If arrays are equal return -1 indexes object.\n\tif ( firstIndex === -1 ) {\n\t\treturn { firstIndex: -1, lastIndexOld: -1, lastIndexNew: -1 };\n\t}\n\n\t// Remove the common part of each value and reverse them to make it simpler to find the last difference between them.\n\tconst oldArrayReversed = cutAndReverse( arr1, firstIndex );\n\tconst newArrayReversed = cutAndReverse( arr2, firstIndex );\n\n\t// Find the first difference between reversed values.\n\t// It should be treated as \"how many elements from the end the last difference occurred\".\n\t//\n\t// For example:\n\t//\n\t// \t\t\t\tinitial\t->\tafter cut\t-> reversed:\n\t// oldValue:\t'321ba'\t->\t'21ba'\t\t-> 'ab12'\n\t// newValue:\t'31xba'\t->\t'1xba'\t\t-> 'abx1'\n\t// lastIndex:\t\t\t\t\t\t\t-> 2\n\t//\n\t// So the last change occurred two characters from the end of the arrays.\n\tconst lastIndex = findFirstDifferenceIndex( oldArrayReversed, newArrayReversed, cmp );\n\n\t// Use `lastIndex` to calculate proper offset, starting from the beginning (`lastIndex` kind of starts from the end).\n\tconst lastIndexOld = arr1.length - lastIndex;\n\tconst lastIndexNew = arr2.length - lastIndex;\n\n\treturn { firstIndex, lastIndexOld, lastIndexNew };\n}\n\n// Returns a first index on which given arrays differ. If both arrays are the same, -1 is returned.\n//\n// @param {Array} arr1\n// @param {Array} arr2\n// @param {Function} cmp Comparator function.\n// @returns {Number}\nfunction findFirstDifferenceIndex( arr1, arr2, cmp ) {\n\tfor ( let i = 0; i < Math.max( arr1.length, arr2.length ); i++ ) {\n\t\tif ( arr1[ i ] === undefined || arr2[ i ] === undefined || !cmp( arr1[ i ], arr2[ i ] ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1; // Return -1 if arrays are equal.\n}\n\n// Returns a copy of the given array with `howMany` elements removed starting from the beginning and in reversed order.\n//\n// @param {Array} arr Array to be processed.\n// @param {Number} howMany How many elements from array beginning to remove.\n// @returns {Array} Shortened and reversed array.\nfunction cutAndReverse( arr, howMany ) {\n\treturn arr.slice( howMany ).reverse();\n}\n\n// Generates changes array based on change indexes from `findChangeBoundaryIndexes` function. This function will\n// generate array with 0 (no changes), 1 (deletion or insertion) or 2 records (insertion and deletion).\n//\n// @param {Array} newArray New array for which change indexes were calculated.\n// @param {Object} changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n// @returns {Array.} Array of changes compatible with {@link module:utils/difftochanges~diffToChanges} format.\nfunction changeIndexesToChanges( newArray, changeIndexes ) {\n\tconst result = [];\n\tconst { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n\n\t// Order operations as 'insert', 'delete' array to keep compatibility with {@link module:utils/difftochanges~diffToChanges}\n\t// in most cases. However, 'diffToChanges' does not stick to any order so in some cases\n\t// (for example replacing '12345' with 'abcd') it will generate 'delete', 'insert' order.\n\tif ( lastIndexNew - firstIndex > 0 ) {\n\t\tresult.push( {\n\t\t\tindex: firstIndex,\n\t\t\ttype: 'insert',\n\t\t\tvalues: newArray.slice( firstIndex, lastIndexNew )\n\t\t} );\n\t}\n\n\tif ( lastIndexOld - firstIndex > 0 ) {\n\t\tresult.push( {\n\t\t\tindex: firstIndex + ( lastIndexNew - firstIndex ), // Increase index of what was inserted.\n\t\t\ttype: 'delete',\n\t\t\thowMany: lastIndexOld - firstIndex\n\t\t} );\n\t}\n\n\treturn result;\n}\n\n// Generates array with set `equal|insert|delete` operations based on change indexes from `findChangeBoundaryIndexes` function.\n//\n// @param {Object} changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n// @param {Number} newLength Length of the new array on which `findChangeBoundaryIndexes` calculated change indexes.\n// @returns {Array.} Array of changes compatible with {@link module:utils/diff~diff} format.\nfunction changeIndexesToAtomicChanges( changeIndexes, newLength ) {\n\tconst { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n\n\t// No changes.\n\tif ( firstIndex === -1 ) {\n\t\treturn Array( newLength ).fill( 'equal' );\n\t}\n\n\tlet result = [];\n\tif ( firstIndex > 0 ) {\n\t\tresult = result.concat( Array( firstIndex ).fill( 'equal' ) );\n\t}\n\n\tif ( lastIndexNew - firstIndex > 0 ) {\n\t\tresult = result.concat( Array( lastIndexNew - firstIndex ).fill( 'insert' ) );\n\t}\n\n\tif ( lastIndexOld - firstIndex > 0 ) {\n\t\tresult = result.concat( Array( lastIndexOld - firstIndex ).fill( 'delete' ) );\n\t}\n\n\tif ( lastIndexNew < newLength ) {\n\t\tresult = result.concat( Array( newLength - lastIndexNew ).fill( 'equal' ) );\n\t}\n\n\treturn result;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/diff\n */\n\nimport fastDiff from '../src/fastdiff';\n\n// The following code is based on the \"O(NP) Sequence Comparison Algorithm\"\n// by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n\n/**\n * Calculates the difference between two arrays or strings producing an array containing a list of changes\n * necessary to transform input into output.\n *\n *\t\tdiff( 'aba', 'acca' ); // [ 'equal', 'insert', 'insert', 'delete', 'equal' ]\n *\n * This function is based on the \"O(NP) Sequence Comparison Algorithm\" by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n * Unfortunately, while it gives the most precise results, its to complex for longer strings/arrow (above 200 items).\n * Therefore, `diff()` automatically switches to {@link module:utils/fastdiff~fastDiff `fastDiff()`} when detecting\n * such a scenario. The return formats of both functions are identical.\n *\n * @param {Array|String} a Input array or string.\n * @param {Array|String} b Output array or string.\n * @param {Function} [cmp] Optional function used to compare array values, by default === is used.\n * @returns {Array} Array of changes.\n */\nexport default function diff( a, b, cmp ) {\n\t// Set the comparator function.\n\tcmp = cmp || function( a, b ) {\n\t\treturn a === b;\n\t};\n\n\tconst aLength = a.length;\n\tconst bLength = b.length;\n\n\t// Perform `fastDiff` for longer strings/arrays (see #269).\n\tif ( aLength > 200 || bLength > 200 || aLength + bLength > 300 ) {\n\t\treturn diff.fastDiff( a, b, cmp, true );\n\t}\n\n\t// Temporary action type statics.\n\tlet _insert, _delete;\n\n\t// Swapped the arrays to use the shorter one as the first one.\n\tif ( bLength < aLength ) {\n\t\tconst tmp = a;\n\n\t\ta = b;\n\t\tb = tmp;\n\n\t\t// We swap the action types as well.\n\t\t_insert = 'delete';\n\t\t_delete = 'insert';\n\t} else {\n\t\t_insert = 'insert';\n\t\t_delete = 'delete';\n\t}\n\n\tconst m = a.length;\n\tconst n = b.length;\n\tconst delta = n - m;\n\n\t// Edit scripts, for each diagonal.\n\tconst es = {};\n\t// Furthest points, the furthest y we can get on each diagonal.\n\tconst fp = {};\n\n\tfunction snake( k ) {\n\t\t// We use -1 as an alternative below to handle initial values ( instead of filling the fp with -1 first ).\n\t\t// Furthest points (y) on the diagonal below k.\n\t\tconst y1 = ( fp[ k - 1 ] !== undefined ? fp[ k - 1 ] : -1 ) + 1;\n\t\t// Furthest points (y) on the diagonal above k.\n\t\tconst y2 = fp[ k + 1 ] !== undefined ? fp[ k + 1 ] : -1;\n\t\t// The way we should go to get further.\n\t\tconst dir = y1 > y2 ? -1 : 1;\n\n\t\t// Clone previous changes array (if any).\n\t\tif ( es[ k + dir ] ) {\n\t\t\tes[ k ] = es[ k + dir ].slice( 0 );\n\t\t}\n\n\t\t// Create changes array.\n\t\tif ( !es[ k ] ) {\n\t\t\tes[ k ] = [];\n\t\t}\n\n\t\t// Push the action.\n\t\tes[ k ].push( y1 > y2 ? _insert : _delete );\n\n\t\t// Set the beginning coordinates.\n\t\tlet y = Math.max( y1, y2 );\n\t\tlet x = y - k;\n\n\t\t// Traverse the diagonal as long as the values match.\n\t\twhile ( x < m && y < n && cmp( a[ x ], b[ y ] ) ) {\n\t\t\tx++;\n\t\t\ty++;\n\t\t\t// Push no change action.\n\t\t\tes[ k ].push( 'equal' );\n\t\t}\n\n\t\treturn y;\n\t}\n\n\tlet p = 0;\n\tlet k;\n\n\t// Traverse the graph until we reach the end of the longer string.\n\tdo {\n\t\t// Updates furthest points and edit scripts for diagonals below delta.\n\t\tfor ( k = -p; k < delta; k++ ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest points and edit scripts for diagonals above delta.\n\t\tfor ( k = delta + p; k > delta; k-- ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest point and edit script for the delta diagonal.\n\t\t// note that the delta diagonal is the one which goes through the sink (m, n).\n\t\tfp[ delta ] = snake( delta );\n\n\t\tp++;\n\t} while ( fp[ delta ] !== n );\n\n\t// Return the final list of edit changes.\n\t// We remove the first item that represents the action for the injected nulls.\n\treturn es[ delta ].slice( 1 );\n}\n\n// Store the API in static property to easily overwrite it in tests.\n// Too bad dependency injection does not work in Webpack + ES 6 (const) + Babel.\ndiff.fastDiff = fastDiff;\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/insertat\n */\n\n/**\n * Inserts node to the parent at given index.\n *\n * @param {Element} parentElement Parent element.\n * @param {Number} index Insertions index.\n * @param {Node} nodeToInsert Node to insert.\n */\nexport default function insertAt( parentElement, index, nodeToInsert ) {\n\tparentElement.insertBefore( nodeToInsert, parentElement.childNodes[ index ] || null );\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/remove\n */\n\n/**\n * Removes given node from parent.\n *\n * @param {Node} node Node to remove.\n */\nexport default function remove( node ) {\n\tconst parent = node.parentNode;\n\n\tif ( parent ) {\n\t\tparent.removeChild( node );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isnode\n */\n\n/**\n * Checks if the object is a native DOM Node.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isNode( obj ) {\n\tif ( obj ) {\n\t\tif ( obj.defaultView ) {\n\t\t\treturn obj instanceof obj.defaultView.Document;\n\t\t} else if ( obj.ownerDocument && obj.ownerDocument.defaultView ) {\n\t\t\treturn obj instanceof obj.ownerDocument.defaultView.Node;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals Node */\n\n/**\n * @module engine/view/renderer\n */\n\nimport ViewText from './text';\nimport ViewPosition from './position';\nimport { INLINE_FILLER, INLINE_FILLER_LENGTH, startsWithFiller, isInlineFiller } from './filler';\n\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\nimport diff from '@ckeditor/ckeditor5-utils/src/diff';\nimport insertAt from '@ckeditor/ckeditor5-utils/src/dom/insertat';\nimport remove from '@ckeditor/ckeditor5-utils/src/dom/remove';\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport isText from '@ckeditor/ckeditor5-utils/src/dom/istext';\nimport isNode from '@ckeditor/ckeditor5-utils/src/dom/isnode';\nimport fastDiff from '@ckeditor/ckeditor5-utils/src/fastdiff';\nimport env from '@ckeditor/ckeditor5-utils/src/env';\n\n/**\n * Renderer is responsible for updating the DOM structure and the DOM selection based on\n * the {@link module:engine/view/renderer~Renderer#markToSync information about updated view nodes}.\n * In other words, it renders the view to the DOM.\n *\n * Its main responsibility is to make only the necessary, minimal changes to the DOM. However, unlike in many\n * virtual DOM implementations, the primary reason for doing minimal changes is not the performance but ensuring\n * that native editing features such as text composition, autocompletion, spell checking, selection's x-index are\n * affected as little as possible.\n *\n * Renderer uses {@link module:engine/view/domconverter~DomConverter} to transform view nodes and positions\n * to and from the DOM.\n */\nexport default class Renderer {\n\t/**\n\t * Creates a renderer instance.\n\t *\n\t * @param {module:engine/view/domconverter~DomConverter} domConverter Converter instance.\n\t * @param {module:engine/view/documentselection~DocumentSelection} selection View selection.\n\t */\n\tconstructor( domConverter, selection ) {\n\t\t/**\n\t\t * Set of DOM Documents instances.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Set.}\n\t\t */\n\t\tthis.domDocuments = new Set();\n\n\t\t/**\n\t\t * Converter instance.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/domconverter~DomConverter}\n\t\t */\n\t\tthis.domConverter = domConverter;\n\n\t\t/**\n\t\t * Set of nodes which attributes changed and may need to be rendered.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Set.}\n\t\t */\n\t\tthis.markedAttributes = new Set();\n\n\t\t/**\n\t\t * Set of elements which child lists changed and may need to be rendered.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Set.}\n\t\t */\n\t\tthis.markedChildren = new Set();\n\n\t\t/**\n\t\t * Set of text nodes which text data changed and may need to be rendered.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Set.}\n\t\t */\n\t\tthis.markedTexts = new Set();\n\n\t\t/**\n\t\t * View selection. Renderer updates DOM selection based on the view selection.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/documentselection~DocumentSelection}\n\t\t */\n\t\tthis.selection = selection;\n\n\t\t/**\n\t\t * Indicates if the view document is focused and selection can be rendered. Selection will not be rendered if\n\t\t * this is set to `false`.\n\t\t *\n\t\t * @member {Boolean}\n\t\t */\n\t\tthis.isFocused = false;\n\n\t\t/**\n\t\t * The text node in which the inline filler was rendered.\n\t\t *\n\t\t * @private\n\t\t * @member {Text}\n\t\t */\n\t\tthis._inlineFiller = null;\n\n\t\t/**\n\t\t * DOM element containing fake selection.\n\t\t *\n\t\t * @private\n\t\t * @type {null|HTMLElement}\n\t\t */\n\t\tthis._fakeSelectionContainer = null;\n\t}\n\n\t/**\n\t * Marks a view node to be updated in the DOM by {@link #render `render()`}.\n\t *\n\t * Note that only view nodes whose parents have corresponding DOM elements need to be marked to be synchronized.\n\t *\n\t * @see #markedAttributes\n\t * @see #markedChildren\n\t * @see #markedTexts\n\t *\n\t * @param {module:engine/view/document~ChangeType} type Type of the change.\n\t * @param {module:engine/view/node~Node} node Node to be marked.\n\t */\n\tmarkToSync( type, node ) {\n\t\tif ( type === 'text' ) {\n\t\t\tif ( this.domConverter.mapViewToDom( node.parent ) ) {\n\t\t\t\tthis.markedTexts.add( node );\n\t\t\t}\n\t\t} else {\n\t\t\t// If the node has no DOM element it is not rendered yet,\n\t\t\t// its children/attributes do not need to be marked to be sync.\n\t\t\tif ( !this.domConverter.mapViewToDom( node ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( type === 'attributes' ) {\n\t\t\t\tthis.markedAttributes.add( node );\n\t\t\t} else if ( type === 'children' ) {\n\t\t\t\tthis.markedChildren.add( node );\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Unknown type passed to Renderer.markToSync.\n\t\t\t\t *\n\t\t\t\t * @error view-renderer-unknown-type\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'view-renderer-unknown-type', this );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Renders all buffered changes ({@link #markedAttributes}, {@link #markedChildren} and {@link #markedTexts}) and\n\t * the current view selection (if needed) to the DOM by applying a minimal set of changes to it.\n\t *\n\t * Renderer tries not to break the text composition (e.g. IME) and x-index of the selection,\n\t * so it does as little as it is needed to update the DOM.\n\t *\n\t * Renderer also handles {@link module:engine/view/filler fillers}. Especially, it checks if the inline filler is needed\n\t * at the selection position and adds or removes it. To prevent breaking text composition inline filler will not be\n\t * removed as long as the selection is in the text node which needed it at first.\n\t */\n\trender() {\n\t\tlet inlineFillerPosition;\n\n\t\t// Refresh mappings.\n\t\tfor ( const element of this.markedChildren ) {\n\t\t\tthis._updateChildrenMappings( element );\n\t\t}\n\n\t\t// There was inline filler rendered in the DOM but it's not\n\t\t// at the selection position any more, so we can remove it\n\t\t// (cause even if it's needed, it must be placed in another location).\n\t\tif ( this._inlineFiller && !this._isSelectionInInlineFiller() ) {\n\t\t\tthis._removeInlineFiller();\n\t\t}\n\n\t\t// If we've got the filler, let's try to guess its position in the view.\n\t\tif ( this._inlineFiller ) {\n\t\t\tinlineFillerPosition = this._getInlineFillerPosition();\n\t\t}\n\t\t// Otherwise, if it's needed, create it at the selection position.\n\t\telse if ( this._needsInlineFillerAtSelection() ) {\n\t\t\tinlineFillerPosition = this.selection.getFirstPosition();\n\n\t\t\t// Do not use `markToSync` so it will be added even if the parent is already added.\n\t\t\tthis.markedChildren.add( inlineFillerPosition.parent );\n\t\t}\n\n\t\tfor ( const element of this.markedAttributes ) {\n\t\t\tthis._updateAttrs( element );\n\t\t}\n\n\t\tfor ( const element of this.markedChildren ) {\n\t\t\tthis._updateChildren( element, { inlineFillerPosition } );\n\t\t}\n\n\t\tfor ( const node of this.markedTexts ) {\n\t\t\tif ( !this.markedChildren.has( node.parent ) && this.domConverter.mapViewToDom( node.parent ) ) {\n\t\t\t\tthis._updateText( node, { inlineFillerPosition } );\n\t\t\t}\n\t\t}\n\n\t\t// Check whether the inline filler is required and where it really is in the DOM.\n\t\t// At this point in most cases it will be in the DOM, but there are exceptions.\n\t\t// For example, if the inline filler was deep in the created DOM structure, it will not be created.\n\t\t// Similarly, if it was removed at the beginning of this function and then neither text nor children were updated,\n\t\t// it will not be present.\n\t\t// Fix those and similar scenarios.\n\t\tif ( inlineFillerPosition ) {\n\t\t\tconst fillerDomPosition = this.domConverter.viewPositionToDom( inlineFillerPosition );\n\t\t\tconst domDocument = fillerDomPosition.parent.ownerDocument;\n\n\t\t\tif ( !startsWithFiller( fillerDomPosition.parent ) ) {\n\t\t\t\t// Filler has not been created at filler position. Create it now.\n\t\t\t\tthis._inlineFiller = addInlineFiller( domDocument, fillerDomPosition.parent, fillerDomPosition.offset );\n\t\t\t} else {\n\t\t\t\t// Filler has been found, save it.\n\t\t\t\tthis._inlineFiller = fillerDomPosition.parent;\n\t\t\t}\n\t\t} else {\n\t\t\t// There is no filler needed.\n\t\t\tthis._inlineFiller = null;\n\t\t}\n\n\t\tthis._updateSelection();\n\t\tthis._updateFocus();\n\n\t\tthis.markedTexts.clear();\n\t\tthis.markedAttributes.clear();\n\t\tthis.markedChildren.clear();\n\t}\n\n\t/**\n\t * Updates mappings of view element's children.\n\t *\n\t * Children that were replaced in the view structure by similar elements (same tag name) are treated as 'replaced'.\n\t * This means that their mappings can be updated so the new view elements are mapped to the existing DOM elements.\n\t * Thanks to that these elements do not need to be re-rendered completely.\n\t *\n\t * @private\n\t * @param {module:engine/view/node~Node} viewElement The view element whose children mappings will be updated.\n\t */\n\t_updateChildrenMappings( viewElement ) {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM and there is no need to process it.\n\t\t\treturn;\n\t\t}\n\n\t\tconst actualDomChildren = this.domConverter.mapViewToDom( viewElement ).childNodes;\n\t\tconst expectedDomChildren = Array.from(\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, domElement.ownerDocument, { withChildren: false } )\n\t\t);\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\n\t\tconst actions = this._findReplaceActions( diff, actualDomChildren, expectedDomChildren );\n\n\t\tif ( actions.indexOf( 'replace' ) !== -1 ) {\n\t\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\n\n\t\t\tfor ( const action of actions ) {\n\t\t\t\tif ( action === 'replace' ) {\n\t\t\t\t\tconst insertIndex = counter.equal + counter.insert;\n\t\t\t\t\tconst deleteIndex = counter.equal + counter.delete;\n\t\t\t\t\tconst viewChild = viewElement.getChild( insertIndex );\n\n\t\t\t\t\t// UIElement and RawElement are special cases. Their children are not stored in a view (#799)\n\t\t\t\t\t// so we cannot use them with replacing flow (since they use view children during rendering\n\t\t\t\t\t// which will always result in rendering empty elements).\n\t\t\t\t\tif ( viewChild && !( viewChild.is( 'uiElement' ) || viewChild.is( 'rawElement' ) ) ) {\n\t\t\t\t\t\tthis._updateElementMappings( viewChild, actualDomChildren[ deleteIndex ] );\n\t\t\t\t\t}\n\n\t\t\t\t\tremove( expectedDomChildren[ insertIndex ] );\n\t\t\t\t\tcounter.equal++;\n\t\t\t\t} else {\n\t\t\t\t\tcounter[ action ]++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Updates mappings of a given view element.\n\t *\n\t * @private\n\t * @param {module:engine/view/node~Node} viewElement The view element whose mappings will be updated.\n\t * @param {Node} domElement The DOM element representing the given view element.\n\t */\n\t_updateElementMappings( viewElement, domElement ) {\n\t\t// Remap 'DomConverter' bindings.\n\t\tthis.domConverter.unbindDomElement( domElement );\n\t\tthis.domConverter.bindElements( domElement, viewElement );\n\n\t\t// View element may have children which needs to be updated, but are not marked, mark them to update.\n\t\tthis.markedChildren.add( viewElement );\n\n\t\t// Because we replace new view element mapping with the existing one, the corresponding DOM element\n\t\t// will not be rerendered. The new view element may have different attributes than the previous one.\n\t\t// Since its corresponding DOM element will not be rerendered, new attributes will not be added\n\t\t// to the DOM, so we need to mark it here to make sure its attributes gets updated. See #1427 for more\n\t\t// detailed case study.\n\t\t// Also there are cases where replaced element is removed from the view structure and then has\n\t\t// its attributes changed or removed. In such cases the element will not be present in `markedAttributes`\n\t\t// and also may be the same (`element.isSimilar()`) as the reused element not having its attributes updated.\n\t\t// To prevent such situations we always mark reused element to have its attributes rerenderd (#1560).\n\t\tthis.markedAttributes.add( viewElement );\n\t}\n\n\t/**\n\t * Gets the position of the inline filler based on the current selection.\n\t * Here, we assume that we know that the filler is needed and\n\t * {@link #_isSelectionInInlineFiller is at the selection position}, and, since it is needed,\n\t * it is somewhere at the selection position.\n\t *\n\t * Note: The filler position cannot be restored based on the filler's DOM text node, because\n\t * when this method is called (before rendering), the bindings will often be broken. View-to-DOM\n\t * bindings are only dependable after rendering.\n\t *\n\t * @private\n\t * @returns {module:engine/view/position~Position}\n\t */\n\t_getInlineFillerPosition() {\n\t\tconst firstPos = this.selection.getFirstPosition();\n\n\t\tif ( firstPos.parent.is( '$text' ) ) {\n\t\t\treturn ViewPosition._createBefore( this.selection.getFirstPosition().parent );\n\t\t} else {\n\t\t\treturn firstPos;\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` if the selection has not left the inline filler's text node.\n\t * If it is `true`, it means that the filler had been added for a reason and the selection did not\n\t * leave the filler's text node. For example, the user can be in the middle of a composition so it should not be touched.\n\t *\n\t * @private\n\t * @returns {Boolean} `true` if the inline filler and selection are in the same place.\n\t */\n\t_isSelectionInInlineFiller() {\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Note, we can't check if selection's position equals position of the\n\t\t// this._inlineFiller node, because of #663. We may not be able to calculate\n\t\t// the filler's position in the view at this stage.\n\t\t// Instead, we check it the other way – whether selection is anchored in\n\t\t// that text node or next to it.\n\n\t\t// Possible options are:\n\t\t// \"FILLER{}\"\n\t\t// \"FILLERadded-text{}\"\n\t\tconst selectionPosition = this.selection.getFirstPosition();\n\t\tconst position = this.domConverter.viewPositionToDom( selectionPosition );\n\n\t\tif ( position && isText( position.parent ) && startsWithFiller( position.parent ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Removes the inline filler.\n\t *\n\t * @private\n\t */\n\t_removeInlineFiller() {\n\t\tconst domFillerNode = this._inlineFiller;\n\n\t\t// Something weird happened and the stored node doesn't contain the filler's text.\n\t\tif ( !startsWithFiller( domFillerNode ) ) {\n\t\t\t/**\n\t\t\t * The inline filler node was lost. Most likely, something overwrote the filler text node\n\t\t\t * in the DOM.\n\t\t\t *\n\t\t\t * @error view-renderer-filler-was-lost\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-renderer-filler-was-lost', this );\n\t\t}\n\n\t\tif ( isInlineFiller( domFillerNode ) ) {\n\t\t\tdomFillerNode.parentNode.removeChild( domFillerNode );\n\t\t} else {\n\t\t\tdomFillerNode.data = domFillerNode.data.substr( INLINE_FILLER_LENGTH );\n\t\t}\n\n\t\tthis._inlineFiller = null;\n\t}\n\n\t/**\n\t * Checks if the inline {@link module:engine/view/filler filler} should be added.\n\t *\n\t * @private\n\t * @returns {Boolean} `true` if the inline filler should be added.\n\t */\n\t_needsInlineFillerAtSelection() {\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst selectionPosition = this.selection.getFirstPosition();\n\t\tconst selectionParent = selectionPosition.parent;\n\t\tconst selectionOffset = selectionPosition.offset;\n\n\t\t// If there is no DOM root we do not care about fillers.\n\t\tif ( !this.domConverter.mapViewToDom( selectionParent.root ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !( selectionParent.is( 'element' ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Prevent adding inline filler inside elements with contenteditable=false.\n\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/1170\n\t\tif ( !isEditable( selectionParent ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We have block filler, we do not need inline one.\n\t\tif ( selectionOffset === selectionParent.getFillerOffset() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst nodeBefore = selectionPosition.nodeBefore;\n\t\tconst nodeAfter = selectionPosition.nodeAfter;\n\n\t\tif ( nodeBefore instanceof ViewText || nodeAfter instanceof ViewText ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if text needs to be updated and possibly updates it.\n\t *\n\t * @private\n\t * @param {module:engine/view/text~Text} viewText View text to update.\n\t * @param {Object} options\n\t * @param {module:engine/view/position~Position} options.inlineFillerPosition The position where the inline\n\t * filler should be rendered.\n\t */\n\t_updateText( viewText, options ) {\n\t\tconst domText = this.domConverter.findCorrespondingDomText( viewText );\n\t\tconst newDomText = this.domConverter.viewToDom( viewText, domText.ownerDocument );\n\n\t\tconst actualText = domText.data;\n\t\tlet expectedText = newDomText.data;\n\n\t\tconst filler = options.inlineFillerPosition;\n\n\t\tif ( filler && filler.parent == viewText.parent && filler.offset == viewText.index ) {\n\t\t\texpectedText = INLINE_FILLER + expectedText;\n\t\t}\n\n\t\tif ( actualText != expectedText ) {\n\t\t\tconst actions = fastDiff( actualText, expectedText );\n\n\t\t\tfor ( const action of actions ) {\n\t\t\t\tif ( action.type === 'insert' ) {\n\t\t\t\t\tdomText.insertData( action.index, action.values.join( '' ) );\n\t\t\t\t} else { // 'delete'\n\t\t\t\t\tdomText.deleteData( action.index, action.howMany );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if attribute list needs to be updated and possibly updates it.\n\t *\n\t * @private\n\t * @param {module:engine/view/element~Element} viewElement The view element to update.\n\t */\n\t_updateAttrs( viewElement ) {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that 'viewElement' is outdated as its mapping was updated\n\t\t\t// in 'this._updateChildrenMappings()'. There is no need to process it as new view element which\n\t\t\t// replaced old 'viewElement' mapping was also added to 'this.markedAttributes'\n\t\t\t// in 'this._updateChildrenMappings()' so it will be processed separately.\n\t\t\treturn;\n\t\t}\n\n\t\tconst domAttrKeys = Array.from( domElement.attributes ).map( attr => attr.name );\n\t\tconst viewAttrKeys = viewElement.getAttributeKeys();\n\n\t\t// Add or overwrite attributes.\n\t\tfor ( const key of viewAttrKeys ) {\n\t\t\tdomElement.setAttribute( key, viewElement.getAttribute( key ) );\n\t\t}\n\n\t\t// Remove from DOM attributes which do not exists in the view.\n\t\tfor ( const key of domAttrKeys ) {\n\t\t\tif ( !viewElement.hasAttribute( key ) ) {\n\t\t\t\tdomElement.removeAttribute( key );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if elements child list needs to be updated and possibly updates it.\n\t *\n\t * @private\n\t * @param {module:engine/view/element~Element} viewElement View element to update.\n\t * @param {Object} options\n\t * @param {module:engine/view/position~Position} options.inlineFillerPosition The position where the inline\n\t * filler should be rendered.\n\t */\n\t_updateChildren( viewElement, options ) {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM.\n\t\t\t// There is no need to process it. It will be processed when re-inserted.\n\t\t\treturn;\n\t\t}\n\n\t\tconst inlineFillerPosition = options.inlineFillerPosition;\n\t\tconst actualDomChildren = this.domConverter.mapViewToDom( viewElement ).childNodes;\n\t\tconst expectedDomChildren = Array.from(\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, domElement.ownerDocument, { bind: true, inlineFillerPosition } )\n\t\t);\n\n\t\t// Inline filler element has to be created as it is present in the DOM, but not in the view. It is required\n\t\t// during diffing so text nodes could be compared correctly and also during rendering to maintain\n\t\t// proper order and indexes while updating the DOM.\n\t\tif ( inlineFillerPosition && inlineFillerPosition.parent === viewElement ) {\n\t\t\taddInlineFiller( domElement.ownerDocument, expectedDomChildren, inlineFillerPosition.offset );\n\t\t}\n\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\n\n\t\tlet i = 0;\n\t\tconst nodesToUnbind = new Set();\n\n\t\t// Handle deletions first.\n\t\t// This is to prevent a situation where an element that already exists in `actualDomChildren` is inserted at a different\n\t\t// index in `actualDomChildren`. Since `actualDomChildren` is a `NodeList`, this works like move, not like an insert,\n\t\t// and it disrupts the whole algorithm. See https://github.com/ckeditor/ckeditor5/issues/6367.\n\t\t//\n\t\t// It doesn't matter in what order we remove or add nodes, as long as we remove and add correct nodes at correct indexes.\n\t\tfor ( const action of diff ) {\n\t\t\tif ( action === 'delete' ) {\n\t\t\t\tnodesToUnbind.add( actualDomChildren[ i ] );\n\t\t\t\tremove( actualDomChildren[ i ] );\n\t\t\t} else if ( action === 'equal' ) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\n\t\ti = 0;\n\n\t\tfor ( const action of diff ) {\n\t\t\tif ( action === 'insert' ) {\n\t\t\t\tinsertAt( domElement, i, expectedDomChildren[ i ] );\n\t\t\t\ti++;\n\t\t\t} else if ( action === 'equal' ) {\n\t\t\t\t// Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).\n\t\t\t\t// Do it here (not in the loop above) because only after insertions the `i` index is correct.\n\t\t\t\tthis._markDescendantTextToSync( this.domConverter.domToView( expectedDomChildren[ i ] ) );\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\n\t\t// Unbind removed nodes. When node does not have a parent it means that it was removed from DOM tree during\n\t\t// comparison with the expected DOM. We don't need to check child nodes, because if child node was reinserted,\n\t\t// it was moved to DOM tree out of the removed node.\n\t\tfor ( const node of nodesToUnbind ) {\n\t\t\tif ( !node.parentNode ) {\n\t\t\t\tthis.domConverter.unbindDomElement( node );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shorthand for diffing two arrays or node lists of DOM nodes.\n\t *\n\t * @private\n\t * @param {Array.|NodeList} actualDomChildren Actual DOM children\n\t * @param {Array.|NodeList} expectedDomChildren Expected DOM children.\n\t * @returns {Array.} The list of actions based on the {@link module:utils/diff~diff} function.\n\t */\n\t_diffNodeLists( actualDomChildren, expectedDomChildren ) {\n\t\tactualDomChildren = filterOutFakeSelectionContainer( actualDomChildren, this._fakeSelectionContainer );\n\n\t\treturn diff( actualDomChildren, expectedDomChildren, sameNodes.bind( null, this.domConverter ) );\n\t}\n\n\t/**\n\t * Finds DOM nodes that were replaced with the similar nodes (same tag name) in the view. All nodes are compared\n\t * within one `insert`/`delete` action group, for example:\n\t *\n\t * \t\tActual DOM:\t\t

    FooBarBazBax

    \n\t * \t\tExpected DOM:\t

    Bar123Baz456

    \n\t * \t\tInput actions:\t[ insert, insert, delete, delete, equal, insert, delete ]\n\t * \t\tOutput actions:\t[ insert, replace, delete, equal, replace ]\n\t *\n\t * @private\n\t * @param {Array.} actions Actions array which is a result of the {@link module:utils/diff~diff} function.\n\t * @param {Array.|NodeList} actualDom Actual DOM children\n\t * @param {Array.} expectedDom Expected DOM children.\n\t * @returns {Array.} Actions array modified with the `replace` actions.\n\t */\n\t_findReplaceActions( actions, actualDom, expectedDom ) {\n\t\t// If there is no both 'insert' and 'delete' actions, no need to check for replaced elements.\n\t\tif ( actions.indexOf( 'insert' ) === -1 || actions.indexOf( 'delete' ) === -1 ) {\n\t\t\treturn actions;\n\t\t}\n\n\t\tlet newActions = [];\n\t\tlet actualSlice = [];\n\t\tlet expectedSlice = [];\n\n\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\n\n\t\tfor ( const action of actions ) {\n\t\t\tif ( action === 'insert' ) {\n\t\t\t\texpectedSlice.push( expectedDom[ counter.equal + counter.insert ] );\n\t\t\t} else if ( action === 'delete' ) {\n\t\t\t\tactualSlice.push( actualDom[ counter.equal + counter.delete ] );\n\t\t\t} else { // equal\n\t\t\t\tnewActions = newActions.concat( diff( actualSlice, expectedSlice, areSimilar ).map( x => x === 'equal' ? 'replace' : x ) );\n\t\t\t\tnewActions.push( 'equal' );\n\t\t\t\t// Reset stored elements on 'equal'.\n\t\t\t\tactualSlice = [];\n\t\t\t\texpectedSlice = [];\n\t\t\t}\n\t\t\tcounter[ action ]++;\n\t\t}\n\n\t\treturn newActions.concat( diff( actualSlice, expectedSlice, areSimilar ).map( x => x === 'equal' ? 'replace' : x ) );\n\t}\n\n\t/**\n\t * Marks text nodes to be synchronized.\n\t *\n\t * If a text node is passed, it will be marked. If an element is passed, all descendant text nodes inside it will be marked.\n\t *\n\t * @private\n\t * @param {module:engine/view/node~Node} viewNode View node to sync.\n\t */\n\t_markDescendantTextToSync( viewNode ) {\n\t\tif ( !viewNode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( viewNode.is( '$text' ) ) {\n\t\t\tthis.markedTexts.add( viewNode );\n\t\t} else if ( viewNode.is( 'element' ) ) {\n\t\t\tfor ( const child of viewNode.getChildren() ) {\n\t\t\t\tthis._markDescendantTextToSync( child );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the selection needs to be updated and possibly updates it.\n\t *\n\t * @private\n\t */\n\t_updateSelection() {\n\t\t// If there is no selection - remove DOM and fake selections.\n\t\tif ( this.selection.rangeCount === 0 ) {\n\t\t\tthis._removeDomSelection();\n\t\t\tthis._removeFakeSelection();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst domRoot = this.domConverter.mapViewToDom( this.selection.editableElement );\n\n\t\t// Do nothing if there is no focus, or there is no DOM element corresponding to selection's editable element.\n\t\tif ( !this.isFocused || !domRoot ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Render selection.\n\t\tif ( this.selection.isFake ) {\n\t\t\tthis._updateFakeSelection( domRoot );\n\t\t} else {\n\t\t\tthis._removeFakeSelection();\n\t\t\tthis._updateDomSelection( domRoot );\n\t\t}\n\t}\n\n\t/**\n\t * Updates the fake selection.\n\t *\n\t * @private\n\t * @param {HTMLElement} domRoot A valid DOM root where the fake selection container should be added.\n\t */\n\t_updateFakeSelection( domRoot ) {\n\t\tconst domDocument = domRoot.ownerDocument;\n\n\t\tif ( !this._fakeSelectionContainer ) {\n\t\t\tthis._fakeSelectionContainer = createFakeSelectionContainer( domDocument );\n\t\t}\n\n\t\tconst container = this._fakeSelectionContainer;\n\n\t\t// Bind fake selection container with the current selection *position*.\n\t\tthis.domConverter.bindFakeSelection( container, this.selection );\n\n\t\tif ( !this._fakeSelectionNeedsUpdate( domRoot ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !container.parentElement || container.parentElement != domRoot ) {\n\t\t\tdomRoot.appendChild( container );\n\t\t}\n\n\t\tcontainer.textContent = this.selection.fakeSelectionLabel || '\\u00A0';\n\n\t\tconst domSelection = domDocument.getSelection();\n\t\tconst domRange = domDocument.createRange();\n\n\t\tdomSelection.removeAllRanges();\n\t\tdomRange.selectNodeContents( container );\n\t\tdomSelection.addRange( domRange );\n\t}\n\n\t/**\n\t * Updates the DOM selection.\n\t *\n\t * @private\n\t * @param {HTMLElement} domRoot A valid DOM root where the DOM selection should be rendered.\n\t */\n\t_updateDomSelection( domRoot ) {\n\t\tconst domSelection = domRoot.ownerDocument.defaultView.getSelection();\n\n\t\t// Let's check whether DOM selection needs updating at all.\n\t\tif ( !this._domSelectionNeedsUpdate( domSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Multi-range selection is not available in most browsers, and, at least in Chrome, trying to\n\t\t// set such selection, that is not continuous, throws an error. Because of that, we will just use anchor\n\t\t// and focus of view selection.\n\t\t// Since we are not supporting multi-range selection, we also do not need to check if proper editable is\n\t\t// selected. If there is any editable selected, it is okay (editable is taken from selection anchor).\n\t\tconst anchor = this.domConverter.viewPositionToDom( this.selection.anchor );\n\t\tconst focus = this.domConverter.viewPositionToDom( this.selection.focus );\n\n\t\t// Focus the new editing host.\n\t\t// Otherwise, FF may throw an error (https://github.com/ckeditor/ckeditor5/issues/721).\n\t\tdomRoot.focus();\n\n\t\tdomSelection.collapse( anchor.parent, anchor.offset );\n\t\tdomSelection.extend( focus.parent, focus.offset );\n\n\t\t// Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\n\t\tif ( env.isGecko ) {\n\t\t\tfixGeckoSelectionAfterBr( focus, domSelection );\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether a given DOM selection needs to be updated.\n\t *\n\t * @private\n\t * @param {Selection} domSelection The DOM selection to check.\n\t * @returns {Boolean}\n\t */\n\t_domSelectionNeedsUpdate( domSelection ) {\n\t\tif ( !this.domConverter.isDomSelectionCorrect( domSelection ) ) {\n\t\t\t// Current DOM selection is in incorrect position. We need to update it.\n\t\t\treturn true;\n\t\t}\n\n\t\tconst oldViewSelection = domSelection && this.domConverter.domSelectionToView( domSelection );\n\n\t\tif ( oldViewSelection && this.selection.isEqual( oldViewSelection ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If selection is not collapsed, it does not need to be updated if it is similar.\n\t\tif ( !this.selection.isCollapsed && this.selection.isSimilar( oldViewSelection ) ) {\n\t\t\t// Selection did not changed and is correct, do not update.\n\t\t\treturn false;\n\t\t}\n\n\t\t// Selections are not similar.\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks whether the fake selection needs to be updated.\n\t *\n\t * @private\n\t * @param {HTMLElement} domRoot A valid DOM root where a new fake selection container should be added.\n\t * @returns {Boolean}\n\t */\n\t_fakeSelectionNeedsUpdate( domRoot ) {\n\t\tconst container = this._fakeSelectionContainer;\n\t\tconst domSelection = domRoot.ownerDocument.getSelection();\n\n\t\t// Fake selection needs to be updated if there's no fake selection container, or the container currently sits\n\t\t// in a different root.\n\t\tif ( !container || container.parentElement !== domRoot ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Make sure that the selection actually is within the fake selection.\n\t\tif ( domSelection.anchorNode !== container && !container.contains( domSelection.anchorNode ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn container.textContent !== this.selection.fakeSelectionLabel;\n\t}\n\n\t/**\n\t * Removes the DOM selection.\n\t *\n\t * @private\n\t */\n\t_removeDomSelection() {\n\t\tfor ( const doc of this.domDocuments ) {\n\t\t\tconst domSelection = doc.getSelection();\n\n\t\t\tif ( domSelection.rangeCount ) {\n\t\t\t\tconst activeDomElement = doc.activeElement;\n\t\t\t\tconst viewElement = this.domConverter.mapDomToView( activeDomElement );\n\n\t\t\t\tif ( activeDomElement && viewElement ) {\n\t\t\t\t\tdoc.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes the fake selection.\n\t *\n\t * @private\n\t */\n\t_removeFakeSelection() {\n\t\tconst container = this._fakeSelectionContainer;\n\n\t\tif ( container ) {\n\t\t\tcontainer.remove();\n\t\t}\n\t}\n\n\t/**\n\t * Checks if focus needs to be updated and possibly updates it.\n\t *\n\t * @private\n\t */\n\t_updateFocus() {\n\t\tif ( this.isFocused ) {\n\t\t\tconst editable = this.selection.editableElement;\n\n\t\t\tif ( editable ) {\n\t\t\t\tthis.domConverter.focus( editable );\n\t\t\t}\n\t\t}\n\t}\n}\n\nmix( Renderer, ObservableMixin );\n\n// Checks if provided element is editable.\n//\n// @private\n// @param {module:engine/view/element~Element} element\n// @returns {Boolean}\nfunction isEditable( element ) {\n\tif ( element.getAttribute( 'contenteditable' ) == 'false' ) {\n\t\treturn false;\n\t}\n\n\tconst parent = element.findAncestor( element => element.hasAttribute( 'contenteditable' ) );\n\n\treturn !parent || parent.getAttribute( 'contenteditable' ) == 'true';\n}\n\n// Adds inline filler at a given position.\n//\n// The position can be given as an array of DOM nodes and an offset in that array,\n// or a DOM parent element and an offset in that element.\n//\n// @private\n// @param {Document} domDocument\n// @param {Element|Array.} domParentOrArray\n// @param {Number} offset\n// @returns {Text} The DOM text node that contains an inline filler.\nfunction addInlineFiller( domDocument, domParentOrArray, offset ) {\n\tconst childNodes = domParentOrArray instanceof Array ? domParentOrArray : domParentOrArray.childNodes;\n\tconst nodeAfterFiller = childNodes[ offset ];\n\n\tif ( isText( nodeAfterFiller ) ) {\n\t\tnodeAfterFiller.data = INLINE_FILLER + nodeAfterFiller.data;\n\n\t\treturn nodeAfterFiller;\n\t} else {\n\t\tconst fillerNode = domDocument.createTextNode( INLINE_FILLER );\n\n\t\tif ( Array.isArray( domParentOrArray ) ) {\n\t\t\tchildNodes.splice( offset, 0, fillerNode );\n\t\t} else {\n\t\t\tinsertAt( domParentOrArray, offset, fillerNode );\n\t\t}\n\n\t\treturn fillerNode;\n\t}\n}\n\n// Whether two DOM nodes should be considered as similar.\n// Nodes are considered similar if they have the same tag name.\n//\n// @private\n// @param {Node} node1\n// @param {Node} node2\n// @returns {Boolean}\nfunction areSimilar( node1, node2 ) {\n\treturn isNode( node1 ) && isNode( node2 ) &&\n\t\t!isText( node1 ) && !isText( node2 ) &&\n\t\tnode1.nodeType !== Node.COMMENT_NODE && node2.nodeType !== Node.COMMENT_NODE &&\n\t\tnode1.tagName.toLowerCase() === node2.tagName.toLowerCase();\n}\n\n// Whether two dom nodes should be considered as the same.\n// Two nodes which are considered the same are:\n//\n//\t\t* Text nodes with the same text.\n//\t\t* Element nodes represented by the same object.\n//\t\t* Two block filler elements.\n//\n// @private\n// @param {String} blockFillerMode Block filler mode, see {@link module:engine/view/domconverter~DomConverter#blockFillerMode}.\n// @param {Node} node1\n// @param {Node} node2\n// @returns {Boolean}\nfunction sameNodes( domConverter, actualDomChild, expectedDomChild ) {\n\t// Elements.\n\tif ( actualDomChild === expectedDomChild ) {\n\t\treturn true;\n\t}\n\t// Texts.\n\telse if ( isText( actualDomChild ) && isText( expectedDomChild ) ) {\n\t\treturn actualDomChild.data === expectedDomChild.data;\n\t}\n\t// Block fillers.\n\telse if ( domConverter.isBlockFiller( actualDomChild ) &&\n\t\tdomConverter.isBlockFiller( expectedDomChild ) ) {\n\t\treturn true;\n\t}\n\n\t// Not matching types.\n\treturn false;\n}\n\n// The following is a Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\n// When the native DOM selection is at the end of the block and preceded by
    e.g.\n//\n//\t\t

    foo
    []

    \n//\n// which happens a lot when using the soft line break, the browser fails to (visually) move the\n// caret to the new line. A quick fix is as simple as force–refreshing the selection with the same range.\nfunction fixGeckoSelectionAfterBr( focus, domSelection ) {\n\tconst parent = focus.parent;\n\n\t// This fix works only when the focus point is at the very end of an element.\n\t// There is no point in running it in cases unrelated to the browser bug.\n\tif ( parent.nodeType != Node.ELEMENT_NODE || focus.offset != parent.childNodes.length - 1 ) {\n\t\treturn;\n\t}\n\n\tconst childAtOffset = parent.childNodes[ focus.offset ];\n\n\t// To stay on the safe side, the fix being as specific as possible, it targets only the\n\t// selection which is at the very end of the element and preceded by
    .\n\tif ( childAtOffset && childAtOffset.tagName == 'BR' ) {\n\t\tdomSelection.addRange( domSelection.getRangeAt( 0 ) );\n\t}\n}\n\nfunction filterOutFakeSelectionContainer( domChildList, fakeSelectionContainer ) {\n\tconst childList = Array.from( domChildList );\n\n\tif ( childList.length == 0 || !fakeSelectionContainer ) {\n\t\treturn childList;\n\t}\n\n\tconst last = childList[ childList.length - 1 ];\n\n\tif ( last == fakeSelectionContainer ) {\n\t\tchildList.pop();\n\t}\n\n\treturn childList;\n}\n\n// Creates a fake selection container for a given document.\n//\n// @private\n// @param {Document} domDocument\n// @returns {HTMLElement}\nfunction createFakeSelectionContainer( domDocument ) {\n\tconst container = domDocument.createElement( 'div' );\n\n\tObject.assign( container.style, {\n\t\tposition: 'fixed',\n\t\ttop: 0,\n\t\tleft: '-9999px',\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/752.\n\t\twidth: '42px'\n\t} );\n\n\t// Fill it with a text node so we can update it later.\n\tcontainer.textContent = '\\u00A0';\n\n\treturn container;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals window, document */\n\n/**\n * @module utils/dom/global\n */\n\n/**\n * A helper (module) giving an access to the global DOM objects such as `window` and\n * `document`. Accessing these objects using this helper allows easy and bulletproof\n * testing, i.e. stubbing native properties:\n *\n *\t\timport global from 'ckeditor5/utils/dom/global.js';\n *\n *\t\t// This stub will work for any code using global module.\n *\t\ttestUtils.sinon.stub( global, 'window', {\n *\t\t\tinnerWidth: 10000\n *\t\t} );\n *\n *\t\tconsole.log( global.window.innerWidth );\n */\nexport default { window, document };\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/indexof\n */\n\n/**\n * Returns index of the node in the parent element.\n *\n * @param {Node} node Node which index is tested.\n * @returns {Number} Index of the node in the parent element. Returns 0 if node has no parent.\n */\nexport default function indexOf( node ) {\n\tlet index = 0;\n\n\twhile ( node.previousSibling ) {\n\t\tnode = node.previousSibling;\n\t\tindex++;\n\t}\n\n\treturn index;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals Node */\n\n/**\n * @module utils/dom/getancestors\n */\n\n/**\n * Returns all ancestors of given DOM node, starting from the top-most (root). Includes the given node itself. If the\n * node is a part of `DocumentFragment` that `DocumentFragment` will be returned. In contrary, if the node is\n * appended to a `Document`, that `Document` will not be returned (algorithms operating on DOM tree care for `Document#documentElement`\n * at most, which will be returned).\n *\n * @param {Node} node DOM node.\n * @returns {Array.} Array of given `node` parents.\n */\nexport default function getAncestors( node ) {\n\tconst nodes = [];\n\n\t// We are interested in `Node`s `DocumentFragment`s only.\n\twhile ( node && node.nodeType != Node.DOCUMENT_NODE ) {\n\t\tnodes.unshift( node );\n\t\tnode = node.parentNode;\n\t}\n\n\treturn nodes;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/domconverter\n */\n\n/* globals document, Node, NodeFilter, Text */\n\nimport ViewText from './text';\nimport ViewElement from './element';\nimport ViewPosition from './position';\nimport ViewRange from './range';\nimport ViewSelection from './selection';\nimport ViewDocumentFragment from './documentfragment';\nimport ViewTreeWalker from './treewalker';\nimport { BR_FILLER, getDataWithoutFiller, INLINE_FILLER_LENGTH, isInlineFiller, NBSP_FILLER, startsWithFiller } from './filler';\n\nimport global from '@ckeditor/ckeditor5-utils/src/dom/global';\nimport indexOf from '@ckeditor/ckeditor5-utils/src/dom/indexof';\nimport getAncestors from '@ckeditor/ckeditor5-utils/src/dom/getancestors';\nimport getCommonAncestor from '@ckeditor/ckeditor5-utils/src/dom/getcommonancestor';\nimport isText from '@ckeditor/ckeditor5-utils/src/dom/istext';\nimport { isElement } from 'lodash-es';\n\n// eslint-disable-next-line new-cap\nconst BR_FILLER_REF = BR_FILLER( document );\n\n/**\n * `DomConverter` is a set of tools to do transformations between DOM nodes and view nodes. It also handles\n * {@link module:engine/view/domconverter~DomConverter#bindElements bindings} between these nodes.\n *\n * An instance of the DOM converter is available under\n * {@link module:engine/view/view~View#domConverter `editor.editing.view.domConverter`}.\n *\n * The DOM converter does not check which nodes should be rendered (use {@link module:engine/view/renderer~Renderer}), does not keep the\n * state of a tree nor keeps the synchronization between the tree view and the DOM tree (use {@link module:engine/view/document~Document}).\n *\n * The DOM converter keeps DOM elements to view element bindings, so when the converter gets destroyed, the bindings are lost.\n * Two converters will keep separate binding maps, so one tree view can be bound with two DOM trees.\n */\nexport default class DomConverter {\n\t/**\n\t * Creates a DOM converter.\n\t *\n\t * @param {module:engine/view/document~Document} document The view document instance.\n\t * @param {Object} options An object with configuration options.\n\t * @param {module:engine/view/filler~BlockFillerMode} [options.blockFillerMode='br'] The type of the block filler to use.\n\t */\n\tconstructor( document, options = {} ) {\n\t\t/**\n\t\t * @readonly\n\t\t * @type {module:engine/view/document~Document}\n\t\t */\n\t\tthis.document = document;\n\n\t\t/**\n\t\t * The mode of a block filler used by the DOM converter.\n\t\t *\n\t\t * @readonly\n\t\t * @member {'br'|'nbsp'} module:engine/view/domconverter~DomConverter#blockFillerMode\n\t\t */\n\t\tthis.blockFillerMode = options.blockFillerMode || 'br';\n\n\t\t/**\n\t\t * Elements which are considered pre-formatted elements.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Array.} module:engine/view/domconverter~DomConverter#preElements\n\t\t */\n\t\tthis.preElements = [ 'pre' ];\n\n\t\t/**\n\t\t * Elements which are considered block elements (and hence should be filled with a\n\t\t * {@link #isBlockFiller block filler}).\n\t\t *\n\t\t * Whether an element is considered a block element also affects handling of trailing whitespaces.\n\t\t *\n\t\t * You can extend this array if you introduce support for block elements which are not yet recognized here.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Array.} module:engine/view/domconverter~DomConverter#blockElements\n\t\t */\n\t\tthis.blockElements = [ 'p', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'dd', 'dt', 'figcaption', 'td', 'th' ];\n\n\t\t/**\n\t\t * Block {@link module:engine/view/filler filler} creator, which is used to create all block fillers during the\n\t\t * view-to-DOM conversion and to recognize block fillers during the DOM-to-view conversion.\n\t\t *\n\t\t * @readonly\n\t\t * @private\n\t\t * @member {Function} module:engine/view/domconverter~DomConverter#_blockFiller\n\t\t */\n\t\tthis._blockFiller = this.blockFillerMode == 'br' ? BR_FILLER : NBSP_FILLER;\n\n\t\t/**\n\t\t * The DOM-to-view mapping.\n\t\t *\n\t\t * @private\n\t\t * @member {WeakMap} module:engine/view/domconverter~DomConverter#_domToViewMapping\n\t\t */\n\t\tthis._domToViewMapping = new WeakMap();\n\n\t\t/**\n\t\t * The view-to-DOM mapping.\n\t\t *\n\t\t * @private\n\t\t * @member {WeakMap} module:engine/view/domconverter~DomConverter#_viewToDomMapping\n\t\t */\n\t\tthis._viewToDomMapping = new WeakMap();\n\n\t\t/**\n\t\t * Holds the mapping between fake selection containers and corresponding view selections.\n\t\t *\n\t\t * @private\n\t\t * @member {WeakMap} module:engine/view/domconverter~DomConverter#_fakeSelectionMapping\n\t\t */\n\t\tthis._fakeSelectionMapping = new WeakMap();\n\t}\n\n\t/**\n\t * Binds given DOM element that represents fake selection to a **position** of a\n\t * {@link module:engine/view/documentselection~DocumentSelection document selection}.\n\t * Document selection copy is stored and can be retrieved by\n\t * {@link module:engine/view/domconverter~DomConverter#fakeSelectionToView} method.\n\t *\n\t * @param {HTMLElement} domElement\n\t * @param {module:engine/view/documentselection~DocumentSelection} viewDocumentSelection\n\t */\n\tbindFakeSelection( domElement, viewDocumentSelection ) {\n\t\tthis._fakeSelectionMapping.set( domElement, new ViewSelection( viewDocumentSelection ) );\n\t}\n\n\t/**\n\t * Returns {@link module:engine/view/selection~Selection view selection} instance corresponding to\n\t * given DOM element that represents fake selection. Returns `undefined` if binding to given DOM element does not exists.\n\t *\n\t * @param {HTMLElement} domElement\n\t * @returns {module:engine/view/selection~Selection|undefined}\n\t */\n\tfakeSelectionToView( domElement ) {\n\t\treturn this._fakeSelectionMapping.get( domElement );\n\t}\n\n\t/**\n\t * Binds DOM and View elements, so it will be possible to get corresponding elements using\n\t * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.\n\t *\n\t * @param {HTMLElement} domElement DOM element to bind.\n\t * @param {module:engine/view/element~Element} viewElement View element to bind.\n\t */\n\tbindElements( domElement, viewElement ) {\n\t\tthis._domToViewMapping.set( domElement, viewElement );\n\t\tthis._viewToDomMapping.set( viewElement, domElement );\n\t}\n\n\t/**\n\t * Unbinds given `domElement` from the view element it was bound to. Unbinding is deep, meaning that all children of\n\t * `domElement` will be unbound too.\n\t *\n\t * @param {HTMLElement} domElement DOM element to unbind.\n\t */\n\tunbindDomElement( domElement ) {\n\t\tconst viewElement = this._domToViewMapping.get( domElement );\n\n\t\tif ( viewElement ) {\n\t\t\tthis._domToViewMapping.delete( domElement );\n\t\t\tthis._viewToDomMapping.delete( viewElement );\n\n\t\t\tfor ( const child of domElement.childNodes ) {\n\t\t\t\tthis.unbindDomElement( child );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Binds DOM and View document fragments, so it will be possible to get corresponding document fragments using\n\t * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.\n\t *\n\t * @param {DocumentFragment} domFragment DOM document fragment to bind.\n\t * @param {module:engine/view/documentfragment~DocumentFragment} viewFragment View document fragment to bind.\n\t */\n\tbindDocumentFragments( domFragment, viewFragment ) {\n\t\tthis._domToViewMapping.set( domFragment, viewFragment );\n\t\tthis._viewToDomMapping.set( viewFragment, domFragment );\n\t}\n\n\t/**\n\t * Converts view to DOM. For all text nodes, not bound elements and document fragments new items will\n\t * be created. For bound elements and document fragments function will return corresponding items.\n\t *\n\t * @param {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment} viewNode\n\t * View node or document fragment to transform.\n\t * @param {Document} domDocument Document which will be used to create DOM nodes.\n\t * @param {Object} [options] Conversion options.\n\t * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.\n\t * @param {Boolean} [options.withChildren=true] If `true`, node's and document fragment's children will be converted too.\n\t * @returns {Node|DocumentFragment} Converted node or DocumentFragment.\n\t */\n\tviewToDom( viewNode, domDocument, options = {} ) {\n\t\tif ( viewNode.is( '$text' ) ) {\n\t\t\tconst textData = this._processDataFromViewText( viewNode );\n\n\t\t\treturn domDocument.createTextNode( textData );\n\t\t} else {\n\t\t\tif ( this.mapViewToDom( viewNode ) ) {\n\t\t\t\treturn this.mapViewToDom( viewNode );\n\t\t\t}\n\n\t\t\tlet domElement;\n\n\t\t\tif ( viewNode.is( 'documentFragment' ) ) {\n\t\t\t\t// Create DOM document fragment.\n\t\t\t\tdomElement = domDocument.createDocumentFragment();\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindDocumentFragments( domElement, viewNode );\n\t\t\t\t}\n\t\t\t} else if ( viewNode.is( 'uiElement' ) ) {\n\t\t\t\t// UIElement has its own render() method (see #799).\n\t\t\t\tdomElement = viewNode.render( domDocument );\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domElement, viewNode );\n\t\t\t\t}\n\n\t\t\t\treturn domElement;\n\t\t\t} else {\n\t\t\t\t// Create DOM element.\n\t\t\t\tif ( viewNode.hasAttribute( 'xmlns' ) ) {\n\t\t\t\t\tdomElement = domDocument.createElementNS( viewNode.getAttribute( 'xmlns' ), viewNode.name );\n\t\t\t\t} else {\n\t\t\t\t\tdomElement = domDocument.createElement( viewNode.name );\n\t\t\t\t}\n\n\t\t\t\t// RawElement take care of their children in RawElement#render() method which can be customized\n\t\t\t\t// (see https://github.com/ckeditor/ckeditor5/issues/4469).\n\t\t\t\tif ( viewNode.is( 'rawElement' ) ) {\n\t\t\t\t\tviewNode.render( domElement );\n\t\t\t\t}\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domElement, viewNode );\n\t\t\t\t}\n\n\t\t\t\t// Copy element's attributes.\n\t\t\t\tfor ( const key of viewNode.getAttributeKeys() ) {\n\t\t\t\t\tdomElement.setAttribute( key, viewNode.getAttribute( key ) );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( options.withChildren || options.withChildren === undefined ) {\n\t\t\t\tfor ( const child of this.viewChildrenToDom( viewNode, domDocument, options ) ) {\n\t\t\t\t\tdomElement.appendChild( child );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn domElement;\n\t\t}\n\t}\n\n\t/**\n\t * Converts children of the view element to DOM using the\n\t * {@link module:engine/view/domconverter~DomConverter#viewToDom} method.\n\t * Additionally, this method adds block {@link module:engine/view/filler filler} to the list of children, if needed.\n\t *\n\t * @param {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment} viewElement Parent view element.\n\t * @param {Document} domDocument Document which will be used to create DOM nodes.\n\t * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#viewToDom} options parameter.\n\t * @returns {Iterable.} DOM nodes.\n\t */\n\t* viewChildrenToDom( viewElement, domDocument, options = {} ) {\n\t\tconst fillerPositionOffset = viewElement.getFillerOffset && viewElement.getFillerOffset();\n\t\tlet offset = 0;\n\n\t\tfor ( const childView of viewElement.getChildren() ) {\n\t\t\tif ( fillerPositionOffset === offset ) {\n\t\t\t\tyield this._blockFiller( domDocument );\n\t\t\t}\n\n\t\t\tyield this.viewToDom( childView, domDocument, options );\n\n\t\t\toffset++;\n\t\t}\n\n\t\tif ( fillerPositionOffset === offset ) {\n\t\t\tyield this._blockFiller( domDocument );\n\t\t}\n\t}\n\n\t/**\n\t * Converts view {@link module:engine/view/range~Range} to DOM range.\n\t * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.\n\t *\n\t * @param {module:engine/view/range~Range} viewRange View range.\n\t * @returns {Range} DOM range.\n\t */\n\tviewRangeToDom( viewRange ) {\n\t\tconst domStart = this.viewPositionToDom( viewRange.start );\n\t\tconst domEnd = this.viewPositionToDom( viewRange.end );\n\n\t\tconst domRange = document.createRange();\n\t\tdomRange.setStart( domStart.parent, domStart.offset );\n\t\tdomRange.setEnd( domEnd.parent, domEnd.offset );\n\n\t\treturn domRange;\n\t}\n\n\t/**\n\t * Converts view {@link module:engine/view/position~Position} to DOM parent and offset.\n\t *\n\t * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.\n\t * If the converted position is directly before inline filler it is moved inside the filler.\n\t *\n\t * @param {module:engine/view/position~Position} viewPosition View position.\n\t * @returns {Object|null} position DOM position or `null` if view position could not be converted to DOM.\n\t * @returns {Node} position.parent DOM position parent.\n\t * @returns {Number} position.offset DOM position offset.\n\t */\n\tviewPositionToDom( viewPosition ) {\n\t\tconst viewParent = viewPosition.parent;\n\n\t\tif ( viewParent.is( '$text' ) ) {\n\t\t\tconst domParent = this.findCorrespondingDomText( viewParent );\n\n\t\t\tif ( !domParent ) {\n\t\t\t\t// Position is in a view text node that has not been rendered to DOM yet.\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet offset = viewPosition.offset;\n\n\t\t\tif ( startsWithFiller( domParent ) ) {\n\t\t\t\toffset += INLINE_FILLER_LENGTH;\n\t\t\t}\n\n\t\t\treturn { parent: domParent, offset };\n\t\t} else {\n\t\t\t// viewParent is instance of ViewElement.\n\t\t\tlet domParent, domBefore, domAfter;\n\n\t\t\tif ( viewPosition.offset === 0 ) {\n\t\t\t\tdomParent = this.mapViewToDom( viewParent );\n\n\t\t\t\tif ( !domParent ) {\n\t\t\t\t\t// Position is in a view element that has not been rendered to DOM yet.\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tdomAfter = domParent.childNodes[ 0 ];\n\t\t\t} else {\n\t\t\t\tconst nodeBefore = viewPosition.nodeBefore;\n\n\t\t\t\tdomBefore = nodeBefore.is( '$text' ) ?\n\t\t\t\t\tthis.findCorrespondingDomText( nodeBefore ) :\n\t\t\t\t\tthis.mapViewToDom( viewPosition.nodeBefore );\n\n\t\t\t\tif ( !domBefore ) {\n\t\t\t\t\t// Position is after a view element that has not been rendered to DOM yet.\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tdomParent = domBefore.parentNode;\n\t\t\t\tdomAfter = domBefore.nextSibling;\n\t\t\t}\n\n\t\t\t// If there is an inline filler at position return position inside the filler. We should never return\n\t\t\t// the position before the inline filler.\n\t\t\tif ( isText( domAfter ) && startsWithFiller( domAfter ) ) {\n\t\t\t\treturn { parent: domAfter, offset: INLINE_FILLER_LENGTH };\n\t\t\t}\n\n\t\t\tconst offset = domBefore ? indexOf( domBefore ) + 1 : 0;\n\n\t\t\treturn { parent: domParent, offset };\n\t\t}\n\t}\n\n\t/**\n\t * Converts DOM to view. For all text nodes, not bound elements and document fragments new items will\n\t * be created. For bound elements and document fragments function will return corresponding items. For\n\t * {@link module:engine/view/filler fillers} `null` will be returned.\n\t * For all DOM elements rendered by {@link module:engine/view/uielement~UIElement} that UIElement will be returned.\n\t *\n\t * @param {Node|DocumentFragment} domNode DOM node or document fragment to transform.\n\t * @param {Object} [options] Conversion options.\n\t * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.\n\t * @param {Boolean} [options.withChildren=true] If `true`, node's and document fragment's children will be converted too.\n\t * @param {Boolean} [options.keepOriginalCase=false] If `false`, node's tag name will be converter to lower case.\n\t * @returns {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment|null} Converted node or document fragment\n\t * or `null` if DOM node is a {@link module:engine/view/filler filler} or the given node is an empty text node.\n\t */\n\tdomToView( domNode, options = {} ) {\n\t\tif ( this.isBlockFiller( domNode, this.blockFillerMode ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// When node is inside a UIElement or a RawElement return that parent as it's view representation.\n\t\tconst hostElement = this.getHostViewElement( domNode, this._domToViewMapping );\n\n\t\tif ( hostElement ) {\n\t\t\treturn hostElement;\n\t\t}\n\n\t\tif ( isText( domNode ) ) {\n\t\t\tif ( isInlineFiller( domNode ) ) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tconst textData = this._processDataFromDomText( domNode );\n\n\t\t\t\treturn textData === '' ? null : new ViewText( this.document, textData );\n\t\t\t}\n\t\t} else if ( this.isComment( domNode ) ) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tif ( this.mapDomToView( domNode ) ) {\n\t\t\t\treturn this.mapDomToView( domNode );\n\t\t\t}\n\n\t\t\tlet viewElement;\n\n\t\t\tif ( this.isDocumentFragment( domNode ) ) {\n\t\t\t\t// Create view document fragment.\n\t\t\t\tviewElement = new ViewDocumentFragment( this.document );\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindDocumentFragments( domNode, viewElement );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Create view element.\n\t\t\t\tconst viewName = options.keepOriginalCase ? domNode.tagName : domNode.tagName.toLowerCase();\n\t\t\t\tviewElement = new ViewElement( this.document, viewName );\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domNode, viewElement );\n\t\t\t\t}\n\n\t\t\t\t// Copy element's attributes.\n\t\t\t\tconst attrs = domNode.attributes;\n\n\t\t\t\tfor ( let i = attrs.length - 1; i >= 0; i-- ) {\n\t\t\t\t\tviewElement._setAttribute( attrs[ i ].name, attrs[ i ].value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( options.withChildren || options.withChildren === undefined ) {\n\t\t\t\tfor ( const child of this.domChildrenToView( domNode, options ) ) {\n\t\t\t\t\tviewElement._appendChild( child );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn viewElement;\n\t\t}\n\t}\n\n\t/**\n\t * Converts children of the DOM element to view nodes using\n\t * the {@link module:engine/view/domconverter~DomConverter#domToView} method.\n\t * Additionally this method omits block {@link module:engine/view/filler filler}, if it exists in the DOM parent.\n\t *\n\t * @param {HTMLElement} domElement Parent DOM element.\n\t * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.\n\t * @returns {Iterable.} View nodes.\n\t */\n\t* domChildrenToView( domElement, options = {} ) {\n\t\tfor ( let i = 0; i < domElement.childNodes.length; i++ ) {\n\t\t\tconst domChild = domElement.childNodes[ i ];\n\t\t\tconst viewChild = this.domToView( domChild, options );\n\n\t\t\tif ( viewChild !== null ) {\n\t\t\t\tyield viewChild;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Converts DOM selection to view {@link module:engine/view/selection~Selection}.\n\t * Ranges which cannot be converted will be omitted.\n\t *\n\t * @param {Selection} domSelection DOM selection.\n\t * @returns {module:engine/view/selection~Selection} View selection.\n\t */\n\tdomSelectionToView( domSelection ) {\n\t\t// DOM selection might be placed in fake selection container.\n\t\t// If container contains fake selection - return corresponding view selection.\n\t\tif ( domSelection.rangeCount === 1 ) {\n\t\t\tlet container = domSelection.getRangeAt( 0 ).startContainer;\n\n\t\t\t// The DOM selection might be moved to the text node inside the fake selection container.\n\t\t\tif ( isText( container ) ) {\n\t\t\t\tcontainer = container.parentNode;\n\t\t\t}\n\n\t\t\tconst viewSelection = this.fakeSelectionToView( container );\n\n\t\t\tif ( viewSelection ) {\n\t\t\t\treturn viewSelection;\n\t\t\t}\n\t\t}\n\n\t\tconst isBackward = this.isDomSelectionBackward( domSelection );\n\n\t\tconst viewRanges = [];\n\n\t\tfor ( let i = 0; i < domSelection.rangeCount; i++ ) {\n\t\t\t// DOM Range have correct start and end, no matter what is the DOM Selection direction. So we don't have to fix anything.\n\t\t\tconst domRange = domSelection.getRangeAt( i );\n\t\t\tconst viewRange = this.domRangeToView( domRange );\n\n\t\t\tif ( viewRange ) {\n\t\t\t\tviewRanges.push( viewRange );\n\t\t\t}\n\t\t}\n\n\t\treturn new ViewSelection( viewRanges, { backward: isBackward } );\n\t}\n\n\t/**\n\t * Converts DOM Range to view {@link module:engine/view/range~Range}.\n\t * If the start or end position can not be converted `null` is returned.\n\t *\n\t * @param {Range} domRange DOM range.\n\t * @returns {module:engine/view/range~Range|null} View range.\n\t */\n\tdomRangeToView( domRange ) {\n\t\tconst viewStart = this.domPositionToView( domRange.startContainer, domRange.startOffset );\n\t\tconst viewEnd = this.domPositionToView( domRange.endContainer, domRange.endOffset );\n\n\t\tif ( viewStart && viewEnd ) {\n\t\t\treturn new ViewRange( viewStart, viewEnd );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Converts DOM parent and offset to view {@link module:engine/view/position~Position}.\n\t *\n\t * If the position is inside a {@link module:engine/view/filler filler} which has no corresponding view node,\n\t * position of the filler will be converted and returned.\n\t *\n\t * If the position is inside DOM element rendered by {@link module:engine/view/uielement~UIElement}\n\t * that position will be converted to view position before that UIElement.\n\t *\n\t * If structures are too different and it is not possible to find corresponding position then `null` will be returned.\n\t *\n\t * @param {Node} domParent DOM position parent.\n\t * @param {Number} domOffset DOM position offset.\n\t * @returns {module:engine/view/position~Position} viewPosition View position.\n\t */\n\tdomPositionToView( domParent, domOffset ) {\n\t\tif ( this.isBlockFiller( domParent, this.blockFillerMode ) ) {\n\t\t\treturn this.domPositionToView( domParent.parentNode, indexOf( domParent ) );\n\t\t}\n\n\t\t// If position is somewhere inside UIElement or a RawElement - return position before that element.\n\t\tconst viewElement = this.mapDomToView( domParent );\n\n\t\tif ( viewElement && ( viewElement.is( 'uiElement' ) || viewElement.is( 'rawElement' ) ) ) {\n\t\t\treturn ViewPosition._createBefore( viewElement );\n\t\t}\n\n\t\tif ( isText( domParent ) ) {\n\t\t\tif ( isInlineFiller( domParent ) ) {\n\t\t\t\treturn this.domPositionToView( domParent.parentNode, indexOf( domParent ) );\n\t\t\t}\n\n\t\t\tconst viewParent = this.findCorrespondingViewText( domParent );\n\t\t\tlet offset = domOffset;\n\n\t\t\tif ( !viewParent ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( startsWithFiller( domParent ) ) {\n\t\t\t\toffset -= INLINE_FILLER_LENGTH;\n\t\t\t\toffset = offset < 0 ? 0 : offset;\n\t\t\t}\n\n\t\t\treturn new ViewPosition( viewParent, offset );\n\t\t}\n\t\t// domParent instanceof HTMLElement.\n\t\telse {\n\t\t\tif ( domOffset === 0 ) {\n\t\t\t\tconst viewParent = this.mapDomToView( domParent );\n\n\t\t\t\tif ( viewParent ) {\n\t\t\t\t\treturn new ViewPosition( viewParent, 0 );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst domBefore = domParent.childNodes[ domOffset - 1 ];\n\t\t\t\tconst viewBefore = isText( domBefore ) ?\n\t\t\t\t\tthis.findCorrespondingViewText( domBefore ) :\n\t\t\t\t\tthis.mapDomToView( domBefore );\n\n\t\t\t\t// TODO #663\n\t\t\t\tif ( viewBefore && viewBefore.parent ) {\n\t\t\t\t\treturn new ViewPosition( viewBefore.parent, viewBefore.index + 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Returns corresponding view {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment} for provided DOM element or\n\t * document fragment. If there is no view item {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * to the given DOM - `undefined` is returned.\n\t *\n\t * For all DOM elements rendered by a {@link module:engine/view/uielement~UIElement} or\n\t * a {@link module:engine/view/rawelement~RawElement}, the parent `UIElement` or `RawElement` will be returned.\n\t *\n\t * @param {DocumentFragment|Element} domElementOrDocumentFragment DOM element or document fragment.\n\t * @returns {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment|undefined}\n\t * Corresponding view element, document fragment or `undefined` if no element was bound.\n\t */\n\tmapDomToView( domElementOrDocumentFragment ) {\n\t\tconst hostElement = this.getHostViewElement( domElementOrDocumentFragment );\n\n\t\treturn hostElement || this._domToViewMapping.get( domElementOrDocumentFragment );\n\t}\n\n\t/**\n\t * Finds corresponding text node. Text nodes are not {@link module:engine/view/domconverter~DomConverter#bindElements bound},\n\t * corresponding text node is returned based on the sibling or parent.\n\t *\n\t * If the directly previous sibling is a {@link module:engine/view/domconverter~DomConverter#bindElements bound} element, it is used\n\t * to find the corresponding text node.\n\t *\n\t * If this is a first child in the parent and the parent is a {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * element, it is used to find the corresponding text node.\n\t *\n\t * For all text nodes rendered by a {@link module:engine/view/uielement~UIElement} or\n\t * a {@link module:engine/view/rawelement~RawElement}, the parent `UIElement` or `RawElement` will be returned.\n\t *\n\t * Otherwise `null` is returned.\n\t *\n\t * Note that for the block or inline {@link module:engine/view/filler filler} this method returns `null`.\n\t *\n\t * @param {Text} domText DOM text node.\n\t * @returns {module:engine/view/text~Text|null} Corresponding view text node or `null`, if it was not possible to find a\n\t * corresponding node.\n\t */\n\tfindCorrespondingViewText( domText ) {\n\t\tif ( isInlineFiller( domText ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If DOM text was rendered by a UIElement or a RawElement - return this parent element.\n\t\tconst hostElement = this.getHostViewElement( domText );\n\n\t\tif ( hostElement ) {\n\t\t\treturn hostElement;\n\t\t}\n\n\t\tconst previousSibling = domText.previousSibling;\n\n\t\t// Try to use previous sibling to find the corresponding text node.\n\t\tif ( previousSibling ) {\n\t\t\tif ( !( this.isElement( previousSibling ) ) ) {\n\t\t\t\t// The previous is text or comment.\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst viewElement = this.mapDomToView( previousSibling );\n\n\t\t\tif ( viewElement ) {\n\t\t\t\tconst nextSibling = viewElement.nextSibling;\n\n\t\t\t\t// It might be filler which has no corresponding view node.\n\t\t\t\tif ( nextSibling instanceof ViewText ) {\n\t\t\t\t\treturn viewElement.nextSibling;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Try to use parent to find the corresponding text node.\n\t\telse {\n\t\t\tconst viewElement = this.mapDomToView( domText.parentNode );\n\n\t\t\tif ( viewElement ) {\n\t\t\t\tconst firstChild = viewElement.getChild( 0 );\n\n\t\t\t\t// It might be filler which has no corresponding view node.\n\t\t\t\tif ( firstChild instanceof ViewText ) {\n\t\t\t\t\treturn firstChild;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns corresponding DOM item for provided {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment}.\n\t * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}\n\t * use {@link #findCorrespondingDomText}.\n\t *\n\t * @param {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment} viewNode\n\t * View element or document fragment.\n\t * @returns {Node|DocumentFragment|undefined} Corresponding DOM node or document fragment.\n\t */\n\tmapViewToDom( documentFragmentOrElement ) {\n\t\treturn this._viewToDomMapping.get( documentFragmentOrElement );\n\t}\n\n\t/**\n\t * Finds corresponding text node. Text nodes are not {@link module:engine/view/domconverter~DomConverter#bindElements bound},\n\t * corresponding text node is returned based on the sibling or parent.\n\t *\n\t * If the directly previous sibling is a {@link module:engine/view/domconverter~DomConverter#bindElements bound} element, it is used\n\t * to find the corresponding text node.\n\t *\n\t * If this is a first child in the parent and the parent is a {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * element, it is used to find the corresponding text node.\n\t *\n\t * Otherwise `null` is returned.\n\t *\n\t * @param {module:engine/view/text~Text} viewText View text node.\n\t * @returns {Text|null} Corresponding DOM text node or `null`, if it was not possible to find a corresponding node.\n\t */\n\tfindCorrespondingDomText( viewText ) {\n\t\tconst previousSibling = viewText.previousSibling;\n\n\t\t// Try to use previous sibling to find the corresponding text node.\n\t\tif ( previousSibling && this.mapViewToDom( previousSibling ) ) {\n\t\t\treturn this.mapViewToDom( previousSibling ).nextSibling;\n\t\t}\n\n\t\t// If this is a first node, try to use parent to find the corresponding text node.\n\t\tif ( !previousSibling && viewText.parent && this.mapViewToDom( viewText.parent ) ) {\n\t\t\treturn this.mapViewToDom( viewText.parent ).childNodes[ 0 ];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Focuses DOM editable that is corresponding to provided {@link module:engine/view/editableelement~EditableElement}.\n\t *\n\t * @param {module:engine/view/editableelement~EditableElement} viewEditable\n\t */\n\tfocus( viewEditable ) {\n\t\tconst domEditable = this.mapViewToDom( viewEditable );\n\n\t\tif ( domEditable && domEditable.ownerDocument.activeElement !== domEditable ) {\n\t\t\t// Save the scrollX and scrollY positions before the focus.\n\t\t\tconst { scrollX, scrollY } = global.window;\n\t\t\tconst scrollPositions = [];\n\n\t\t\t// Save all scrollLeft and scrollTop values starting from domEditable up to\n\t\t\t// document#documentElement.\n\t\t\tforEachDomNodeAncestor( domEditable, node => {\n\t\t\t\tconst { scrollLeft, scrollTop } = node;\n\n\t\t\t\tscrollPositions.push( [ scrollLeft, scrollTop ] );\n\t\t\t} );\n\n\t\t\tdomEditable.focus();\n\n\t\t\t// Restore scrollLeft and scrollTop values starting from domEditable up to\n\t\t\t// document#documentElement.\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/951\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/957\n\t\t\tforEachDomNodeAncestor( domEditable, node => {\n\t\t\t\tconst [ scrollLeft, scrollTop ] = scrollPositions.shift();\n\n\t\t\t\tnode.scrollLeft = scrollLeft;\n\t\t\t\tnode.scrollTop = scrollTop;\n\t\t\t} );\n\n\t\t\t// Restore the scrollX and scrollY positions after the focus.\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/951\n\t\t\tglobal.window.scrollTo( scrollX, scrollY );\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.\n\t *\n\t * @param {Node} node Node to check.\n\t * @returns {Boolean}\n\t */\n\tisElement( node ) {\n\t\treturn node && node.nodeType == Node.ELEMENT_NODE;\n\t}\n\n\t/**\n\t * Returns `true` when `node.nodeType` equals `Node.DOCUMENT_FRAGMENT_NODE`.\n\t *\n\t * @param {Node} node Node to check.\n\t * @returns {Boolean}\n\t */\n\tisDocumentFragment( node ) {\n\t\treturn node && node.nodeType == Node.DOCUMENT_FRAGMENT_NODE;\n\t}\n\n\t/**\n\t * Returns `true` when `node.nodeType` equals `Node.COMMENT_NODE`.\n\t *\n\t * @param {Node} node Node to check.\n\t * @returns {Boolean}\n\t */\n\tisComment( node ) {\n\t\treturn node && node.nodeType == Node.COMMENT_NODE;\n\t}\n\n\t/**\n\t * Checks if the node is an instance of the block filler for this DOM converter.\n\t *\n\t *\t\tconst converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );\n\t *\n\t *\t\tconverter.isBlockFiller( BR_FILLER( document ) ); // true\n\t *\t\tconverter.isBlockFiller( NBSP_FILLER( document ) ); // false\n\t *\n\t * **Note:**: For the `'nbsp'` mode the method also checks context of a node so it cannot be a detached node.\n\t *\n\t * **Note:** A special case in the `'nbsp'` mode exists where the `
    ` in `


    ` is treated as a block filler.\n\t *\n\t * @param {Node} domNode DOM node to check.\n\t * @returns {Boolean} True if a node is considered a block filler for given mode.\n\t */\n\tisBlockFiller( domNode ) {\n\t\tif ( this.blockFillerMode == 'br' ) {\n\t\t\treturn domNode.isEqualNode( BR_FILLER_REF );\n\t\t}\n\n\t\t// Special case for


    in which case the
    should be treated as filler even\n\t\t// when we're in the 'nbsp' mode. See ckeditor5#5564.\n\t\tif ( domNode.tagName === 'BR' && hasBlockParent( domNode, this.blockElements ) && domNode.parentNode.childNodes.length === 1 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn isNbspBlockFiller( domNode, this.blockElements );\n\t}\n\n\t/**\n\t * Returns `true` if given selection is a backward selection, that is, if it's `focus` is before `anchor`.\n\t *\n\t * @param {Selection} DOM Selection instance to check.\n\t * @returns {Boolean}\n\t */\n\tisDomSelectionBackward( selection ) {\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Since it takes multiple lines of code to check whether a \"DOM Position\" is before/after another \"DOM Position\",\n\t\t// we will use the fact that range will collapse if it's end is before it's start.\n\t\tconst range = document.createRange();\n\n\t\trange.setStart( selection.anchorNode, selection.anchorOffset );\n\t\trange.setEnd( selection.focusNode, selection.focusOffset );\n\n\t\tconst backward = range.collapsed;\n\n\t\trange.detach();\n\n\t\treturn backward;\n\t}\n\n\t/**\n\t * Returns a parent {@link module:engine/view/uielement~UIElement} or {@link module:engine/view/rawelement~RawElement}\n\t * that hosts the provided DOM node. Returns `null` if there is no such parent.\n\t *\n\t * @param {Node} domNode\n\t * @returns {module:engine/view/uielement~UIElement|module:engine/view/rawelement~RawElement|null}\n\t */\n\tgetHostViewElement( domNode ) {\n\t\tconst ancestors = getAncestors( domNode );\n\n\t\t// Remove domNode from the list.\n\t\tancestors.pop();\n\n\t\twhile ( ancestors.length ) {\n\t\t\tconst domNode = ancestors.pop();\n\t\t\tconst viewNode = this._domToViewMapping.get( domNode );\n\n\t\t\tif ( viewNode && ( viewNode.is( 'uiElement' ) || viewNode.is( 'rawElement' ) ) ) {\n\t\t\t\treturn viewNode;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Checks if the given selection's boundaries are at correct places.\n\t *\n\t * The following places are considered as incorrect for selection boundaries:\n\t *\n\t * * before or in the middle of an inline filler sequence,\n\t * * inside a DOM element which represents {@link module:engine/view/uielement~UIElement a view UI element},\n\t * * inside a DOM element which represents {@link module:engine/view/rawelement~RawElement a view raw element}.\n\t *\n\t * @param {Selection} domSelection The DOM selection object to be checked.\n\t * @returns {Boolean} `true` if the given selection is at a correct place, `false` otherwise.\n\t */\n\tisDomSelectionCorrect( domSelection ) {\n\t\treturn this._isDomSelectionPositionCorrect( domSelection.anchorNode, domSelection.anchorOffset ) &&\n\t\t\tthis._isDomSelectionPositionCorrect( domSelection.focusNode, domSelection.focusOffset );\n\t}\n\n\t/**\n\t * Checks if the given DOM position is a correct place for selection boundary. See {@link #isDomSelectionCorrect}.\n\t *\n\t * @private\n\t * @param {Element} domParent Position parent.\n\t * @param {Number} offset Position offset.\n\t * @returns {Boolean} `true` if given position is at a correct place for selection boundary, `false` otherwise.\n\t */\n\t_isDomSelectionPositionCorrect( domParent, offset ) {\n\t\t// If selection is before or in the middle of inline filler string, it is incorrect.\n\t\tif ( isText( domParent ) && startsWithFiller( domParent ) && offset < INLINE_FILLER_LENGTH ) {\n\t\t\t// Selection in a text node, at wrong position (before or in the middle of filler).\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.isElement( domParent ) && startsWithFiller( domParent.childNodes[ offset ] ) ) {\n\t\t\t// Selection in an element node, before filler text node.\n\t\t\treturn false;\n\t\t}\n\n\t\tconst viewParent = this.mapDomToView( domParent );\n\n\t\t// The position is incorrect when anchored inside a UIElement or a RawElement.\n\t\t// Note: In case of UIElement and RawElement, mapDomToView() returns a parent element for any DOM child\n\t\t// so there's no need to perform any additional checks.\n\t\tif ( viewParent && ( viewParent.is( 'uiElement' ) || viewParent.is( 'rawElement' ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Takes text data from a given {@link module:engine/view/text~Text#data} and processes it so\n\t * it is correctly displayed in the DOM.\n\t *\n\t * Following changes are done:\n\t *\n\t * * a space at the beginning is changed to ` ` if this is the first text node in its container\n\t * element or if a previous text node ends with a space character,\n\t * * space at the end of the text node is changed to ` ` if there are two spaces at the end of a node or if next node\n\t * starts with a space or if it is the last text node in its container,\n\t * * remaining spaces are replaced to a chain of spaces and ` ` (e.g. `'x x'` becomes `'x   x'`).\n\t *\n\t * Content of {@link #preElements} is not processed.\n\t *\n\t * @private\n\t * @param {module:engine/view/text~Text} node View text node to process.\n\t * @returns {String} Processed text data.\n\t */\n\t_processDataFromViewText( node ) {\n\t\tlet data = node.data;\n\n\t\t// If any of node ancestors has a name which is in `preElements` array, then currently processed\n\t\t// view text node is (will be) in preformatted element. We should not change whitespaces then.\n\t\tif ( node.getAncestors().some( parent => this.preElements.includes( parent.name ) ) ) {\n\t\t\treturn data;\n\t\t}\n\n\t\t// 1. Replace the first space with a nbsp if the previous node ends with a space or there is no previous node\n\t\t// (container element boundary).\n\t\tif ( data.charAt( 0 ) == ' ' ) {\n\t\t\tconst prevNode = this._getTouchingViewTextNode( node, false );\n\t\t\tconst prevEndsWithSpace = prevNode && this._nodeEndsWithSpace( prevNode );\n\n\t\t\tif ( prevEndsWithSpace || !prevNode ) {\n\t\t\t\tdata = '\\u00A0' + data.substr( 1 );\n\t\t\t}\n\t\t}\n\n\t\t// 2. Replace the last space with nbsp if there are two spaces at the end or if the next node starts with space or there is no\n\t\t// next node (container element boundary).\n\t\t//\n\t\t// Keep in mind that Firefox prefers $nbsp; before tag, not inside it:\n\t\t//\n\t\t// Foo  bar <-- bad.\n\t\t// Foo  bar <-- good.\n\t\t//\n\t\t// More here: https://github.com/ckeditor/ckeditor5-engine/issues/1747.\n\t\tif ( data.charAt( data.length - 1 ) == ' ' ) {\n\t\t\tconst nextNode = this._getTouchingViewTextNode( node, true );\n\n\t\t\tif ( data.charAt( data.length - 2 ) == ' ' || !nextNode || nextNode.data.charAt( 0 ) == ' ' ) {\n\t\t\t\tdata = data.substr( 0, data.length - 1 ) + '\\u00A0';\n\t\t\t}\n\t\t}\n\n\t\t// 3. Create space+nbsp pairs.\n\t\treturn data.replace( / {2}/g, ' \\u00A0' );\n\t}\n\n\t/**\n\t * Checks whether given node ends with a space character after changing appropriate space characters to ` `s.\n\t *\n\t * @private\n\t * @param {module:engine/view/text~Text} node Node to check.\n\t * @returns {Boolean} `true` if given `node` ends with space, `false` otherwise.\n\t */\n\t_nodeEndsWithSpace( node ) {\n\t\tif ( node.getAncestors().some( parent => this.preElements.includes( parent.name ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst data = this._processDataFromViewText( node );\n\n\t\treturn data.charAt( data.length - 1 ) == ' ';\n\t}\n\n\t/**\n\t * Takes text data from native `Text` node and processes it to a correct {@link module:engine/view/text~Text view text node} data.\n\t *\n\t * Following changes are done:\n\t *\n\t * * multiple whitespaces are replaced to a single space,\n\t * * space at the beginning of a text node is removed if it is the first text node in its container\n\t * element or if the previous text node ends with a space character,\n\t * * space at the end of the text node is removed if there are two spaces at the end of a node or if next node\n\t * starts with a space or if it is the last text node in its container\n\t * * nbsps are converted to spaces.\n\t *\n\t * @param {Node} node DOM text node to process.\n\t * @returns {String} Processed data.\n\t * @private\n\t */\n\t_processDataFromDomText( node ) {\n\t\tlet data = node.data;\n\n\t\tif ( _hasDomParentOfType( node, this.preElements ) ) {\n\t\t\treturn getDataWithoutFiller( node );\n\t\t}\n\n\t\t// Change all consecutive whitespace characters (from the [ \\n\\t\\r] set –\n\t\t// see https://github.com/ckeditor/ckeditor5-engine/issues/822#issuecomment-311670249) to a single space character.\n\t\t// That's how multiple whitespaces are treated when rendered, so we normalize those whitespaces.\n\t\t// We're replacing 1+ (and not 2+) to also normalize singular \\n\\t\\r characters (#822).\n\t\tdata = data.replace( /[ \\n\\t\\r]{1,}/g, ' ' );\n\n\t\tconst prevNode = this._getTouchingInlineDomNode( node, false );\n\t\tconst nextNode = this._getTouchingInlineDomNode( node, true );\n\n\t\tconst shouldLeftTrim = this._checkShouldLeftTrimDomText( prevNode );\n\t\tconst shouldRightTrim = this._checkShouldRightTrimDomText( node, nextNode );\n\n\t\t// If the previous dom text node does not exist or it ends by whitespace character, remove space character from the beginning\n\t\t// of this text node. Such space character is treated as a whitespace.\n\t\tif ( shouldLeftTrim ) {\n\t\t\tdata = data.replace( /^ /, '' );\n\t\t}\n\n\t\t// If the next text node does not exist remove space character from the end of this text node.\n\t\tif ( shouldRightTrim ) {\n\t\t\tdata = data.replace( / $/, '' );\n\t\t}\n\n\t\t// At the beginning and end of a block element, Firefox inserts normal space +
    instead of non-breaking space.\n\t\t// This means that the text node starts/end with normal space instead of non-breaking space.\n\t\t// This causes a problem because the normal space would be removed in `.replace` calls above. To prevent that,\n\t\t// the inline filler is removed only after the data is initially processed (by the `.replace` above). See ckeditor5#692.\n\t\tdata = getDataWithoutFiller( new Text( data ) );\n\n\t\t// At this point we should have removed all whitespaces from DOM text data.\n\t\t//\n\t\t// Now, We will reverse the process that happens in `_processDataFromViewText`.\n\t\t//\n\t\t// We have to change   chars, that were in DOM text data because of rendering reasons, to spaces.\n\t\t// First, change all ` \\u00A0` pairs (space +  ) to two spaces. DOM converter changes two spaces from model/view to\n\t\t// ` \\u00A0` to ensure proper rendering. Since here we convert back, we recognize those pairs and change them back to ` `.\n\t\tdata = data.replace( / \\u00A0/g, ' ' );\n\n\t\t// Then, let's change the last nbsp to a space.\n\t\tif ( /( |\\u00A0)\\u00A0$/.test( data ) || !nextNode || ( nextNode.data && nextNode.data.charAt( 0 ) == ' ' ) ) {\n\t\t\tdata = data.replace( /\\u00A0$/, ' ' );\n\t\t}\n\n\t\t// Then, change   character that is at the beginning of the text node to space character.\n\t\t// We do that replacement only if this is the first node or the previous node ends on whitespace character.\n\t\tif ( shouldLeftTrim ) {\n\t\t\tdata = data.replace( /^\\u00A0/, ' ' );\n\t\t}\n\n\t\t// At this point, all whitespaces should be removed and all   created for rendering reasons should be\n\t\t// changed to normal space. All left   are   inserted intentionally.\n\t\treturn data;\n\t}\n\n\t/**\n\t * Helper function which checks if a DOM text node, preceded by the given `prevNode` should\n\t * be trimmed from the left side.\n\t *\n\t * @param {Node} prevNode\n\t */\n\t_checkShouldLeftTrimDomText( prevNode ) {\n\t\tif ( !prevNode ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( isElement( prevNode ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn /[^\\S\\u00A0]/.test( prevNode.data.charAt( prevNode.data.length - 1 ) );\n\t}\n\n\t/**\n\t * Helper function which checks if a DOM text node, succeeded by the given `nextNode` should\n\t * be trimmed from the right side.\n\t *\n\t * @param {Node} node\n\t * @param {Node} nextNode\n\t */\n\t_checkShouldRightTrimDomText( node, nextNode ) {\n\t\tif ( nextNode ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !startsWithFiller( node );\n\t}\n\n\t/**\n\t * Helper function. For given {@link module:engine/view/text~Text view text node}, it finds previous or next sibling\n\t * that is contained in the same container element. If there is no such sibling, `null` is returned.\n\t *\n\t * @param {module:engine/view/text~Text} node Reference node.\n\t * @param {Boolean} getNext\n\t * @returns {module:engine/view/text~Text|null} Touching text node or `null` if there is no next or previous touching text node.\n\t */\n\t_getTouchingViewTextNode( node, getNext ) {\n\t\tconst treeWalker = new ViewTreeWalker( {\n\t\t\tstartPosition: getNext ? ViewPosition._createAfter( node ) : ViewPosition._createBefore( node ),\n\t\t\tdirection: getNext ? 'forward' : 'backward'\n\t\t} );\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\t// ViewContainerElement is found on a way to next ViewText node, so given `node` was first/last\n\t\t\t// text node in its container element.\n\t\t\tif ( value.item.is( 'containerElement' ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t//
    found – it works like a block boundary, so do not scan further.\n\t\t\telse if ( value.item.is( 'element', 'br' ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Found a text node in the same container element.\n\t\t\telse if ( value.item.is( '$textProxy' ) ) {\n\t\t\t\treturn value.item;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Helper function. For the given text node, it finds the closest touching node which is either\n\t * a text node or a `
    `. The search is terminated at block element boundaries and if a matching node\n\t * wasn't found so far, `null` is returned.\n\t *\n\t * In the following DOM structure:\n\t *\n\t *\t\t

    foobar
    bom

    \n\t *\n\t * * `foo` doesn't have its previous touching inline node (`null` is returned),\n\t * * `foo`'s next touching inline node is `bar`\n\t * * `bar`'s next touching inline node is `
    `\n\t *\n\t * This method returns text nodes and `
    ` elements because these types of nodes affect how\n\t * spaces in the given text node need to be converted.\n\t *\n\t * @private\n\t * @param {Text} node\n\t * @param {Boolean} getNext\n\t * @returns {Text|Element|null}\n\t */\n\t_getTouchingInlineDomNode( node, getNext ) {\n\t\tif ( !node.parentNode ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst direction = getNext ? 'nextNode' : 'previousNode';\n\t\tconst document = node.ownerDocument;\n\t\tconst topmostParent = getAncestors( node )[ 0 ];\n\n\t\tconst treeWalker = document.createTreeWalker( topmostParent, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {\n\t\t\tacceptNode( node ) {\n\t\t\t\tif ( isText( node ) ) {\n\t\t\t\t\treturn NodeFilter.FILTER_ACCEPT;\n\t\t\t\t}\n\n\t\t\t\tif ( node.tagName == 'BR' ) {\n\t\t\t\t\treturn NodeFilter.FILTER_ACCEPT;\n\t\t\t\t}\n\n\t\t\t\treturn NodeFilter.FILTER_SKIP;\n\t\t\t}\n\t\t} );\n\n\t\ttreeWalker.currentNode = node;\n\n\t\tconst touchingNode = treeWalker[ direction ]();\n\n\t\tif ( touchingNode !== null ) {\n\t\t\tconst lca = getCommonAncestor( node, touchingNode );\n\n\t\t\t// If there is common ancestor between the text node and next/prev text node,\n\t\t\t// and there are no block elements on a way from the text node to that ancestor,\n\t\t\t// and there are no block elements on a way from next/prev text node to that ancestor...\n\t\t\tif (\n\t\t\t\tlca &&\n\t\t\t\t!_hasDomParentOfType( node, this.blockElements, lca ) &&\n\t\t\t\t!_hasDomParentOfType( touchingNode, this.blockElements, lca )\n\t\t\t) {\n\t\t\t\t// Then they are in the same container element.\n\t\t\t\treturn touchingNode;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n// Helper function.\n// Used to check if given native `Element` or `Text` node has parent with tag name from `types` array.\n//\n// @param {Node} node\n// @param {Array.} types\n// @param {Boolean} [boundaryParent] Can be given if parents should be checked up to a given element (excluding that element).\n// @returns {Boolean} `true` if such parent exists or `false` if it does not.\nfunction _hasDomParentOfType( node, types, boundaryParent ) {\n\tlet parents = getAncestors( node );\n\n\tif ( boundaryParent ) {\n\t\tparents = parents.slice( parents.indexOf( boundaryParent ) + 1 );\n\t}\n\n\treturn parents.some( parent => parent.tagName && types.includes( parent.tagName.toLowerCase() ) );\n}\n\n// A helper that executes given callback for each DOM node's ancestor, starting from the given node\n// and ending in document#documentElement.\n//\n// @param {Node} node\n// @param {Function} callback A callback to be executed for each ancestor.\nfunction forEachDomNodeAncestor( node, callback ) {\n\twhile ( node && node != global.document ) {\n\t\tcallback( node );\n\t\tnode = node.parentNode;\n\t}\n}\n\n// Checks if given node is a nbsp block filler.\n//\n// A   is a block filler only if it is a single child of a block element.\n//\n// @param {Node} domNode DOM node.\n// @returns {Boolean}\nfunction isNbspBlockFiller( domNode, blockElements ) {\n\tconst isNBSP = isText( domNode ) && domNode.data == '\\u00A0';\n\n\treturn isNBSP && hasBlockParent( domNode, blockElements ) && domNode.parentNode.childNodes.length === 1;\n}\n\n// Checks if domNode has block parent.\n//\n// @param {Node} domNode DOM node.\n// @returns {Boolean}\nfunction hasBlockParent( domNode, blockElements ) {\n\tconst parent = domNode.parentNode;\n\n\treturn parent && parent.tagName && blockElements.includes( parent.tagName.toLowerCase() );\n}\n\n/**\n * Enum representing type of the block filler.\n *\n * Possible values:\n *\n * * `br` - for `
    ` block filler used in editing view,\n * * `nbsp` - for ` ` block fillers used in the data.\n *\n * @typedef {String} module:engine/view/filler~BlockFillerMode\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getcommonancestor\n */\n\nimport getAncestors from './getancestors';\n\n/**\n * Searches and returns the lowest common ancestor of two given nodes.\n *\n * @param {Node} nodeA First node.\n * @param {Node} nodeB Second node.\n * @returns {Node|DocumentFragment|Document|null} Lowest common ancestor of both nodes or `null` if nodes do not have a common ancestor.\n */\nexport default function getCommonAncestor( nodeA, nodeB ) {\n\tconst ancestorsA = getAncestors( nodeA );\n\tconst ancestorsB = getAncestors( nodeB );\n\n\tlet i = 0;\n\n\t// It does not matter which array is shorter.\n\twhile ( ancestorsA[ i ] == ancestorsB[ i ] && ancestorsA[ i ] ) {\n\t\ti++;\n\t}\n\n\treturn i === 0 ? null : ancestorsA[ i - 1 ];\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/iswindow\n */\n\n/**\n * Checks if the object is a native DOM Window.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isWindow( obj ) {\n\tconst stringifiedObject = Object.prototype.toString.apply( obj );\n\n\t// Returns `true` for the `window` object in browser environments.\n\tif ( stringifiedObject == '[object Window]' ) {\n\t\treturn true;\n\t}\n\n\t// Returns `true` for the `window` object in the Electron environment.\n\tif ( stringifiedObject == '[object global]' ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/emittermixin\n */\n\nimport { default as EmitterMixin, _getEmitterListenedTo, _setEmitterId } from '../emittermixin';\nimport uid from '../uid';\nimport isNode from './isnode';\nimport isWindow from './iswindow';\nimport { extend } from 'lodash-es';\n\n/**\n * Mixin that injects the DOM events API into its host. It provides the API\n * compatible with {@link module:utils/emittermixin~EmitterMixin}.\n *\n * DOM emitter mixin is by default available in the {@link module:ui/view~View} class,\n * but it can also be mixed into any other class:\n *\n *\t\timport mix from '../utils/mix.js';\n *\t\timport DomEmitterMixin from '../utils/dom/emittermixin.js';\n *\n *\t\tclass SomeView {}\n *\t\tmix( SomeView, DomEmitterMixin );\n *\n *\t\tconst view = new SomeView();\n *\t\tview.listenTo( domElement, ( evt, domEvt ) => {\n *\t\t\tconsole.log( evt, domEvt );\n *\t\t} );\n *\n * @mixin EmitterMixin\n * @mixes module:utils/emittermixin~EmitterMixin\n * @implements module:utils/dom/emittermixin~Emitter\n */\nconst DomEmitterMixin = extend( {}, EmitterMixin, {\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific Emitter or DOM Node.\n\t * It is backwards compatible with {@link module:utils/emittermixin~EmitterMixin#listenTo}.\n\t *\n\t * @param {module:utils/emittermixin~Emitter|Node} emitter The object that fires the event.\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Boolean} [options.useCapture=false] Indicates that events of this type will be dispatched to the registered\n\t * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n\t * @param {Boolean} [options.usePassive=false] Indicates that the function specified by listener will never call preventDefault()\n\t * and prevents blocking browser's main thread by this event handler.\n\t */\n\tlistenTo( emitter, ...rest ) {\n\t\t// Check if emitter is an instance of DOM Node. If so, replace the argument with\n\t\t// corresponding ProxyEmitter (or create one if not existing).\n\t\tif ( isNode( emitter ) || isWindow( emitter ) ) {\n\t\t\tconst proxy = this._getProxyEmitter( emitter ) || new ProxyEmitter( emitter );\n\n\t\t\tproxy.attach( ...rest );\n\n\t\t\temitter = proxy;\n\t\t}\n\n\t\t// Execute parent class method with Emitter (or ProxyEmitter) instance.\n\t\tEmitterMixin.listenTo.call( this, emitter, ...rest );\n\t},\n\n\t/**\n\t * Stops listening for events. It can be used at different levels:\n\t * It is backwards compatible with {@link module:utils/emittermixin~EmitterMixin#listenTo}.\n\t *\n\t * * To stop listening to a specific callback.\n\t * * To stop listening to a specific event.\n\t * * To stop listening to all events fired by a specific object.\n\t * * To stop listening to all events fired by all object.\n\t *\n\t * @param {module:utils/emittermixin~Emitter|Node} [emitter] The object to stop listening to. If omitted, stops it for all objects.\n\t * @param {String} [event] (Requires the `emitter`) The name of the event to stop listening to. If omitted, stops it\n\t * for all events from `emitter`.\n\t * @param {Function} [callback] (Requires the `event`) The function to be removed from the call list for the given\n\t * `event`.\n\t */\n\tstopListening( emitter, event, callback ) {\n\t\t// Check if emitter is an instance of DOM Node. If so, replace the argument with corresponding ProxyEmitter.\n\t\tif ( isNode( emitter ) || isWindow( emitter ) ) {\n\t\t\tconst proxy = this._getProxyEmitter( emitter );\n\n\t\t\t// Element has no listeners.\n\t\t\tif ( !proxy ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\temitter = proxy;\n\t\t}\n\n\t\t// Execute parent class method with Emitter (or ProxyEmitter) instance.\n\t\tEmitterMixin.stopListening.call( this, emitter, event, callback );\n\n\t\tif ( emitter instanceof ProxyEmitter ) {\n\t\t\temitter.detach( event );\n\t\t}\n\t},\n\n\t/**\n\t * Retrieves ProxyEmitter instance for given DOM Node residing in this Host.\n\t *\n\t * @private\n\t * @param {Node} node DOM Node of the ProxyEmitter.\n\t * @returns {module:utils/dom/emittermixin~ProxyEmitter} ProxyEmitter instance or null.\n\t */\n\t_getProxyEmitter( node ) {\n\t\treturn _getEmitterListenedTo( this, getNodeUID( node ) );\n\t}\n} );\n\nexport default DomEmitterMixin;\n\n/**\n * Creates a ProxyEmitter instance. Such an instance is a bridge between a DOM Node firing events\n * and any Host listening to them. It is backwards compatible with {@link module:utils/emittermixin~EmitterMixin#on}.\n *\n * listenTo( click, ... )\n * +-----------------------------------------+\n * | stopListening( ... ) |\n * +----------------------------+ | addEventListener( click, ... )\n * | Host | | +---------------------------------------------+\n * +----------------------------+ | | removeEventListener( click, ... ) |\n * | _listeningTo: { | +----------v-------------+ |\n * | UID: { | | ProxyEmitter | |\n * | emitter: ProxyEmitter, | +------------------------+ +------------v----------+\n * | callbacks: { | | events: { | | Node (HTMLElement) |\n * | click: [ callbacks ] | | click: [ callbacks ] | +-----------------------+\n * | } | | }, | | data-ck-expando: UID |\n * | } | | _domNode: Node, | +-----------------------+\n * | } | | _domListeners: {}, | |\n * | +------------------------+ | | _emitterId: UID | |\n * | | DomEmitterMixin | | +--------------^---------+ |\n * | +------------------------+ | | | |\n * +--------------^-------------+ | +---------------------------------------------+\n * | | click (DOM Event)\n * +-----------------------------------------+\n * fire( click, DOM Event )\n *\n * @mixes module:utils/emittermixin~EmitterMixin\n * @implements module:utils/dom/emittermixin~Emitter\n * @private\n */\nclass ProxyEmitter {\n\t/**\n\t * @param {Node} node DOM Node that fires events.\n\t * @returns {Object} ProxyEmitter instance bound to the DOM Node.\n\t */\n\tconstructor( node ) {\n\t\t// Set emitter ID to match DOM Node \"expando\" property.\n\t\t_setEmitterId( this, getNodeUID( node ) );\n\n\t\t// Remember the DOM Node this ProxyEmitter is bound to.\n\t\tthis._domNode = node;\n\t}\n}\n\nextend( ProxyEmitter.prototype, EmitterMixin, {\n\t/**\n\t * Collection of native DOM listeners.\n\t *\n\t * @private\n\t * @member {Object} module:utils/dom/emittermixin~ProxyEmitter#_domListeners\n\t */\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired.\n\t *\n\t * It attaches a native DOM listener to the DOM Node. When fired,\n\t * a corresponding Emitter event will also fire with DOM Event object as an argument.\n\t *\n\t * @method module:utils/dom/emittermixin~ProxyEmitter#attach\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {Boolean} [options.useCapture=false] Indicates that events of this type will be dispatched to the registered\n\t * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n\t * @param {Boolean} [options.usePassive=false] Indicates that the function specified by listener will never call preventDefault()\n\t * and prevents blocking browser's main thread by this event handler.\n\t */\n\tattach( event, callback, options = {} ) {\n\t\t// If the DOM Listener for given event already exist it is pointless\n\t\t// to attach another one.\n\t\tif ( this._domListeners && this._domListeners[ event ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listenerOptions = {\n\t\t\tcapture: !!options.useCapture,\n\t\t\tpassive: !!options.usePassive\n\t\t};\n\n\t\tconst domListener = this._createDomListener( event, listenerOptions );\n\n\t\t// Attach the native DOM listener to DOM Node.\n\t\tthis._domNode.addEventListener( event, domListener, listenerOptions );\n\n\t\tif ( !this._domListeners ) {\n\t\t\tthis._domListeners = {};\n\t\t}\n\n\t\t// Store the native DOM listener in this ProxyEmitter. It will be helpful\n\t\t// when stopping listening to the event.\n\t\tthis._domListeners[ event ] = domListener;\n\t},\n\n\t/**\n\t * Stops executing the callback on the given event.\n\t *\n\t * @method module:utils/dom/emittermixin~ProxyEmitter#detach\n\t * @param {String} event The name of the event.\n\t */\n\tdetach( event ) {\n\t\tlet events;\n\n\t\t// Remove native DOM listeners which are orphans. If no callbacks\n\t\t// are awaiting given event, detach native DOM listener from DOM Node.\n\t\t// See: {@link attach}.\n\n\t\tif ( this._domListeners[ event ] && ( !( events = this._events[ event ] ) || !events.callbacks.length ) ) {\n\t\t\tthis._domListeners[ event ].removeListener();\n\t\t}\n\t},\n\n\t/**\n\t * Creates a native DOM listener callback. When the native DOM event\n\t * is fired it will fire corresponding event on this ProxyEmitter.\n\t * Note: A native DOM Event is passed as an argument.\n\t *\n\t * @private\n\t * @method module:utils/dom/emittermixin~ProxyEmitter#_createDomListener\n\t * @param {String} event The name of the event.\n\t * @param {Object} [options] Additional options.\n\t * @param {Boolean} [options.capture=false] Indicates whether the listener was created for capturing event.\n\t * @param {Boolean} [options.passive=false] Indicates that the function specified by listener will never call preventDefault()\n\t * and prevents blocking browser's main thread by this event handler.\n\t * @returns {Function} The DOM listener callback.\n\t */\n\t_createDomListener( event, options ) {\n\t\tconst domListener = domEvt => {\n\t\t\tthis.fire( event, domEvt );\n\t\t};\n\n\t\t// Supply the DOM listener callback with a function that will help\n\t\t// detach it from the DOM Node, when it is no longer necessary.\n\t\t// See: {@link detach}.\n\t\tdomListener.removeListener = () => {\n\t\t\tthis._domNode.removeEventListener( event, domListener, options );\n\t\t\tdelete this._domListeners[ event ];\n\t\t};\n\n\t\treturn domListener;\n\t}\n} );\n\n// Gets an unique DOM Node identifier. The identifier will be set if not defined.\n//\n// @private\n// @param {Node} node\n// @returns {String} UID for given DOM Node.\nfunction getNodeUID( node ) {\n\treturn node[ 'data-ck-expando' ] || ( node[ 'data-ck-expando' ] = uid() );\n}\n\n/**\n * Interface representing classes which mix in {@link module:utils/dom/emittermixin~EmitterMixin}.\n *\n * @interface Emitter\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/observer\n */\n\nimport DomEmitterMixin from '@ckeditor/ckeditor5-utils/src/dom/emittermixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * Abstract base observer class. Observers are classes which listen to DOM events, do the preliminary\n * processing and fire events on the {@link module:engine/view/document~Document} objects.\n * Observers can also add features to the view, for instance by updating its status or marking elements\n * which need refresh on DOM events.\n *\n * @abstract\n */\nexport default class Observer {\n\t/**\n\t * Creates an instance of the observer.\n\t *\n\t * @param {module:engine/view/view~View} view\n\t */\n\tconstructor( view ) {\n\t\t/**\n\t\t * Instance of the view controller.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/view~View}\n\t\t */\n\t\tthis.view = view;\n\n\t\t/**\n\t\t * Reference to the {@link module:engine/view/document~Document} object.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/document~Document}\n\t\t */\n\t\tthis.document = view.document;\n\n\t\t/**\n\t\t * State of the observer. If it is disabled events will not be fired.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Boolean}\n\t\t */\n\t\tthis.isEnabled = false;\n\t}\n\n\t/**\n\t * Enables the observer. This method is called when the observer is registered to the\n\t * {@link module:engine/view/view~View} and after {@link module:engine/view/view~View#forceRender rendering}\n\t * (all observers are {@link #disable disabled} before rendering).\n\t *\n\t * A typical use case for disabling observers is that mutation observers need to be disabled for the rendering.\n\t * However, a child class may not need to be disabled, so it can implement an empty method.\n\t *\n\t * @see module:engine/view/observer/observer~Observer#disable\n\t */\n\tenable() {\n\t\tthis.isEnabled = true;\n\t}\n\n\t/**\n\t * Disables the observer. This method is called before\n\t * {@link module:engine/view/view~View#forceRender rendering} to prevent firing events during rendering.\n\t *\n\t * @see module:engine/view/observer/observer~Observer#enable\n\t */\n\tdisable() {\n\t\tthis.isEnabled = false;\n\t}\n\n\t/**\n\t * Disables and destroys the observer, among others removes event listeners created by the observer.\n\t */\n\tdestroy() {\n\t\tthis.disable();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Checks whether the given DOM event should be ignored (should not be turned into a synthetic view document event).\n\t *\n\t * Currently, an event will be ignored only if its target or any of its ancestors has the `data-cke-ignore-events` attribute.\n\t * This attribute can be used inside structures generated by\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `DowncastWriter#createUIElement()`} to ignore events\n\t * fired within a UI that should be excluded from CKEditor 5's realms.\n\t *\n\t * @param {Node} domTarget The DOM event target to check (usually an element, sometimes a text node and\n\t * potentially sometimes a document too).\n\t * @returns {Boolean} Whether this event should be ignored by the observer.\n\t */\n\tcheckShouldIgnoreEventFromTarget( domTarget ) {\n\t\tif ( domTarget && domTarget.nodeType === 3 ) {\n\t\t\tdomTarget = domTarget.parentNode;\n\t\t}\n\n\t\tif ( !domTarget || domTarget.nodeType !== 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn domTarget.matches( '[data-cke-ignore-events], [data-cke-ignore-events] *' );\n\t}\n\n\t/**\n\t * Starts observing the given root element.\n\t *\n\t * @method #observe\n\t * @param {HTMLElement} domElement\n\t * @param {String} name The name of the root element.\n\t */\n}\n\nmix( Observer, DomEmitterMixin );\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/mutationobserver\n */\n\n/* globals window */\n\nimport Observer from './observer';\nimport ViewSelection from '../selection';\nimport { startsWithFiller, getDataWithoutFiller } from '../filler';\nimport { isEqualWith } from 'lodash-es';\n\n/**\n * Mutation observer class observes changes in the DOM, fires {@link module:engine/view/document~Document#event:mutations} event, mark view\n * elements as changed and call {@link module:engine/view/renderer~Renderer#render}.\n * Because all mutated nodes are marked as \"to be rendered\" and the\n * {@link module:engine/view/renderer~Renderer#render} is called, all changes will be reverted, unless the mutation will be handled by the\n * {@link module:engine/view/document~Document#event:mutations} event listener. It means user will see only handled changes, and the editor\n * will block all changes which are not handled.\n *\n * Mutation Observer also take care of reducing number of mutations which are fired. It removes duplicates and\n * mutations on elements which do not have corresponding view elements. Also\n * {@link module:engine/view/observer/mutationobserver~MutatedText text mutation} is fired only if parent element do not change child list.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @extends module:engine/view/observer/observer~Observer\n */\nexport default class MutationObserver extends Observer {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\t/**\n\t\t * Native mutation observer config.\n\t\t *\n\t\t * @private\n\t\t * @member {Object}\n\t\t */\n\t\tthis._config = {\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t\tcharacterDataOldValue: true,\n\t\t\tsubtree: true\n\t\t};\n\n\t\t/**\n\t\t * Reference to the {@link module:engine/view/view~View#domConverter}.\n\t\t *\n\t\t * @member {module:engine/view/domconverter~DomConverter}\n\t\t */\n\t\tthis.domConverter = view.domConverter;\n\n\t\t/**\n\t\t * Reference to the {@link module:engine/view/view~View#_renderer}.\n\t\t *\n\t\t * @member {module:engine/view/renderer~Renderer}\n\t\t */\n\t\tthis.renderer = view._renderer;\n\n\t\t/**\n\t\t * Observed DOM elements.\n\t\t *\n\t\t * @private\n\t\t * @member {Array.}\n\t\t */\n\t\tthis._domElements = [];\n\n\t\t/**\n\t\t * Native mutation observer.\n\t\t *\n\t\t * @private\n\t\t * @member {MutationObserver}\n\t\t */\n\t\tthis._mutationObserver = new window.MutationObserver( this._onMutations.bind( this ) );\n\t}\n\n\t/**\n\t * Synchronously fires {@link module:engine/view/document~Document#event:mutations} event with all mutations in record queue.\n\t * At the same time empties the queue so mutations will not be fired twice.\n\t */\n\tflush() {\n\t\tthis._onMutations( this._mutationObserver.takeRecords() );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tobserve( domElement ) {\n\t\tthis._domElements.push( domElement );\n\n\t\tif ( this.isEnabled ) {\n\t\t\tthis._mutationObserver.observe( domElement, this._config );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tenable() {\n\t\tsuper.enable();\n\n\t\tfor ( const domElement of this._domElements ) {\n\t\t\tthis._mutationObserver.observe( domElement, this._config );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdisable() {\n\t\tsuper.disable();\n\n\t\tthis._mutationObserver.disconnect();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tsuper.destroy();\n\n\t\tthis._mutationObserver.disconnect();\n\t}\n\n\t/**\n\t * Handles mutations. Deduplicates, mark view elements to sync, fire event and call render.\n\t *\n\t * @private\n\t * @param {Array.} domMutations Array of native mutations.\n\t */\n\t_onMutations( domMutations ) {\n\t\t// As a result of this.flush() we can have an empty collection.\n\t\tif ( domMutations.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst domConverter = this.domConverter;\n\n\t\t// Use map and set for deduplication.\n\t\tconst mutatedTexts = new Map();\n\t\tconst mutatedElements = new Set();\n\n\t\t// Handle `childList` mutations first, so we will be able to check if the `characterData` mutation is in the\n\t\t// element with changed structure anyway.\n\t\tfor ( const mutation of domMutations ) {\n\t\t\tif ( mutation.type === 'childList' ) {\n\t\t\t\tconst element = domConverter.mapDomToView( mutation.target );\n\n\t\t\t\t// Do not collect mutations from UIElements and RawElements.\n\t\t\t\tif ( element && ( element.is( 'uiElement' ) || element.is( 'rawElement' ) ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( element && !this._isBogusBrMutation( mutation ) ) {\n\t\t\t\t\tmutatedElements.add( element );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Handle `characterData` mutations later, when we have the full list of nodes which changed structure.\n\t\tfor ( const mutation of domMutations ) {\n\t\t\tconst element = domConverter.mapDomToView( mutation.target );\n\n\t\t\t// Do not collect mutations from UIElements and RawElements.\n\t\t\tif ( element && ( element.is( 'uiElement' ) || element.is( 'rawElement' ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( mutation.type === 'characterData' ) {\n\t\t\t\tconst text = domConverter.findCorrespondingViewText( mutation.target );\n\n\t\t\t\tif ( text && !mutatedElements.has( text.parent ) ) {\n\t\t\t\t\t// Use text as a key, for deduplication. If there will be another mutation on the same text element\n\t\t\t\t\t// we will have only one in the map.\n\t\t\t\t\tmutatedTexts.set( text, {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\toldText: text.data,\n\t\t\t\t\t\tnewText: getDataWithoutFiller( mutation.target ),\n\t\t\t\t\t\tnode: text\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\t// When we added first letter to the text node which had only inline filler, for the DOM it is mutation\n\t\t\t\t// on text, but for the view, where filler text node did not existed, new text node was created, so we\n\t\t\t\t// need to fire 'children' mutation instead of 'text'.\n\t\t\t\telse if ( !text && startsWithFiller( mutation.target ) ) {\n\t\t\t\t\tmutatedElements.add( domConverter.mapDomToView( mutation.target.parentNode ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Now we build the list of mutations to fire and mark elements. We did not do it earlier to avoid marking the\n\t\t// same node multiple times in case of duplication.\n\n\t\t// List of mutations we will fire.\n\t\tconst viewMutations = [];\n\n\t\tfor ( const mutatedText of mutatedTexts.values() ) {\n\t\t\tthis.renderer.markToSync( 'text', mutatedText.node );\n\t\t\tviewMutations.push( mutatedText );\n\t\t}\n\n\t\tfor ( const viewElement of mutatedElements ) {\n\t\t\tconst domElement = domConverter.mapViewToDom( viewElement );\n\t\t\tconst viewChildren = Array.from( viewElement.getChildren() );\n\t\t\tconst newViewChildren = Array.from( domConverter.domChildrenToView( domElement, { withChildren: false } ) );\n\n\t\t\t// It may happen that as a result of many changes (sth was inserted and then removed),\n\t\t\t// both elements haven't really changed. #1031\n\t\t\tif ( !isEqualWith( viewChildren, newViewChildren, sameNodes ) ) {\n\t\t\t\tthis.renderer.markToSync( 'children', viewElement );\n\n\t\t\t\tviewMutations.push( {\n\t\t\t\t\ttype: 'children',\n\t\t\t\t\toldChildren: viewChildren,\n\t\t\t\t\tnewChildren: newViewChildren,\n\t\t\t\t\tnode: viewElement\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\t// Retrieve `domSelection` using `ownerDocument` of one of mutated nodes.\n\t\t// There should not be simultaneous mutation in multiple documents, so it's fine.\n\t\tconst domSelection = domMutations[ 0 ].target.ownerDocument.getSelection();\n\n\t\tlet viewSelection = null;\n\n\t\tif ( domSelection && domSelection.anchorNode ) {\n\t\t\t// If `domSelection` is inside a dom node that is already bound to a view node from view tree, get\n\t\t\t// corresponding selection in the view and pass it together with `viewMutations`. The `viewSelection` may\n\t\t\t// be used by features handling mutations.\n\t\t\t// Only one range is supported.\n\n\t\t\tconst viewSelectionAnchor = domConverter.domPositionToView( domSelection.anchorNode, domSelection.anchorOffset );\n\t\t\tconst viewSelectionFocus = domConverter.domPositionToView( domSelection.focusNode, domSelection.focusOffset );\n\n\t\t\t// Anchor and focus has to be properly mapped to view.\n\t\t\tif ( viewSelectionAnchor && viewSelectionFocus ) {\n\t\t\t\tviewSelection = new ViewSelection( viewSelectionAnchor );\n\t\t\t\tviewSelection.setFocus( viewSelectionFocus );\n\t\t\t}\n\t\t}\n\n\t\t// In case only non-relevant mutations were recorded it skips the event and force render (#5600).\n\t\tif ( viewMutations.length ) {\n\t\t\tthis.document.fire( 'mutations', viewMutations, viewSelection );\n\n\t\t\t// If nothing changes on `mutations` event, at this point we have \"dirty DOM\" (changed) and de-synched\n\t\t\t// view (which has not been changed). In order to \"reset DOM\" we render the view again.\n\t\t\tthis.view.forceRender();\n\t\t}\n\n\t\tfunction sameNodes( child1, child2 ) {\n\t\t\t// First level of comparison (array of children vs array of children) – use the Lodash's default behavior.\n\t\t\tif ( Array.isArray( child1 ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Elements.\n\t\t\tif ( child1 === child2 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Texts.\n\t\t\telse if ( child1.is( '$text' ) && child2.is( '$text' ) ) {\n\t\t\t\treturn child1.data === child2.data;\n\t\t\t}\n\n\t\t\t// Not matching types.\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if mutation was generated by the browser inserting bogus br on the end of the block element.\n\t * Such mutations are generated while pressing space or performing native spellchecker correction\n\t * on the end of the block element in Firefox browser.\n\t *\n\t * @private\n\t * @param {Object} mutation Native mutation object.\n\t * @returns {Boolean}\n\t */\n\t_isBogusBrMutation( mutation ) {\n\t\tlet addedNode = null;\n\n\t\t// Check if mutation added only one node on the end of its parent.\n\t\tif ( mutation.nextSibling === null && mutation.removedNodes.length === 0 && mutation.addedNodes.length == 1 ) {\n\t\t\taddedNode = this.domConverter.domToView( mutation.addedNodes[ 0 ], {\n\t\t\t\twithChildren: false\n\t\t\t} );\n\t\t}\n\n\t\treturn addedNode && addedNode.is( 'element', 'br' );\n\t}\n}\n\n/**\n * Fired when mutation occurred. If tree view is not changed on this event, DOM will be reverted to the state before\n * mutation, so all changes which should be applied, should be handled on this event.\n *\n * Introduced by {@link module:engine/view/observer/mutationobserver~MutationObserver}.\n *\n * Note that because {@link module:engine/view/observer/mutationobserver~MutationObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/mutationobserver~MutationObserver\n * @event module:engine/view/document~Document#event:mutations\n * @param {Array.}\n * viewMutations Array of mutations.\n * For mutated texts it will be {@link module:engine/view/observer/mutationobserver~MutatedText} and for mutated elements it will be\n * {@link module:engine/view/observer/mutationobserver~MutatedChildren}. You can recognize the type based on the `type` property.\n * @param {module:engine/view/selection~Selection|null} viewSelection View selection that is a result of converting DOM selection to view.\n * Keep in\n * mind that the DOM selection is already \"updated\", meaning that it already acknowledges changes done in mutation.\n */\n\n/**\n * Mutation item for text.\n *\n * @see module:engine/view/document~Document#event:mutations\n * @see module:engine/view/observer/mutationobserver~MutatedChildren\n *\n * @typedef {Object} module:engine/view/observer/mutationobserver~MutatedText\n *\n * @property {String} type For text mutations it is always 'text'.\n * @property {module:engine/view/text~Text} node Mutated text node.\n * @property {String} oldText Old text.\n * @property {String} newText New text.\n */\n\n/**\n * Mutation item for child nodes.\n *\n * @see module:engine/view/document~Document#event:mutations\n * @see module:engine/view/observer/mutationobserver~MutatedText\n *\n * @typedef {Object} module:engine/view/observer/mutationobserver~MutatedChildren\n *\n * @property {String} type For child nodes mutations it is always 'children'.\n * @property {module:engine/view/element~Element} node Parent of the mutated children.\n * @property {Array.} oldChildren Old child nodes.\n * @property {Array.} newChildren New child nodes.\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/domeventdata\n */\n\nimport { extend } from 'lodash-es';\n\n/**\n * Information about a DOM event in context of the {@link module:engine/view/document~Document}.\n * It wraps the native event, which usually should not be used as the wrapper contains\n * additional data (like key code for keyboard events).\n */\nexport default class DomEventData {\n\t/**\n\t * @param {module:engine/view/view~View} view The instance of the view controller.\n\t * @param {Event} domEvent The DOM event.\n\t * @param {Object} [additionalData] Additional properties that the instance should contain.\n\t */\n\tconstructor( view, domEvent, additionalData ) {\n\t\t/**\n\t\t * Instance of the view controller.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/view~View} module:engine/view/observer/observer~Observer.DomEvent#view\n\t\t */\n\t\tthis.view = view;\n\n\t\t/**\n\t\t * The instance of the document.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/document~Document} module:engine/view/observer/observer~Observer.DomEvent#document\n\t\t */\n\t\tthis.document = view.document;\n\n\t\t/**\n\t\t * The DOM event.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Event} module:engine/view/observer/observer~Observer.DomEvent#domEvent\n\t\t */\n\t\tthis.domEvent = domEvent;\n\n\t\t/**\n\t\t * The DOM target.\n\t\t *\n\t\t * @readonly\n\t\t * @member {HTMLElement} module:engine/view/observer/observer~Observer.DomEvent#target\n\t\t */\n\t\tthis.domTarget = domEvent.target;\n\n\t\textend( this, additionalData );\n\t}\n\n\t/**\n\t * The tree view element representing the target.\n\t *\n\t * @readonly\n\t * @type module:engine/view/element~Element\n\t */\n\tget target() {\n\t\treturn this.view.domConverter.mapDomToView( this.domTarget );\n\t}\n\n\t/**\n\t * Prevents the native's event default action.\n\t */\n\tpreventDefault() {\n\t\tthis.domEvent.preventDefault();\n\t}\n\n\t/**\n\t * Stops native event propagation.\n\t */\n\tstopPropagation() {\n\t\tthis.domEvent.stopPropagation();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/domeventobserver\n */\n\nimport Observer from './observer';\nimport DomEventData from './domeventdata';\n\n/**\n * Base class for DOM event observers. This class handles\n * {@link module:engine/view/observer/observer~Observer#observe adding} listeners to DOM elements,\n * {@link module:engine/view/observer/observer~Observer#disable disabling} and\n * {@link module:engine/view/observer/observer~Observer#enable re-enabling} events.\n * Child class needs to define\n * {@link module:engine/view/observer/domeventobserver~DomEventObserver#domEventType DOM event type} and\n * {@link module:engine/view/observer/domeventobserver~DomEventObserver#onDomEvent callback}.\n *\n * For instance:\n *\n *\t\tclass ClickObserver extends DomEventObserver {\n *\t\t\t// It can also be defined as a normal property in the constructor.\n *\t\t\tget domEventType() {\n *\t\t\t\treturn 'click';\n *\t\t\t}\n *\n *\t\t\tonDomEvent( domEvent ) {\n *\t\t\t\tthis.fire( 'click', domEvent );\n *\t\t\t}\n *\t\t}\n *\n * @extends module:engine/view/observer/observer~Observer\n */\nexport default class DomEventObserver extends Observer {\n\t/**\n\t * Type of the DOM event the observer should listen on. Array of types can be defined\n\t * if the obsever should listen to multiple DOM events.\n\t *\n\t * @readonly\n\t * @member {String|Array.} #domEventType\n\t */\n\n\t/**\n\t * Callback which should be called when the DOM event occurred. Note that the callback will not be called if\n\t * observer {@link #isEnabled is not enabled}.\n\t *\n\t * @see #domEventType\n\t * @abstract\n\t * @method #onDomEvent\n\t */\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\t/**\n\t\t * If set to `true` DOM events will be listened on the capturing phase.\n\t\t * Default value is `false`.\n\t\t *\n\t\t * @member {Boolean}\n\t\t */\n\t\tthis.useCapture = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tobserve( domElement ) {\n\t\tconst types = typeof this.domEventType == 'string' ? [ this.domEventType ] : this.domEventType;\n\n\t\ttypes.forEach( type => {\n\t\t\tthis.listenTo( domElement, type, ( eventInfo, domEvent ) => {\n\t\t\t\tif ( this.isEnabled && !this.checkShouldIgnoreEventFromTarget( domEvent.target ) ) {\n\t\t\t\t\tthis.onDomEvent( domEvent );\n\t\t\t\t}\n\t\t\t}, { useCapture: this.useCapture } );\n\t\t} );\n\t}\n\n\t/**\n\t * Calls `Document#fire()` if observer {@link #isEnabled is enabled}.\n\t *\n\t * @see module:utils/emittermixin~EmitterMixin#fire\n\t * @param {String} eventType The event type (name).\n\t * @param {Event} domEvent The DOM event.\n\t * @param {Object} [additionalData] The additional data which should extend the\n\t * {@link module:engine/view/observer/domeventdata~DomEventData event data} object.\n\t */\n\tfire( eventType, domEvent, additionalData ) {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( eventType, new DomEventData( this.view, domEvent, additionalData ) );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/keyobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport { getCode } from '@ckeditor/ckeditor5-utils/src/keyboard';\n\n/**\n * Observer for events connected with pressing keyboard keys.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @extends module:engine/view/observer/domeventobserver~DomEventObserver\n */\nexport default class KeyObserver extends DomEventObserver {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\tthis.domEventType = [ 'keydown', 'keyup' ];\n\t}\n\n\tonDomEvent( domEvt ) {\n\t\tthis.fire( domEvt.type, domEvt, {\n\t\t\tkeyCode: domEvt.keyCode,\n\n\t\t\taltKey: domEvt.altKey,\n\t\t\tctrlKey: domEvt.ctrlKey || domEvt.metaKey,\n\t\t\tshiftKey: domEvt.shiftKey,\n\n\t\t\tget keystroke() {\n\t\t\t\treturn getCode( this );\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Fired when a key has been pressed.\n *\n * Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.\n *\n * Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/keyobserver~KeyObserver\n * @event module:engine/view/document~Document#event:keydown\n * @param {module:engine/view/observer/keyobserver~KeyEventData} keyEventData\n */\n\n/**\n * Fired when a key has been released.\n *\n * Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.\n *\n * Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/keyobserver~KeyObserver\n * @event module:engine/view/document~Document#event:keyup\n * @param {module:engine/view/observer/keyobserver~KeyEventData} keyEventData\n */\n\n/**\n * The value of both events - {@link module:engine/view/document~Document#event:keydown} and\n * {@link module:engine/view/document~Document#event:keyup}.\n *\n * @class module:engine/view/observer/keyobserver~KeyEventData\n * @extends module:engine/view/observer/domeventdata~DomEventData\n * @implements module:utils/keyboard~KeystrokeInfo\n */\n\n/**\n * Code of the whole keystroke. See {@link module:utils/keyboard~getCode}.\n *\n * @readonly\n * @member {Number} module:engine/view/observer/keyobserver~KeyEventData#keystroke\n */\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/fakeselectionobserver\n */\n\nimport Observer from './observer';\nimport ViewSelection from '../selection';\nimport { keyCodes, isArrowKeyCode } from '@ckeditor/ckeditor5-utils/src/keyboard';\nimport { debounce } from 'lodash-es';\n\n/**\n * Fake selection observer class. If view selection is fake it is placed in dummy DOM container. This observer listens\n * on {@link module:engine/view/document~Document#event:keydown keydown} events and handles moving fake view selection to the correct place\n * if arrow keys are pressed.\n * Fires {@link module:engine/view/document~Document#event:selectionChange selectionChange event} simulating natural behaviour of\n * {@link module:engine/view/observer/selectionobserver~SelectionObserver SelectionObserver}.\n *\n * @extends module:engine/view/observer/observer~Observer\n */\nexport default class FakeSelectionObserver extends Observer {\n\t/**\n\t * Creates new FakeSelectionObserver instance.\n\t *\n\t * @param {module:engine/view/view~View} view\n\t */\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\t/**\n\t\t * Fires debounced event `selectionChangeDone`. It uses `lodash#debounce` method to delay function call.\n\t\t *\n\t\t * @private\n\t\t * @param {Object} data Selection change data.\n\t\t * @method #_fireSelectionChangeDoneDebounced\n\t\t */\n\t\tthis._fireSelectionChangeDoneDebounced = debounce( data => this.document.fire( 'selectionChangeDone', data ), 200 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tobserve() {\n\t\tconst document = this.document;\n\n\t\tdocument.on( 'keydown', ( eventInfo, data ) => {\n\t\t\tconst selection = document.selection;\n\n\t\t\tif ( selection.isFake && isArrowKeyCode( data.keyCode ) && this.isEnabled ) {\n\t\t\t\t// Prevents default key down handling - no selection change will occur.\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\tthis._handleSelectionMove( data.keyCode );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tsuper.destroy();\n\n\t\tthis._fireSelectionChangeDoneDebounced.cancel();\n\t}\n\n\t/**\n\t * Handles collapsing view selection according to given key code. If left or up key is provided - new selection will be\n\t * collapsed to left. If right or down key is pressed - new selection will be collapsed to right.\n\t *\n\t * This method fires {@link module:engine/view/document~Document#event:selectionChange} and\n\t * {@link module:engine/view/document~Document#event:selectionChangeDone} events imitating behaviour of\n\t * {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n\t *\n\t * @private\n\t * @param {Number} keyCode\n\t * @fires module:engine/view/document~Document#event:selectionChange\n\t * @fires module:engine/view/document~Document#event:selectionChangeDone\n\t */\n\t_handleSelectionMove( keyCode ) {\n\t\tconst selection = this.document.selection;\n\t\tconst newSelection = new ViewSelection( selection.getRanges(), { backward: selection.isBackward, fake: false } );\n\n\t\t// Left or up arrow pressed - move selection to start.\n\t\tif ( keyCode == keyCodes.arrowleft || keyCode == keyCodes.arrowup ) {\n\t\t\tnewSelection.setTo( newSelection.getFirstPosition() );\n\t\t}\n\n\t\t// Right or down arrow pressed - move selection to end.\n\t\tif ( keyCode == keyCodes.arrowright || keyCode == keyCodes.arrowdown ) {\n\t\t\tnewSelection.setTo( newSelection.getLastPosition() );\n\t\t}\n\n\t\tconst data = {\n\t\t\toldSelection: selection,\n\t\t\tnewSelection,\n\t\t\tdomSelection: null\n\t\t};\n\n\t\t// Fire dummy selection change event.\n\t\tthis.document.fire( 'selectionChange', data );\n\n\t\t// Call` #_fireSelectionChangeDoneDebounced` every time when `selectionChange` event is fired.\n\t\t// This function is debounced what means that `selectionChangeDone` event will be fired only when\n\t\t// defined int the function time will elapse since the last time the function was called.\n\t\t// So `selectionChangeDone` will be fired when selection will stop changing.\n\t\tthis._fireSelectionChangeDoneDebounced( data );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/selectionobserver\n */\n\n/* global setInterval, clearInterval */\n\nimport Observer from './observer';\nimport MutationObserver from './mutationobserver';\nimport { debounce } from 'lodash-es';\n\n/**\n * Selection observer class observes selection changes in the document. If selection changes on the document this\n * observer checks if there are any mutations and if DOM selection is different than the\n * {@link module:engine/view/document~Document#selection view selection}. Selection observer fires\n * {@link module:engine/view/document~Document#event:selectionChange} event only if selection change was the only change in the document\n * and DOM selection is different then the view selection.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @see module:engine/view/observer/mutationobserver~MutationObserver\n * @extends module:engine/view/observer/observer~Observer\n */\nexport default class SelectionObserver extends Observer {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\t/**\n\t\t * Instance of the mutation observer. Selection observer calls\n\t\t * {@link module:engine/view/observer/mutationobserver~MutationObserver#flush} to ensure that the mutations will be handled\n\t\t * before the {@link module:engine/view/document~Document#event:selectionChange} event is fired.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/observer/mutationobserver~MutationObserver}\n\t\t * module:engine/view/observer/selectionobserver~SelectionObserver#mutationObserver\n\t\t */\n\t\tthis.mutationObserver = view.getObserver( MutationObserver );\n\n\t\t/**\n\t\t * Reference to the view {@link module:engine/view/documentselection~DocumentSelection} object used to compare\n\t\t * new selection with it.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/documentselection~DocumentSelection}\n\t\t * module:engine/view/observer/selectionobserver~SelectionObserver#selection\n\t\t */\n\t\tthis.selection = this.document.selection;\n\n\t\t/* eslint-disable max-len */\n\t\t/**\n\t\t * Reference to the {@link module:engine/view/view~View#domConverter}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/view/domconverter~DomConverter} module:engine/view/observer/selectionobserver~SelectionObserver#domConverter\n\t\t */\n\t\t/* eslint-enable max-len */\n\t\tthis.domConverter = view.domConverter;\n\n\t\t/**\n\t\t * Set of documents which have added \"selectionchange\" listener to avoid adding listener twice to the same\n\t\t * document.\n\t\t *\n\t\t * @private\n\t\t * @member {WeakSet.} module:engine/view/observer/selectionobserver~SelectionObserver#_documents\n\t\t */\n\t\tthis._documents = new WeakSet();\n\n\t\t/**\n\t\t * Fires debounced event `selectionChangeDone`. It uses `lodash#debounce` method to delay function call.\n\t\t *\n\t\t * @private\n\t\t * @param {Object} data Selection change data.\n\t\t * @method #_fireSelectionChangeDoneDebounced\n\t\t */\n\t\tthis._fireSelectionChangeDoneDebounced = debounce( data => this.document.fire( 'selectionChangeDone', data ), 200 );\n\n\t\tthis._clearInfiniteLoopInterval = setInterval( () => this._clearInfiniteLoop(), 1000 );\n\n\t\t/**\n\t\t * Private property to check if the code does not enter infinite loop.\n\t\t *\n\t\t * @private\n\t\t * @member {Number} module:engine/view/observer/selectionobserver~SelectionObserver#_loopbackCounter\n\t\t */\n\t\tthis._loopbackCounter = 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tobserve( domElement ) {\n\t\tconst domDocument = domElement.ownerDocument;\n\n\t\t// Add listener once per each document.\n\t\tif ( this._documents.has( domDocument ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listenTo( domDocument, 'selectionchange', ( evt, domEvent ) => {\n\t\t\tthis._handleSelectionChange( domEvent, domDocument );\n\t\t} );\n\n\t\tthis._documents.add( domDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tsuper.destroy();\n\n\t\tclearInterval( this._clearInfiniteLoopInterval );\n\t\tthis._fireSelectionChangeDoneDebounced.cancel();\n\t}\n\n\t/**\n\t * Selection change listener. {@link module:engine/view/observer/mutationobserver~MutationObserver#flush Flush} mutations, check if\n\t * selection changes and fires {@link module:engine/view/document~Document#event:selectionChange} event on every change\n\t * and {@link module:engine/view/document~Document#event:selectionChangeDone} when selection stop changing.\n\t *\n\t * @private\n\t * @param {Event} domEvent DOM event.\n\t * @param {Document} domDocument DOM document.\n\t */\n\t_handleSelectionChange( domEvent, domDocument ) {\n\t\tif ( !this.isEnabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst domSelection = domDocument.defaultView.getSelection();\n\n\t\tif ( this.checkShouldIgnoreEventFromTarget( domSelection.anchorNode ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the mutation event will be before selection event on all browsers.\n\t\tthis.mutationObserver.flush();\n\n\t\t// If there were mutations then the view will be re-rendered by the mutation observer and selection\n\t\t// will be updated, so selections will equal and event will not be fired, as expected.\n\t\tconst newViewSelection = this.domConverter.domSelectionToView( domSelection );\n\n\t\t// Do not convert selection change if the new view selection has no ranges in it.\n\t\t//\n\t\t// It means that the DOM selection is in some way incorrect. Ranges that were in the DOM selection could not be\n\t\t// converted to the view. This happens when the DOM selection was moved outside of the editable element.\n\t\tif ( newViewSelection.rangeCount == 0 ) {\n\t\t\tthis.view.hasDomSelection = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.view.hasDomSelection = true;\n\n\t\tif ( this.selection.isEqual( newViewSelection ) && this.domConverter.isDomSelectionCorrect( domSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure we are not in the infinite loop (#400).\n\t\t// This counter is reset each second. 60 selection changes in 1 second is enough high number\n\t\t// to be very difficult (impossible) to achieve using just keyboard keys (during normal editor use).\n\t\tif ( ++this._loopbackCounter > 60 ) {\n\t\t\t// Selection change observer detected an infinite rendering loop.\n\t\t\t// Most probably you try to put the selection in the position which is not allowed\n\t\t\t// by the browser and browser fixes it automatically what causes `selectionchange` event on\n\t\t\t// which a loopback through a model tries to re-render the wrong selection and again.\n\t\t\t//\n\t\t\t// @if CK_DEBUG // console.warn( 'Selection change observer detected an infinite rendering loop.' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.selection.isSimilar( newViewSelection ) ) {\n\t\t\t// If selection was equal and we are at this point of algorithm, it means that it was incorrect.\n\t\t\t// Just re-render it, no need to fire any events, etc.\n\t\t\tthis.view.forceRender();\n\t\t} else {\n\t\t\tconst data = {\n\t\t\t\toldSelection: this.selection,\n\t\t\t\tnewSelection: newViewSelection,\n\t\t\t\tdomSelection\n\t\t\t};\n\n\t\t\t// Prepare data for new selection and fire appropriate events.\n\t\t\tthis.document.fire( 'selectionChange', data );\n\n\t\t\t// Call` #_fireSelectionChangeDoneDebounced` every time when `selectionChange` event is fired.\n\t\t\t// This function is debounced what means that `selectionChangeDone` event will be fired only when\n\t\t\t// defined int the function time will elapse since the last time the function was called.\n\t\t\t// So `selectionChangeDone` will be fired when selection will stop changing.\n\t\t\tthis._fireSelectionChangeDoneDebounced( data );\n\t\t}\n\t}\n\n\t/**\n\t * Clears `SelectionObserver` internal properties connected with preventing infinite loop.\n\t *\n\t * @protected\n\t */\n\t_clearInfiniteLoop() {\n\t\tthis._loopbackCounter = 0;\n\t}\n}\n\n/**\n * Fired when selection has changed. This event is fired only when the selection change was the only change that happened\n * in the document, and old selection is different then the new selection.\n *\n * Introduced by {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n *\n * Note that because {@link module:engine/view/observer/selectionobserver~SelectionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/selectionobserver~SelectionObserver\n * @event module:engine/view/document~Document#event:selectionChange\n * @param {Object} data\n * @param {module:engine/view/documentselection~DocumentSelection} data.oldSelection Old View selection which is\n * {@link module:engine/view/document~Document#selection}.\n * @param {module:engine/view/selection~Selection} data.newSelection New View selection which is converted DOM selection.\n * @param {Selection} data.domSelection Native DOM selection.\n */\n\n/**\n * Fired when selection stops changing.\n *\n * Introduced by {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n *\n * Note that because {@link module:engine/view/observer/selectionobserver~SelectionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/selectionobserver~SelectionObserver\n * @event module:engine/view/document~Document#event:selectionChangeDone\n * @param {Object} data\n * @param {module:engine/view/documentselection~DocumentSelection} data.oldSelection Old View selection which is\n * {@link module:engine/view/document~Document#selection}.\n * @param {module:engine/view/selection~Selection} data.newSelection New View selection which is converted DOM selection.\n * @param {Selection} data.domSelection Native DOM selection.\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/focusobserver\n */\n\n/* globals setTimeout, clearTimeout */\n\nimport DomEventObserver from './domeventobserver';\n\n/**\n * {@link module:engine/view/document~Document#event:focus Focus}\n * and {@link module:engine/view/document~Document#event:blur blur} events observer.\n * Focus observer handle also {@link module:engine/view/rooteditableelement~RootEditableElement#isFocused isFocused} property of the\n * {@link module:engine/view/rooteditableelement~RootEditableElement root elements}.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @extends module:engine/view/observer/domeventobserver~DomEventObserver\n */\nexport default class FocusObserver extends DomEventObserver {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\tthis.domEventType = [ 'focus', 'blur' ];\n\t\tthis.useCapture = true;\n\t\tconst document = this.document;\n\n\t\tdocument.on( 'focus', () => {\n\t\t\tdocument.isFocused = true;\n\n\t\t\t// Unfortunately native `selectionchange` event is fired asynchronously.\n\t\t\t// We need to wait until `SelectionObserver` handle the event and then render. Otherwise rendering will\n\t\t\t// overwrite new DOM selection with selection from the view.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-engine/issues/795 for more details.\n\t\t\t// Long timeout is needed to solve #676 and https://github.com/ckeditor/ckeditor5-engine/issues/1157 issues.\n\t\t\tthis._renderTimeoutId = setTimeout( () => view.forceRender(), 50 );\n\t\t} );\n\n\t\tdocument.on( 'blur', ( evt, data ) => {\n\t\t\tconst selectedEditable = document.selection.editableElement;\n\n\t\t\tif ( selectedEditable === null || selectedEditable === data.target ) {\n\t\t\t\tdocument.isFocused = false;\n\n\t\t\t\t// Re-render the document to update view elements.\n\t\t\t\tview.forceRender();\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Identifier of the timeout currently used by focus listener to delay rendering execution.\n\t\t *\n\t\t * @private\n\t\t * @member {Number} #_renderTimeoutId\n\t\t */\n\t}\n\n\tonDomEvent( domEvent ) {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdestroy() {\n\t\tif ( this._renderTimeoutId ) {\n\t\t\tclearTimeout( this._renderTimeoutId );\n\t\t}\n\n\t\tsuper.destroy();\n\t}\n}\n\n/**\n * Fired when one of the editables gets focus.\n *\n * Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.\n *\n * Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/focusobserver~FocusObserver\n * @event module:engine/view/document~Document#event:focus\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n\n/**\n * Fired when one of the editables loses focus.\n *\n * Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.\n *\n * Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/focusobserver~FocusObserver\n * @event module:engine/view/document~Document#event:blur\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/compositionobserver\n */\n\nimport DomEventObserver from './domeventobserver';\n\n/**\n * {@link module:engine/view/document~Document#event:compositionstart Compositionstart},\n * {@link module:engine/view/document~Document#event:compositionupdate compositionupdate} and\n * {@link module:engine/view/document~Document#event:compositionend compositionend} events observer.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @extends module:engine/view/observer/domeventobserver~DomEventObserver\n */\nexport default class CompositionObserver extends DomEventObserver {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\tthis.domEventType = [ 'compositionstart', 'compositionupdate', 'compositionend' ];\n\t\tconst document = this.document;\n\n\t\tdocument.on( 'compositionstart', () => {\n\t\t\tdocument.isComposing = true;\n\t\t} );\n\n\t\tdocument.on( 'compositionend', () => {\n\t\t\tdocument.isComposing = false;\n\t\t} );\n\t}\n\n\tonDomEvent( domEvent ) {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n}\n\n/**\n * Fired when composition starts inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @event module:engine/view/document~Document#event:compositionstart\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n\n/**\n * Fired when composition is updated inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @event module:engine/view/document~Document#event:compositionupdate\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n\n/**\n * Fired when composition ends inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @event module:engine/view/document~Document#event:compositionend\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/observer/inputobserver\n */\n\nimport DomEventObserver from './domeventobserver';\n\n/**\n * Observer for events connected with data input.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n *\n * @extends module:engine/view/observer/domeventobserver~DomEventObserver\n */\nexport default class InputObserver extends DomEventObserver {\n\tconstructor( view ) {\n\t\tsuper( view );\n\n\t\tthis.domEventType = [ 'beforeinput' ];\n\t}\n\n\tonDomEvent( domEvent ) {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n}\n\n/**\n * Fired before browser inputs (or deletes) some data.\n *\n * This event is available only on browsers which support DOM `beforeinput` event.\n *\n * Introduced by {@link module:engine/view/observer/inputobserver~InputObserver}.\n *\n * Note that because {@link module:engine/view/observer/inputobserver~InputObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/inputobserver~InputObserver\n * @event module:engine/view/document~Document#event:beforeinput\n * @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isrange\n */\n\n/**\n * Checks if the object is a native DOM Range.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isRange( obj ) {\n\treturn Object.prototype.toString.apply( obj ) == '[object Range]';\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getborderwidths\n */\n\n/**\n * Returns an object containing CSS border widths of a specified HTML element.\n *\n * @param {HTMLElement} element An element which has CSS borders.\n * @returns {Object} An object containing `top`, `left`, `right` and `bottom` properties\n * with numerical values of the `border-[top,left,right,bottom]-width` CSS styles.\n */\nexport default function getBorderWidths( element ) {\n\t// Call getComputedStyle on the window the element document belongs to.\n\tconst style = element.ownerDocument.defaultView.getComputedStyle( element );\n\n\treturn {\n\t\ttop: parseInt( style.borderTopWidth, 10 ),\n\t\tright: parseInt( style.borderRightWidth, 10 ),\n\t\tbottom: parseInt( style.borderBottomWidth, 10 ),\n\t\tleft: parseInt( style.borderLeftWidth, 10 )\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/rect\n */\n\nimport isRange from './isrange';\nimport isWindow from './iswindow';\nimport getBorderWidths from './getborderwidths';\nimport isText from './istext';\nimport { isElement } from 'lodash-es';\n\nconst rectProperties = [ 'top', 'right', 'bottom', 'left', 'width', 'height' ];\n\n/**\n * A helper class representing a `ClientRect` object, e.g. value returned by\n * the native `object.getBoundingClientRect()` method. Provides a set of methods\n * to manipulate the rect and compare it against other rect instances.\n */\nexport default class Rect {\n\t/**\n\t * Creates an instance of rect.\n\t *\n\t *\t\t// Rect of an HTMLElement.\n\t *\t\tconst rectA = new Rect( document.body );\n\t *\n\t *\t\t// Rect of a DOM Range.\n\t *\t\tconst rectB = new Rect( document.getSelection().getRangeAt( 0 ) );\n\t *\n\t *\t\t// Rect of a window (web browser viewport).\n\t *\t\tconst rectC = new Rect( window );\n\t *\n\t *\t\t// Rect out of an object.\n\t *\t\tconst rectD = new Rect( { top: 0, right: 10, bottom: 10, left: 0, width: 10, height: 10 } );\n\t *\n\t *\t\t// Rect out of another Rect instance.\n\t *\t\tconst rectE = new Rect( rectD );\n\t *\n\t *\t\t// Rect out of a ClientRect.\n\t *\t\tconst rectF = new Rect( document.body.getClientRects().item( 0 ) );\n\t *\n\t * **Note**: By default a rect of an HTML element includes its CSS borders and scrollbars (if any)\n\t * ant the rect of a `window` includes scrollbars too. Use {@link #excludeScrollbarsAndBorders}\n\t * to get the inner part of the rect.\n\t *\n\t * @param {HTMLElement|Range|Window|ClientRect|module:utils/dom/rect~Rect|Object} source A source object to create the rect.\n\t */\n\tconstructor( source ) {\n\t\tconst isSourceRange = isRange( source );\n\n\t\t/**\n\t\t * The object this rect is for.\n\t\t *\n\t\t * @protected\n\t\t * @readonly\n\t\t * @member {HTMLElement|Range|ClientRect|module:utils/dom/rect~Rect|Object} #_source\n\t\t */\n\t\tObject.defineProperty( this, '_source', {\n\t\t\t// If the source is a Rect instance, copy it's #_source.\n\t\t\tvalue: source._source || source,\n\t\t\twritable: true,\n\t\t\tenumerable: false\n\t\t} );\n\n\t\tif ( isElement( source ) || isSourceRange ) {\n\t\t\t// The `Rect` class depends on `getBoundingClientRect` and `getClientRects` DOM methods. If the source\n\t\t\t// of a rect in an HTML element or a DOM range but it does not belong to any rendered DOM tree, these methods\n\t\t\t// will fail to obtain the geometry and the rect instance makes little sense to the features using it.\n\t\t\t// To get rid of this warning make sure the source passed to the constructor is a descendant of `window.document.body`.\n\t\t\t// @if CK_DEBUG // const sourceNode = isSourceRange ? source.startContainer : source;\n\t\t\t// @if CK_DEBUG // if ( !sourceNode.ownerDocument || !sourceNode.ownerDocument.body.contains( sourceNode ) ) {\n\t\t\t// @if CK_DEBUG // \tconsole.warn(\n\t\t\t// @if CK_DEBUG // \t\t'rect-source-not-in-dom: The source of this rect does not belong to any rendered DOM tree.',\n\t\t\t// @if CK_DEBUG // \t\t{ source } );\n\t\t\t// @if CK_DEBUG // }\n\n\t\t\tif ( isSourceRange ) {\n\t\t\t\tconst rangeRects = Rect.getDomRangeRects( source );\n\t\t\t\tcopyRectProperties( this, Rect.getBoundingRect( rangeRects ) );\n\t\t\t} else {\n\t\t\t\tcopyRectProperties( this, source.getBoundingClientRect() );\n\t\t\t}\n\t\t} else if ( isWindow( source ) ) {\n\t\t\tconst { innerWidth, innerHeight } = source;\n\n\t\t\tcopyRectProperties( this, {\n\t\t\t\ttop: 0,\n\t\t\t\tright: innerWidth,\n\t\t\t\tbottom: innerHeight,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: innerWidth,\n\t\t\t\theight: innerHeight\n\t\t\t} );\n\t\t} else {\n\t\t\tcopyRectProperties( this, source );\n\t\t}\n\n\t\t/**\n\t\t * The \"top\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #top\n\t\t */\n\n\t\t/**\n\t\t * The \"right\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #right\n\t\t */\n\n\t\t/**\n\t\t * The \"bottom\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #bottom\n\t\t */\n\n\t\t/**\n\t\t * The \"left\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #left\n\t\t */\n\n\t\t/**\n\t\t * The \"width\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #width\n\t\t */\n\n\t\t/**\n\t\t * The \"height\" value of the rect.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Number} #height\n\t\t */\n\t}\n\n\t/**\n\t * Returns a clone of the rect.\n\t *\n\t * @returns {module:utils/dom/rect~Rect} A cloned rect.\n\t */\n\tclone() {\n\t\treturn new Rect( this );\n\t}\n\n\t/**\n\t * Moves the rect so that its upper–left corner lands in desired `[ x, y ]` location.\n\t *\n\t * @param {Number} x Desired horizontal location.\n\t * @param {Number} y Desired vertical location.\n\t * @returns {module:utils/dom/rect~Rect} A rect which has been moved.\n\t */\n\tmoveTo( x, y ) {\n\t\tthis.top = y;\n\t\tthis.right = x + this.width;\n\t\tthis.bottom = y + this.height;\n\t\tthis.left = x;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Moves the rect in–place by a dedicated offset.\n\t *\n\t * @param {Number} x A horizontal offset.\n\t * @param {Number} y A vertical offset\n\t * @returns {module:utils/dom/rect~Rect} A rect which has been moved.\n\t */\n\tmoveBy( x, y ) {\n\t\tthis.top += y;\n\t\tthis.right += x;\n\t\tthis.left += x;\n\t\tthis.bottom += y;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns a new rect a a result of intersection with another rect.\n\t *\n\t * @param {module:utils/dom/rect~Rect} anotherRect\n\t * @returns {module:utils/dom/rect~Rect}\n\t */\n\tgetIntersection( anotherRect ) {\n\t\tconst rect = {\n\t\t\ttop: Math.max( this.top, anotherRect.top ),\n\t\t\tright: Math.min( this.right, anotherRect.right ),\n\t\t\tbottom: Math.min( this.bottom, anotherRect.bottom ),\n\t\t\tleft: Math.max( this.left, anotherRect.left )\n\t\t};\n\n\t\trect.width = rect.right - rect.left;\n\t\trect.height = rect.bottom - rect.top;\n\n\t\tif ( rect.width < 0 || rect.height < 0 ) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn new Rect( rect );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the area of intersection with another rect.\n\t *\n\t * @param {module:utils/dom/rect~Rect} anotherRect [description]\n\t * @returns {Number} Area of intersection.\n\t */\n\tgetIntersectionArea( anotherRect ) {\n\t\tconst rect = this.getIntersection( anotherRect );\n\n\t\tif ( rect ) {\n\t\t\treturn rect.getArea();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the area of the rect.\n\t *\n\t * @returns {Number}\n\t */\n\tgetArea() {\n\t\treturn this.width * this.height;\n\t}\n\n\t/**\n\t * Returns a new rect, a part of the original rect, which is actually visible to the user,\n\t * e.g. an original rect cropped by parent element rects which have `overflow` set in CSS\n\t * other than `\"visible\"`.\n\t *\n\t * If there's no such visible rect, which is when the rect is limited by one or many of\n\t * the ancestors, `null` is returned.\n\t *\n\t * @returns {module:utils/dom/rect~Rect|null} A visible rect instance or `null`, if there's none.\n\t */\n\tgetVisible() {\n\t\tconst source = this._source;\n\t\tlet visibleRect = this.clone();\n\n\t\t// There's no ancestor to crop with the overflow.\n\t\tif ( !isBody( source ) ) {\n\t\t\tlet parent = source.parentNode || source.commonAncestorContainer;\n\n\t\t\t// Check the ancestors all the way up to the .\n\t\t\twhile ( parent && !isBody( parent ) ) {\n\t\t\t\tconst parentRect = new Rect( parent );\n\t\t\t\tconst intersectionRect = visibleRect.getIntersection( parentRect );\n\n\t\t\t\tif ( intersectionRect ) {\n\t\t\t\t\tif ( intersectionRect.getArea() < visibleRect.getArea() ) {\n\t\t\t\t\t\t// Reduce the visible rect to the intersection.\n\t\t\t\t\t\tvisibleRect = intersectionRect;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// There's no intersection, the rect is completely invisible.\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\t\t}\n\n\t\treturn visibleRect;\n\t}\n\n\t/**\n\t * Checks if all property values ({@link #top}, {@link #left}, {@link #right},\n\t * {@link #bottom}, {@link #width} and {@link #height}) are the equal in both rect\n\t * instances.\n\t *\n\t * @param {module:utils/dom/rect~Rect} rect A rect instance to compare with.\n\t * @returns {Boolean} `true` when Rects are equal. `false` otherwise.\n\t */\n\tisEqual( anotherRect ) {\n\t\tfor ( const prop of rectProperties ) {\n\t\t\tif ( this[ prop ] !== anotherRect[ prop ] ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks whether a rect fully contains another rect instance.\n\t *\n\t * @param {module:utils/dom/rect~Rect} anotherRect\n\t * @returns {Boolean} `true` if contains, `false` otherwise.\n\t */\n\tcontains( anotherRect ) {\n\t\tconst intersectRect = this.getIntersection( anotherRect );\n\n\t\treturn !!( intersectRect && intersectRect.isEqual( anotherRect ) );\n\t}\n\n\t/**\n\t * Excludes scrollbars and CSS borders from the rect.\n\t *\n\t * * Borders are removed when {@link #_source} is an HTML element.\n\t * * Scrollbars are excluded from HTML elements and the `window`.\n\t *\n\t * @returns {module:utils/dom/rect~Rect} A rect which has been updated.\n\t */\n\texcludeScrollbarsAndBorders() {\n\t\tconst source = this._source;\n\t\tlet scrollBarWidth, scrollBarHeight, direction;\n\n\t\tif ( isWindow( source ) ) {\n\t\t\tscrollBarWidth = source.innerWidth - source.document.documentElement.clientWidth;\n\t\t\tscrollBarHeight = source.innerHeight - source.document.documentElement.clientHeight;\n\t\t\tdirection = source.getComputedStyle( source.document.documentElement ).direction;\n\t\t} else {\n\t\t\tconst borderWidths = getBorderWidths( this._source );\n\n\t\t\tscrollBarWidth = source.offsetWidth - source.clientWidth - borderWidths.left - borderWidths.right;\n\t\t\tscrollBarHeight = source.offsetHeight - source.clientHeight - borderWidths.top - borderWidths.bottom;\n\t\t\tdirection = source.ownerDocument.defaultView.getComputedStyle( source ).direction;\n\n\t\t\tthis.left += borderWidths.left;\n\t\t\tthis.top += borderWidths.top;\n\t\t\tthis.right -= borderWidths.right;\n\t\t\tthis.bottom -= borderWidths.bottom;\n\t\t\tthis.width = this.right - this.left;\n\t\t\tthis.height = this.bottom - this.top;\n\t\t}\n\n\t\tthis.width -= scrollBarWidth;\n\n\t\tif ( direction === 'ltr' ) {\n\t\t\tthis.right -= scrollBarWidth;\n\t\t} else {\n\t\t\tthis.left += scrollBarWidth;\n\t\t}\n\n\t\tthis.height -= scrollBarHeight;\n\t\tthis.bottom -= scrollBarHeight;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns an array of rects of the given native DOM Range.\n\t *\n\t * @param {Range} range A native DOM range.\n\t * @returns {Array.} DOM Range rects.\n\t */\n\tstatic getDomRangeRects( range ) {\n\t\tconst rects = [];\n\t\t// Safari does not iterate over ClientRectList using for...of loop.\n\t\tconst clientRects = Array.from( range.getClientRects() );\n\n\t\tif ( clientRects.length ) {\n\t\t\tfor ( const rect of clientRects ) {\n\t\t\t\trects.push( new Rect( rect ) );\n\t\t\t}\n\t\t}\n\t\t// If there's no client rects for the Range, use parent container's bounding rect\n\t\t// instead and adjust rect's width to simulate the actual geometry of such range.\n\t\t// https://github.com/ckeditor/ckeditor5-utils/issues/153\n\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/317\n\t\telse {\n\t\t\tlet startContainer = range.startContainer;\n\n\t\t\tif ( isText( startContainer ) ) {\n\t\t\t\tstartContainer = startContainer.parentNode;\n\t\t\t}\n\n\t\t\tconst rect = new Rect( startContainer.getBoundingClientRect() );\n\t\t\trect.right = rect.left;\n\t\t\trect.width = 0;\n\n\t\t\trects.push( rect );\n\t\t}\n\n\t\treturn rects;\n\t}\n\n\t/**\n\t * Returns a bounding rectangle that contains all the given `rects`.\n\t *\n\t * @param {Iterable.} rects A list of rectangles that should be contained in the result rectangle.\n\t * @returns {module:utils/dom/rect~Rect|null} Bounding rectangle or `null` if no `rects` were given.\n\t */\n\tstatic getBoundingRect( rects ) {\n\t\tconst boundingRectData = {\n\t\t\tleft: Number.POSITIVE_INFINITY,\n\t\t\ttop: Number.POSITIVE_INFINITY,\n\t\t\tright: Number.NEGATIVE_INFINITY,\n\t\t\tbottom: Number.NEGATIVE_INFINITY\n\t\t};\n\t\tlet rectangleCount = 0;\n\n\t\tfor ( const rect of rects ) {\n\t\t\trectangleCount++;\n\n\t\t\tboundingRectData.left = Math.min( boundingRectData.left, rect.left );\n\t\t\tboundingRectData.top = Math.min( boundingRectData.top, rect.top );\n\t\t\tboundingRectData.right = Math.max( boundingRectData.right, rect.right );\n\t\t\tboundingRectData.bottom = Math.max( boundingRectData.bottom, rect.bottom );\n\t\t}\n\n\t\tif ( rectangleCount == 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tboundingRectData.width = boundingRectData.right - boundingRectData.left;\n\t\tboundingRectData.height = boundingRectData.bottom - boundingRectData.top;\n\n\t\treturn new Rect( boundingRectData );\n\t}\n}\n\n// Acquires all the rect properties from the passed source.\n//\n// @private\n// @param {module:utils/dom/rect~Rect} rect\n// @param {ClientRect|module:utils/dom/rect~Rect|Object} source\nfunction copyRectProperties( rect, source ) {\n\tfor ( const p of rectProperties ) {\n\t\trect[ p ] = source[ p ];\n\t}\n}\n\n// Checks if provided object is a HTML element.\n//\n// @private\n// @param {HTMLElement|Range} elementOrRange\n// @returns {Boolean}\nfunction isBody( elementOrRange ) {\n\tif ( !isElement( elementOrRange ) ) {\n\t\treturn false;\n\t}\n\n\treturn elementOrRange === elementOrRange.ownerDocument.body;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/scroll\n */\n\nimport isRange from './isrange';\nimport Rect from './rect';\nimport isText from './istext';\n\nconst utils = {};\n\n/**\n * Makes any page `HTMLElement` or `Range` (`target`) visible inside the browser viewport.\n * This helper will scroll all `target` ancestors and the web browser viewport to reveal the target to\n * the user. If the `target` is already visible, nothing will happen.\n *\n * @param {HTMLElement|Range} options.target A target, which supposed to become visible to the user.\n * @param {Number} [options.viewportOffset] An offset from the edge of the viewport (in pixels)\n * the `target` will be moved by when the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the viewport and thus making it easier to\n * read or edit by the user.\n */\nexport function scrollViewportToShowTarget( { target, viewportOffset = 0 } ) {\n\tconst targetWindow = getWindow( target );\n\tlet currentWindow = targetWindow;\n\tlet currentFrame = null;\n\n\t// Iterate over all windows, starting from target's parent window up to window#top.\n\twhile ( currentWindow ) {\n\t\tlet firstAncestorToScroll;\n\n\t\t// Let's scroll target's ancestors first to reveal it. Then, once the ancestor scrolls\n\t\t// settled down, the algorithm can eventually scroll the viewport of the current window.\n\t\t//\n\t\t// Note: If the current window is target's **original** window (e.g. the first one),\n\t\t// start scrolling the closest parent of the target. If not, scroll the closest parent\n\t\t// of an iframe that resides in the current window.\n\t\tif ( currentWindow == targetWindow ) {\n\t\t\tfirstAncestorToScroll = getParentElement( target );\n\t\t} else {\n\t\t\tfirstAncestorToScroll = getParentElement( currentFrame );\n\t\t}\n\n\t\t// Scroll the target's ancestors first. Once done, scrolling the viewport is easy.\n\t\tscrollAncestorsToShowRect( firstAncestorToScroll, () => {\n\t\t\t// Note: If the target does not belong to the current window **directly**,\n\t\t\t// i.e. it resides in an iframe belonging to the window, obtain the target's rect\n\t\t\t// in the coordinates of the current window. By default, a Rect returns geometry\n\t\t\t// relative to the current window's viewport. To make it work in a parent window,\n\t\t\t// it must be shifted.\n\t\t\treturn getRectRelativeToWindow( target, currentWindow );\n\t\t} );\n\n\t\t// Obtain the rect of the target after it has been scrolled within its ancestors.\n\t\t// It's time to scroll the viewport.\n\t\tconst targetRect = getRectRelativeToWindow( target, currentWindow );\n\n\t\tscrollWindowToShowRect( currentWindow, targetRect, viewportOffset );\n\n\t\tif ( currentWindow.parent != currentWindow ) {\n\t\t\t// Keep the reference to the ' +\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\n\t\t\t\t{\n\t\t\t\t\tname: 'spotify',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(artist\\/\\w+)/,\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(album\\/\\w+)/,\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(track\\/\\w+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\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\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'youtube',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^(?:m\\.)?youtube\\.com\\/watch\\?v=([\\w-]+)/,\n\t\t\t\t\t\t/^(?:m\\.)?youtube\\.com\\/v\\/([\\w-]+)/,\n\t\t\t\t\t\t/^youtube\\.com\\/embed\\/([\\w-]+)/,\n\t\t\t\t\t\t/^youtu\\.be\\/([\\w-]+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\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\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'vimeo',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^vimeo\\.com\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/[^/]+\\/[^/]+\\/video\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/album\\/[^/]+\\/video\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/channels\\/[^/]+\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/groups\\/[^/]+\\/videos\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/ondemand\\/[^/]+\\/(\\d+)/,\n\t\t\t\t\t\t/^player\\.vimeo\\.com\\/video\\/(\\d+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\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\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'instagram',\n\t\t\t\t\turl: /^instagram\\.com\\/p\\/(\\w+)/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'twitter',\n\t\t\t\t\turl: /^twitter\\.com/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'googleMaps',\n\t\t\t\t\turl: /^google\\.com\\/maps/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'flickr',\n\t\t\t\t\turl: /^flickr\\.com/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'facebook',\n\t\t\t\t\turl: /^facebook\\.com/\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\t/**\n\t\t * The media registry managing the media providers in the editor.\n\t\t *\n\t\t * @member {module:media-embed/mediaregistry~MediaRegistry} #registry\n\t\t */\n\t\tthis.registry = new MediaRegistry( editor.locale, editor.config.get( 'mediaEmbed' ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst renderMediaPreview = editor.config.get( 'mediaEmbed.previewsInData' );\n\t\tconst registry = this.registry;\n\n\t\teditor.commands.add( 'mediaEmbed', new MediaEmbedCommand( editor ) );\n\n\t\t// Configure the schema.\n\t\tschema.register( 'media', {\n\t\t\tisObject: true,\n\t\t\tisBlock: true,\n\t\t\tallowWhere: '$block',\n\t\t\tallowAttributes: [ 'url' ]\n\t\t} );\n\n\t\t// Model -> Data\n\t\tconversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'media',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst url = modelElement.getAttribute( 'url' );\n\n\t\t\t\treturn createMediaFigureElement( writer, registry, url, {\n\t\t\t\t\trenderMediaPreview: url && renderMediaPreview\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> Data (url -> data-oembed-url)\n\t\tconversion.for( 'dataDowncast' ).add(\n\t\t\tmodelToViewUrlAttributeConverter( registry, {\n\t\t\t\trenderMediaPreview\n\t\t\t} ) );\n\n\t\t// Model -> View (element)\n\t\tconversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'media',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst url = modelElement.getAttribute( 'url' );\n\t\t\t\tconst figure = createMediaFigureElement( writer, registry, url, {\n\t\t\t\t\trenderForEditingView: true\n\t\t\t\t} );\n\n\t\t\t\treturn toMediaWidget( figure, writer, t( 'media widget' ) );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> View (url -> data-oembed-url)\n\t\tconversion.for( 'editingDowncast' ).add(\n\t\t\tmodelToViewUrlAttributeConverter( registry, {\n\t\t\t\trenderForEditingView: true\n\t\t\t} ) );\n\n\t\t// View -> Model (data-oembed-url -> url)\n\t\tconversion.for( 'upcast' )\n\t\t\t// Upcast semantic media.\n\t\t\t.elementToElement( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'oembed',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\turl: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: ( viewMedia, { writer } ) => {\n\t\t\t\t\tconst url = viewMedia.getAttribute( 'url' );\n\n\t\t\t\t\tif ( registry.hasMedia( url ) ) {\n\t\t\t\t\t\treturn writer.createElement( 'media', { url } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t// Upcast non-semantic media.\n\t\t\t.elementToElement( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t'data-oembed-url': true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: ( viewMedia, { writer } ) => {\n\t\t\t\t\tconst url = viewMedia.getAttribute( 'data-oembed-url' );\n\n\t\t\t\t\tif ( registry.hasMedia( url ) ) {\n\t\t\t\t\t\treturn writer.createElement( 'media', { url } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/automediaembed\n */\n\nimport MediaEmbedEditing from './mediaembedediting';\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport Clipboard from '@ckeditor/ckeditor5-clipboard/src/clipboard';\nimport LiveRange from '@ckeditor/ckeditor5-engine/src/model/liverange';\nimport LivePosition from '@ckeditor/ckeditor5-engine/src/model/liveposition';\nimport Undo from '@ckeditor/ckeditor5-undo/src/undo';\nimport global from '@ckeditor/ckeditor5-utils/src/dom/global';\nimport { insertMedia } from './utils';\n\nconst URL_REGEXP = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=%]+$/;\n\n/**\n * The auto-media embed plugin. It recognizes media links in the pasted content and embeds\n * them shortly after they are injected into the document.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class AutoMediaEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ Clipboard, Undo ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'AutoMediaEmbed';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\t/**\n\t\t * The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t\t * cleaning of the timeout.\n\t\t *\n\t\t * @private\n\t\t * @member {Number} #_timeoutId\n\t\t */\n\t\tthis._timeoutId = null;\n\n\t\t/**\n\t\t * The position where the `` element will be inserted after the timeout,\n\t\t * determined each time the new content is pasted into the document.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/liveposition~LivePosition} #_positionToInsert\n\t\t */\n\t\tthis._positionToInsert = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\n\t\t// We need to listen on `Clipboard#inputTransformation` because we need to save positions of selection.\n\t\t// After pasting, the content between those positions will be checked for a URL that could be transformed\n\t\t// into media.\n\t\tthis.listenTo( editor.plugins.get( Clipboard ), 'inputTransformation', () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange();\n\n\t\t\tconst leftLivePosition = LivePosition.fromPosition( firstRange.start );\n\t\t\tleftLivePosition.stickiness = 'toPrevious';\n\n\t\t\tconst rightLivePosition = LivePosition.fromPosition( firstRange.end );\n\t\t\trightLivePosition.stickiness = 'toNext';\n\n\t\t\tmodelDocument.once( 'change:data', () => {\n\t\t\t\tthis._embedMediaBetweenPositions( leftLivePosition, rightLivePosition );\n\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: 'high' } );\n\t\t} );\n\n\t\teditor.commands.get( 'undo' ).on( 'execute', () => {\n\t\t\tif ( this._timeoutId ) {\n\t\t\t\tglobal.window.clearTimeout( this._timeoutId );\n\t\t\t\tthis._positionToInsert.detach();\n\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Analyzes the part of the document between provided positions in search for a URL representing media.\n\t * When the URL is found, it is automatically converted into media.\n\t *\n\t * @protected\n\t * @param {module:engine/model/liveposition~LivePosition} leftPosition Left position of the selection.\n\t * @param {module:engine/model/liveposition~LivePosition} rightPosition Right position of the selection.\n\t */\n\t_embedMediaBetweenPositions( leftPosition, rightPosition ) {\n\t\tconst editor = this.editor;\n\t\tconst mediaRegistry = editor.plugins.get( MediaEmbedEditing ).registry;\n\t\t// TODO: Use marker instead of LiveRange & LivePositions.\n\t\tconst urlRange = new LiveRange( leftPosition, rightPosition );\n\t\tconst walker = urlRange.getWalker( { ignoreElementEnd: true } );\n\n\t\tlet url = '';\n\n\t\tfor ( const node of walker ) {\n\t\t\tif ( node.item.is( '$textProxy' ) ) {\n\t\t\t\turl += node.item.data;\n\t\t\t}\n\t\t}\n\n\t\turl = url.trim();\n\n\t\t// If the URL does not match to universal URL regexp, let's skip that.\n\t\tif ( !url.match( URL_REGEXP ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If the URL represents a media, let's use it.\n\t\tif ( !mediaRegistry.hasMedia( url ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst mediaEmbedCommand = editor.commands.get( 'mediaEmbed' );\n\n\t\t// Do not anything if media element cannot be inserted at the current position (#47).\n\t\tif ( !mediaEmbedCommand.isEnabled ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Position won't be available in the `setTimeout` function so let's clone it.\n\t\tthis._positionToInsert = LivePosition.fromPosition( leftPosition );\n\n\t\t// This action mustn't be executed if undo was called between pasting and auto-embedding.\n\t\tthis._timeoutId = global.window.setTimeout( () => {\n\t\t\teditor.model.change( writer => {\n\t\t\t\tthis._timeoutId = null;\n\n\t\t\t\twriter.remove( urlRange );\n\t\t\t\turlRange.detach();\n\n\t\t\t\tlet insertionPosition;\n\n\t\t\t\t// Check if position where the media element should be inserted is still valid.\n\t\t\t\t// Otherwise leave it as undefined to use document.selection - default behavior of model.insertContent().\n\t\t\t\tif ( this._positionToInsert.root.rootName !== '$graveyard' ) {\n\t\t\t\t\tinsertionPosition = this._positionToInsert;\n\t\t\t\t}\n\n\t\t\t\tinsertMedia( editor.model, url, insertionPosition );\n\n\t\t\t\tthis._positionToInsert.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t} );\n\t\t}, 100 );\n\t}\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ref--5-2!./mediaform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/ui/mediaformview\n */\n\nimport View from '@ckeditor/ckeditor5-ui/src/view';\nimport ViewCollection from '@ckeditor/ckeditor5-ui/src/viewcollection';\n\nimport ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';\n\nimport LabeledFieldView from '@ckeditor/ckeditor5-ui/src/labeledfield/labeledfieldview';\nimport { createLabeledInputText } from '@ckeditor/ckeditor5-ui/src/labeledfield/utils';\n\nimport submitHandler from '@ckeditor/ckeditor5-ui/src/bindings/submithandler';\nimport FocusTracker from '@ckeditor/ckeditor5-utils/src/focustracker';\nimport FocusCycler from '@ckeditor/ckeditor5-ui/src/focuscycler';\nimport KeystrokeHandler from '@ckeditor/ckeditor5-utils/src/keystrokehandler';\n\nimport checkIcon from '@ckeditor/ckeditor5-core/theme/icons/check.svg';\nimport cancelIcon from '@ckeditor/ckeditor5-core/theme/icons/cancel.svg';\nimport '../../theme/mediaform.css';\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\n\n/**\n * The media form view controller class.\n *\n * See {@link module:media-embed/ui/mediaformview~MediaFormView}.\n *\n * @extends module:ui/view~View\n */\nexport default class MediaFormView extends View {\n\t/**\n\t * @param {Array.} validators Form validators used by {@link #isValid}.\n\t * @param {module:utils/locale~Locale} [locale] The localization services instance.\n\t */\n\tconstructor( validators, locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\t/**\n\t\t * Tracks information about DOM focus in the form.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/focustracker~FocusTracker}\n\t\t */\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\t/**\n\t\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/keystrokehandler~KeystrokeHandler}\n\t\t */\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\t/**\n\t\t * The value of the URL input.\n\t\t *\n\t\t * @member {String} #mediaURLInputValue\n\t\t * @observable\n\t\t */\n\t\tthis.set( 'mediaURLInputValue', '' );\n\n\t\t/**\n\t\t * The URL input view.\n\t\t *\n\t\t * @member {module:ui/labeledfield/labeledfieldview~LabeledFieldView}\n\t\t */\n\t\tthis.urlInputView = this._createUrlInput();\n\n\t\t/**\n\t\t * The Save button view.\n\t\t *\n\t\t * @member {module:ui/button/buttonview~ButtonView}\n\t\t */\n\t\tthis.saveButtonView = this._createButton( t( 'Save' ), checkIcon, 'ck-button-save' );\n\t\tthis.saveButtonView.type = 'submit';\n\t\tthis.saveButtonView.bind( 'isEnabled' ).to( this, 'mediaURLInputValue', value => !!value );\n\n\t\t/**\n\t\t * The Cancel button view.\n\t\t *\n\t\t * @member {module:ui/button/buttonview~ButtonView}\n\t\t */\n\t\tthis.cancelButtonView = this._createButton( t( 'Cancel' ), cancelIcon, 'ck-button-cancel', 'cancel' );\n\n\t\t/**\n\t\t * A collection of views that can be focused in the form.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {module:ui/viewcollection~ViewCollection}\n\t\t */\n\t\tthis._focusables = new ViewCollection();\n\n\t\t/**\n\t\t * Helps cycling over {@link #_focusables} in the form.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {module:ui/focuscycler~FocusCycler}\n\t\t */\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * An array of form validators used by {@link #isValid}.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {Array.}\n\t\t */\n\t\tthis._validators = validators;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-media-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.urlInputView,\n\t\t\t\tthis.saveButtonView,\n\t\t\t\tthis.cancelButtonView\n\t\t\t]\n\t\t} );\n\n\t\t/**\n\t\t * The default info text for the {@link #urlInputView}.\n\t\t *\n\t\t * @private\n\t\t * @member {String} #_urlInputViewInfoDefault\n\t\t */\n\n\t\t/**\n\t\t * The info text with an additional tip for the {@link #urlInputView},\n\t\t * displayed when the input has some value.\n\t\t *\n\t\t * @private\n\t\t * @member {String} #_urlInputViewInfoTip\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.urlInputView,\n\t\t\tthis.saveButtonView,\n\t\t\tthis.cancelButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element );\n\n\t\tconst stopPropagation = data => data.stopPropagation();\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input. We need to prevent\n\t\t// this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis.keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowdown', stopPropagation );\n\n\t\t// Intercept the \"selectstart\" event, which is blocked by default because of the default behavior\n\t\t// of the DropdownView#panelView.\n\t\t// TODO: blocking \"selectstart\" in the #panelView should be configurable per–drop–down instance.\n\t\tthis.listenTo( this.urlInputView.element, 'selectstart', ( evt, domEvt ) => {\n\t\t\tdomEvt.stopPropagation();\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Focuses the fist {@link #_focusables} in the form.\n\t */\n\tfocus() {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * The native DOM `value` of the {@link #urlInputView} element.\n\t *\n\t * **Note**: Do not confuse it with the {@link module:ui/inputtext/inputtextview~InputTextView#value}\n\t * which works one way only and may not represent the actual state of the component in the DOM.\n\t *\n\t * @type {String}\n\t */\n\tget url() {\n\t\treturn this.urlInputView.fieldView.element.value.trim();\n\t}\n\n\tset url( url ) {\n\t\tthis.urlInputView.fieldView.element.value = url.trim();\n\t}\n\n\t/**\n\t * Validates the form and returns `false` when some fields are invalid.\n\t *\n\t * @returns {Boolean}\n\t */\n\tisValid() {\n\t\tthis.resetFormStatus();\n\n\t\tfor ( const validator of this._validators ) {\n\t\t\tconst errorText = validator( this );\n\n\t\t\t// One error per field is enough.\n\t\t\tif ( errorText ) {\n\t\t\t\t// Apply updated error.\n\t\t\t\tthis.urlInputView.errorText = errorText;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Cleans up the supplementary error and information text of the {@link #urlInputView}\n\t * bringing them back to the state when the form has been displayed for the first time.\n\t *\n\t * See {@link #isValid}.\n\t */\n\tresetFormStatus() {\n\t\tthis.urlInputView.errorText = null;\n\t\tthis.urlInputView.infoText = this._urlInputViewInfoDefault;\n\t}\n\n\t/**\n\t * Creates a labeled input view.\n\t *\n\t * @private\n\t * @returns {module:ui/labeledfield/labeledfieldview~LabeledFieldView} Labeled input view instance.\n\t */\n\t_createUrlInput() {\n\t\tconst t = this.locale.t;\n\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\t\tconst inputField = labeledInput.fieldView;\n\n\t\tthis._urlInputViewInfoDefault = t( 'Paste the media URL in the input.' );\n\t\tthis._urlInputViewInfoTip = t( 'Tip: Paste the URL into the content to embed faster.' );\n\n\t\tlabeledInput.label = t( 'Media URL' );\n\t\tlabeledInput.infoText = this._urlInputViewInfoDefault;\n\t\tinputField.placeholder = 'https://example.com';\n\n\t\tinputField.on( 'input', () => {\n\t\t\t// Display the tip text only when there's some value. Otherwise fall back to the default info text.\n\t\t\tlabeledInput.infoText = inputField.element.value ? this._urlInputViewInfoTip : this._urlInputViewInfoDefault;\n\t\t\tthis.mediaURLInputValue = inputField.element.value.trim();\n\t\t} );\n\n\t\treturn labeledInput;\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @private\n\t * @param {String} label The button label.\n\t * @param {String} icon The button icon.\n\t * @param {String} className The additional button CSS class name.\n\t * @param {String} [eventName] An event name that the `ButtonView#execute` event will be delegated to.\n\t * @returns {module:ui/button/buttonview~ButtonView} The button view instance.\n\t */\n\t_createButton( label, icon, className, eventName ) {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: className\n\t\t\t}\n\t\t} );\n\n\t\tif ( eventName ) {\n\t\t\tbutton.delegate( 'execute' ).to( this, eventName );\n\t\t}\n\n\t\treturn button;\n\t}\n}\n\n/**\n * Fired when the form view is submitted (when one of the children triggered the submit event),\n * e.g. click on {@link #saveButtonView}.\n *\n * @event submit\n */\n\n/**\n * Fired when the form view is canceled, e.g. click on {@link #cancelButtonView}.\n *\n * @event cancel\n */\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/mediaembedui\n */\n\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport { createDropdown } from '@ckeditor/ckeditor5-ui/src/dropdown/utils';\nimport MediaFormView from './ui/mediaformview';\nimport MediaEmbedEditing from './mediaembedediting';\nimport mediaIcon from '../theme/icons/media.svg';\n\n/**\n * The media embed UI plugin.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class MediaEmbedUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ MediaEmbedEditing ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'MediaEmbedUI';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst command = editor.commands.get( 'mediaEmbed' );\n\t\tconst registry = editor.plugins.get( MediaEmbedEditing ).registry;\n\n\t\teditor.ui.componentFactory.add( 'mediaEmbed', locale => {\n\t\t\tconst dropdown = createDropdown( locale );\n\n\t\t\tconst mediaForm = new MediaFormView( getFormValidators( editor.t, registry ), editor.locale );\n\n\t\t\tthis._setUpDropdown( dropdown, mediaForm, command, editor );\n\t\t\tthis._setUpForm( dropdown, mediaForm, command );\n\n\t\t\treturn dropdown;\n\t\t} );\n\t}\n\n\t_setUpDropdown( dropdown, form, command ) {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst button = dropdown.buttonView;\n\n\t\tdropdown.bind( 'isEnabled' ).to( command );\n\t\tdropdown.panelView.children.add( form );\n\n\t\tbutton.set( {\n\t\t\tlabel: t( 'Insert media' ),\n\t\t\ticon: mediaIcon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\t// Note: Use the low priority to make sure the following listener starts working after the\n\t\t// default action of the drop-down is executed (i.e. the panel showed up). Otherwise, the\n\t\t// invisible form/input cannot be focused/selected.\n\t\tbutton.on( 'open', () => {\n\t\t\t// Make sure that each time the panel shows up, the URL field remains in sync with the value of\n\t\t\t// the command. If the user typed in the input, then canceled (`urlInputView#fieldView#value` stays\n\t\t\t// unaltered) and re-opened it without changing the value of the media command (e.g. because they\n\t\t\t// didn't change the selection), they would see the old value instead of the actual value of the\n\t\t\t// command.\n\t\t\tform.url = command.value || '';\n\t\t\tform.urlInputView.fieldView.select();\n\t\t\tform.focus();\n\t\t}, { priority: 'low' } );\n\n\t\tdropdown.on( 'submit', () => {\n\t\t\tif ( form.isValid() ) {\n\t\t\t\teditor.execute( 'mediaEmbed', form.url );\n\t\t\t\tcloseUI();\n\t\t\t}\n\t\t} );\n\n\t\tdropdown.on( 'change:isOpen', () => form.resetFormStatus() );\n\t\tdropdown.on( 'cancel', () => closeUI() );\n\n\t\tfunction closeUI() {\n\t\t\teditor.editing.view.focus();\n\t\t\tdropdown.isOpen = false;\n\t\t}\n\t}\n\n\t_setUpForm( dropdown, form, command ) {\n\t\tform.delegate( 'submit', 'cancel' ).to( dropdown );\n\t\tform.urlInputView.bind( 'value' ).to( command, 'value' );\n\n\t\t// Form elements should be read-only when corresponding commands are disabled.\n\t\tform.urlInputView.bind( 'isReadOnly' ).to( command, 'isEnabled', value => !value );\n\t}\n}\n\nfunction getFormValidators( t, registry ) {\n\treturn [\n\t\tform => {\n\t\t\tif ( !form.url.length ) {\n\t\t\t\treturn t( 'The URL must not be empty.' );\n\t\t\t}\n\t\t},\n\t\tform => {\n\t\t\tif ( !registry.hasMedia( form.url ) ) {\n\t\t\t\treturn t( 'This media URL is not supported.' );\n\t\t\t}\n\t\t}\n\t];\n}\n","export default \"\";","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ref--5-2!./mediaembed.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakcommand\n */\n\nimport Command from '@ckeditor/ckeditor5-core/src/command';\nimport { findOptimalInsertionPosition } from '@ckeditor/ckeditor5-widget/src/utils';\n\n/**\n * The page break command.\n *\n * The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.\n *\n * To insert a page break at the current selection, execute the command:\n *\n *\t\teditor.execute( 'pageBreak' );\n *\n * @extends module:core/command~Command\n */\nexport default class PageBreakCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\trefresh() {\n\t\tthis.isEnabled = isPageBreakAllowed( this.editor.model );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t */\n\texecute() {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst pageBreakElement = writer.createElement( 'pageBreak' );\n\n\t\t\tmodel.insertContent( pageBreakElement );\n\n\t\t\tlet nextElement = pageBreakElement.nextSibling;\n\n\t\t\t// Check whether an element next to the inserted page break is defined and can contain a text.\n\t\t\tconst canSetSelection = nextElement && model.schema.checkChild( nextElement, '$text' );\n\n\t\t\t// If the element is missing, but a paragraph could be inserted next to the page break, let's add it.\n\t\t\tif ( !canSetSelection && model.schema.checkChild( pageBreakElement.parent, 'paragraph' ) ) {\n\t\t\t\tnextElement = writer.createElement( 'paragraph' );\n\n\t\t\t\tmodel.insertContent( nextElement, writer.createPositionAfter( pageBreakElement ) );\n\t\t\t}\n\n\t\t\t// Put the selection inside the element, at the beginning.\n\t\t\tif ( nextElement ) {\n\t\t\t\twriter.setSelection( nextElement, 0 );\n\t\t\t}\n\t\t} );\n\t}\n}\n\n// Checks if the `pageBreak` element can be inserted at the current model selection.\n//\n// @param {module:engine/model/model~Model} model\n// @returns {Boolean}\nfunction isPageBreakAllowed( model ) {\n\tconst schema = model.schema;\n\tconst selection = model.document.selection;\n\n\treturn isPageBreakAllowedInParent( selection, schema, model ) &&\n\t\t!checkSelectionOnObject( selection, schema );\n}\n\n// Checks if a page break is allowed by the schema in the optimal insertion parent.\n//\n// @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n// @param {module:engine/model/schema~Schema} schema\n// @param {module:engine/model/model~Model} model Model instance.\n// @returns {Boolean}\nfunction isPageBreakAllowedInParent( selection, schema, model ) {\n\tconst parent = getInsertPageBreakParent( selection, model );\n\n\treturn schema.checkChild( parent, 'pageBreak' );\n}\n\n// Checks if the selection is on object.\n//\n// @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n// @param {module:engine/model/schema~Schema} schema\n// @returns {Boolean}\nfunction checkSelectionOnObject( selection, schema ) {\n\tconst selectedElement = selection.getSelectedElement();\n\n\treturn selectedElement && schema.isObject( selectedElement );\n}\n\n// Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.\n//\n// @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n// @param {module:engine/model/model~Model} model Model instance.\n// @returns {module:engine/model/element~Element}\nfunction getInsertPageBreakParent( selection, model ) {\n\tconst insertAt = findOptimalInsertionPosition( selection, model );\n\n\tconst parent = insertAt.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'element', '$root' ) ) {\n\t\treturn parent.parent;\n\t}\n\n\treturn parent;\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ref--5-2!./pagebreak.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakediting\n */\n\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport PageBreakCommand from './pagebreakcommand';\nimport { toWidget } from '@ckeditor/ckeditor5-widget/src/utils';\n\nimport '../theme/pagebreak.css';\n\n/**\n * The page break editing feature.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class PageBreakEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'PageBreakEditing';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\n\t\tschema.register( 'pageBreak', {\n\t\t\tisObject: true,\n\t\t\tallowWhere: '$block'\n\t\t} );\n\n\t\tconversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst divElement = writer.createContainerElement( 'div', {\n\t\t\t\t\tclass: 'page-break',\n\t\t\t\t\t// If user has no `.ck-content` styles, it should always break a page during print.\n\t\t\t\t\tstyle: 'page-break-after: always'\n\t\t\t\t} );\n\n\t\t\t\t// For a rationale of using span inside a div see:\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.\n\t\t\t\tconst spanElement = writer.createContainerElement( 'span', {\n\t\t\t\t\tstyle: 'display: none'\n\t\t\t\t} );\n\n\t\t\t\twriter.insert( writer.createPositionAt( divElement, 0 ), spanElement );\n\n\t\t\t\treturn divElement;\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst label = t( 'Page break' );\n\t\t\t\tconst viewWrapper = writer.createContainerElement( 'div' );\n\t\t\t\tconst viewLabelElement = writer.createContainerElement( 'span' );\n\t\t\t\tconst innerText = writer.createText( t( 'Page break' ) );\n\n\t\t\t\twriter.addClass( 'page-break', viewWrapper );\n\t\t\t\twriter.setCustomProperty( 'pageBreak', true, viewWrapper );\n\n\t\t\t\twriter.addClass( 'page-break__label', viewLabelElement );\n\n\t\t\t\twriter.insert( writer.createPositionAt( viewWrapper, 0 ), viewLabelElement );\n\t\t\t\twriter.insert( writer.createPositionAt( viewLabelElement, 0 ), innerText );\n\n\t\t\t\treturn toPageBreakWidget( viewWrapper, writer, label );\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tview: element => {\n\t\t\t\t\t// For upcast conversion it's enough if we check for element style and verify if it's empty\n\t\t\t\t\t// or contains only hidden span element.\n\n\t\t\t\t\tconst hasPageBreakBefore = element.getStyle( 'page-break-before' ) == 'always';\n\t\t\t\t\tconst hasPageBreakAfter = element.getStyle( 'page-break-after' ) == 'always';\n\n\t\t\t\t\tif ( !hasPageBreakBefore && !hasPageBreakAfter ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// The \"page break\" div accepts only single child or no child at all.\n\t\t\t\t\tif ( element.childCount == 1 ) {\n\t\t\t\t\t\tconst viewSpan = element.getChild( 0 );\n\n\t\t\t\t\t\t// The child must be the \"span\" element that is not displayed and has a space inside.\n\t\t\t\t\t\tif ( !viewSpan.is( 'element', 'span' ) || viewSpan.getStyle( 'display' ) != 'none' || viewSpan.childCount != 1 ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst text = viewSpan.getChild( 0 );\n\n\t\t\t\t\t\tif ( !text.is( '$text' ) || text.data !== ' ' ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( element.childCount > 1 ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { name: true };\n\t\t\t\t},\n\t\t\t\tmodel: 'pageBreak',\n\n\t\t\t\t// This conversion must be checked before
    conversion because some editors use\n\t\t\t\t//
    as a page break marker.\n\t\t\t\tconverterPriority: 'high'\n\t\t\t} );\n\n\t\teditor.commands.add( 'pageBreak', new PageBreakCommand( editor ) );\n\t}\n}\n\n// Converts a given {@link module:engine/view/element~Element} to a page break widget:\n// * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to\n// recognize the page break widget element.\n// * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n//\n// @param {module:engine/view/element~Element} viewElement\n// @param {module:engine/view/downcastwriter~DowncastWriter} writer An instance of the view writer.\n// @param {String} label The element's label.\n// @returns {module:engine/view/element~Element}\nfunction toPageBreakWidget( viewElement, writer, label ) {\n\twriter.setCustomProperty( 'pageBreak', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { label } );\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakui\n */\n\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';\nimport pageBreakIcon from '../theme/icons/pagebreak.svg';\n\n/**\n * The page break UI plugin.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class PageBreakUI extends Plugin {\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Add pageBreak button to feature components.\n\t\teditor.ui.componentFactory.add( 'pageBreak', locale => {\n\t\t\tconst command = editor.commands.get( 'pageBreak' );\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Page break' ),\n\t\t\t\ticon: pageBreakIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'pageBreak' );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","export default \"\";","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/list\n */\n\nimport Matcher from '@ckeditor/ckeditor5-engine/src/view/matcher';\nimport UpcastWriter from '@ckeditor/ckeditor5-engine/src/view/upcastwriter';\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n *\t\t

    ...

    // Paragraph based list.\n *\t\t

    ...

    // Heading 1 based list.\n *\n * @param {module:engine/view/documentfragment~DocumentFragment} documentFragment The view structure to be transformed.\n * @param {String} stylesString Styles from which list-like elements styling will be extracted.\n */\nexport function transformListItemLikeElementsIntoLists( documentFragment, stylesString ) {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst writer = new UpcastWriter( documentFragment.document );\n\tconst itemLikeElements = findAllItemLikeElements( documentFragment, writer );\n\n\tif ( !itemLikeElements.length ) {\n\t\treturn;\n\t}\n\n\tlet currentList = null;\n\tlet currentIndentation = 1;\n\n\titemLikeElements.forEach( ( itemLikeElement, i ) => {\n\t\tconst isDifferentList = isNewListNeeded( itemLikeElements[ i - 1 ], itemLikeElement );\n\t\tconst previousItemLikeElement = isDifferentList ? null : itemLikeElements[ i - 1 ];\n\t\tconst indentationDifference = getIndentationDifference( previousItemLikeElement, itemLikeElement );\n\n\t\tif ( isDifferentList ) {\n\t\t\tcurrentList = null;\n\t\t\tcurrentIndentation = 1;\n\t\t}\n\n\t\tif ( !currentList || indentationDifference !== 0 ) {\n\t\t\tconst listStyle = detectListStyle( itemLikeElement, stylesString );\n\n\t\t\tif ( !currentList ) {\n\t\t\t\tcurrentList = insertNewEmptyList( listStyle, itemLikeElement.element, writer );\n\t\t\t} else if ( itemLikeElement.indent > currentIndentation ) {\n\t\t\t\tconst lastListItem = currentList.getChild( currentList.childCount - 1 );\n\t\t\t\tconst lastListItemChild = lastListItem.getChild( lastListItem.childCount - 1 );\n\n\t\t\t\tcurrentList = insertNewEmptyList( listStyle, lastListItemChild, writer );\n\n\t\t\t\tcurrentIndentation += 1;\n\t\t\t} else if ( itemLikeElement.indent < currentIndentation ) {\n\t\t\t\tconst differentIndentation = currentIndentation - itemLikeElement.indent;\n\n\t\t\t\tcurrentList = findParentListAtLevel( currentList, differentIndentation );\n\n\t\t\t\tcurrentIndentation = parseInt( itemLikeElement.indent );\n\t\t\t}\n\n\t\t\tif ( itemLikeElement.indent <= currentIndentation ) {\n\t\t\t\tif ( !currentList.is( 'element', listStyle.type ) ) {\n\t\t\t\t\tcurrentList = writer.rename( listStyle.type, currentList );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst listItem = transformElementIntoListItem( itemLikeElement.element, writer );\n\n\t\twriter.appendChild( listItem, currentList );\n\t} );\n}\n\n/**\n * Removes paragraph wrapping content inside a list item.\n *\n * @param {module:engine/view/documentfragment~DocumentFragment} documentFragment\n * @param {module:engine/view/upcastwriter~UpcastWriter} writer\n */\nexport function unwrapParagraphInListItem( documentFragment, writer ) {\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'li' ) ) {\n\t\t\t// Google Docs allows on single paragraph inside LI.\n\t\t\tconst firstChild = element.getChild( 0 );\n\n\t\t\tif ( firstChild && firstChild.is( 'element', 'p' ) ) {\n\t\t\t\twriter.unwrapElement( firstChild );\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Finds all list-like elements in a given document fragment.\n//\n// @param {module:engine/view/documentfragment~DocumentFragment} documentFragment Document fragment\n// in which to look for list-like nodes.\n// @param {module:engine/view/upcastwriter~UpcastWriter} writer\n// @returns {Array.} Array of found list-like items. Each item is an object containing:\n//\n//\t\t* {module:engine/src/view/element~Element} element List-like element.\n//\t\t* {Number} id List item id parsed from `mso-list` style (see `getListItemData()` function).\n//\t\t* {Number} order List item creation order parsed from `mso-list` style (see `getListItemData()` function).\n//\t\t* {Number} indent List item indentation level parsed from `mso-list` style (see `getListItemData()` function).\nfunction findAllItemLikeElements( documentFragment, writer ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\t// Matcher for finding list-like elements.\n\tconst itemLikeElementsMatcher = new Matcher( {\n\t\tname: /^p|h\\d+$/,\n\t\tstyles: {\n\t\t\t'mso-list': /.*/\n\t\t}\n\t} );\n\n\tconst itemLikeElements = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && itemLikeElementsMatcher.match( value.item ) ) {\n\t\t\tconst itemData = getListItemData( value.item );\n\n\t\t\titemLikeElements.push( {\n\t\t\t\telement: value.item,\n\t\t\t\tid: itemData.id,\n\t\t\t\torder: itemData.order,\n\t\t\t\tindent: itemData.indent\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn itemLikeElements;\n}\n\n// Extracts list item style from the provided CSS.\n//\n// List item style is extracted from CSS stylesheet. Each list with its specific style attribute\n// value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n//\n// \t\t@list l1:level1 { ... }\n//\n// It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n// is not defined it means default `decimal` numbering.\n//\n// Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n// and will be removed during CSS parsing.\n//\n// @param {Object} listLikeItem List-like item for which list style will be searched for. Usually\n// a result of `findAllItemLikeElements()` function.\n// @param {String} stylesString CSS stylesheet.\n// @returns {Object} result\n// @returns {String} result.type List type, could be `ul` or `ol`.\n// @returns {String} result.style List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n// directly from Word stylesheet without further processing and may be not compatible\n// with CSS `list-style-type` property accepted values.\nfunction detectListStyle( listLikeItem, stylesString ) {\n\tconst listStyleRegexp = new RegExp( `@list l${ listLikeItem.id }:level${ listLikeItem.indent }\\\\s*({[^}]*)`, 'gi' );\n\tconst listStyleTypeRegex = /mso-level-number-format:([^;]*);/gi;\n\n\tconst listStyleMatch = listStyleRegexp.exec( stylesString );\n\n\tlet listStyleType = 'decimal'; // Decimal is default one.\n\tif ( listStyleMatch && listStyleMatch[ 1 ] ) {\n\t\tconst listStyleTypeMatch = listStyleTypeRegex.exec( listStyleMatch[ 1 ] );\n\n\t\tif ( listStyleTypeMatch && listStyleTypeMatch[ 1 ] ) {\n\t\t\tlistStyleType = listStyleTypeMatch[ 1 ].trim();\n\t\t}\n\t}\n\n\treturn {\n\t\ttype: listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul',\n\t\tstyle: listStyleType\n\t};\n}\n\n// Creates empty list of a given type and inserts it after a specified element.\n//\n// @param {Object} listStyle List style object which determines the type of newly created list.\n// Usually a result of `detectListStyle()` function.\n// @param {module:engine/view/element~Element} element Element after which list is inserted.\n// @param {module:engine/view/upcastwriter~UpcastWriter} writer\n// @returns {module:engine/view/element~Element} Newly created list element.\n\nfunction insertNewEmptyList( listStyle, element, writer ) {\n\tconst parent = element.parent;\n\tconst list = writer.createElement( listStyle.type );\n\tconst position = parent.getChildIndex( element ) + 1;\n\n\twriter.insertChild( position, list, parent );\n\n\treturn list;\n}\n\n// Transforms given element into a semantic list item. As the function operates on a provided\n// {module:engine/src/view/element~Element element} it will modify the view structure to which this element belongs.\n//\n// @param {module:engine/view/element~Element} element Element which will be transformed into list item.\n// @param {module:engine/view/upcastwriter~UpcastWriter} writer\n// @returns {module:engine/view/element~Element} New element to which the given one was transformed. It is\n// inserted in place of the old element (the reference to the old element is lost due to renaming).\nfunction transformElementIntoListItem( element, writer ) {\n\tremoveBulletElement( element, writer );\n\n\treturn writer.rename( 'li', element );\n}\n\n// Extracts list item information from Word specific list-like element style:\n//\n//\t\t`style=\"mso-list:l1 level1 lfo1\"`\n//\n// where:\n//\n//\t\t* `l1` is a list id (however it does not mean this is a continuous list - see #43),\n//\t\t* `level1` is a list item indentation level,\n//\t\t* `lfo1` is a list insertion order in a document.\n//\n// @param {module:engine/view/element~Element} element Element from which style data is extracted.\n// @returns {Object} result\n// @returns {Number} result.id Parent list id.\n// @returns {Number} result.order List item creation order.\n// @returns {Number} result.indent List item indentation level.\nfunction getListItemData( element ) {\n\tconst data = {};\n\tconst listStyle = element.getStyle( 'mso-list' );\n\n\tif ( listStyle ) {\n\t\tconst idMatch = listStyle.match( /(^|\\s+)l(\\d+)/i );\n\t\tconst orderMatch = listStyle.match( /\\s*lfo(\\d+)/i );\n\t\tconst indentMatch = listStyle.match( /\\s*level(\\d+)/i );\n\n\t\tif ( idMatch && orderMatch && indentMatch ) {\n\t\t\tdata.id = idMatch[ 2 ];\n\t\t\tdata.order = orderMatch[ 1 ];\n\t\t\tdata.indent = indentMatch[ 1 ];\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// Removes span with a numbering/bullet from a given element.\n//\n// @param {module:engine/view/element~Element} element\n// @param {module:engine/view/upcastwriter~UpcastWriter} writer\nfunction removeBulletElement( element, writer ) {\n\t// Matcher for finding `span` elements holding lists numbering/bullets.\n\tconst bulletMatcher = new Matcher( {\n\t\tname: 'span',\n\t\tstyles: {\n\t\t\t'mso-list': 'Ignore'\n\t\t}\n\t} );\n\n\tconst range = writer.createRangeIn( element );\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && bulletMatcher.match( value.item ) ) {\n\t\t\twriter.remove( value.item );\n\t\t}\n\t}\n}\n\n// Whether previous and current item belongs to the same list. It is determined based on `item.id`\n// (extracted from `mso-list` style, see #getListItemData) and previous sibling of the current item.\n//\n// @param {Object} previousItem\n// @param {Object} currentItem\n// @returns {Boolean}\nfunction isNewListNeeded( previousItem, currentItem ) {\n\tif ( !previousItem ) {\n\t\treturn true;\n\t}\n\n\tif ( previousItem.id !== currentItem.id ) {\n\t\treturn true;\n\t}\n\n\tconst previousSibling = currentItem.element.previousSibling;\n\n\tif ( !previousSibling ) {\n\t\treturn true;\n\t}\n\n\t// Even with the same id the list does not have to be continuous (#43).\n\treturn !isList( previousSibling );\n}\n\nfunction isList( element ) {\n\treturn element.is( 'element', 'ol' ) || element.is( 'element', 'ul' );\n}\n\n// Calculates the indentation difference between two given list items (based on indent attribute\n// extracted from `mso-list` style, see #getListItemData).\n//\n// @param {Object} previousItem\n// @param {Object} currentItem\n// @returns {Number}\nfunction getIndentationDifference( previousItem, currentItem ) {\n\treturn previousItem ? currentItem.indent - previousItem.indent : currentItem.indent - 1;\n}\n\n// Finds parent list element (ul/ol) of a given list element with indentation level lower by a given value.\n//\n// @param {module:engine/view/element~Element} listElement List element from which to start looking for a parent list.\n// @param {Number} indentationDifference Indentation difference between lists.\n// @returns {module:engine/view/element~Element} Found list element with indentation level lower by a given value.\nfunction findParentListAtLevel( listElement, indentationDifference ) {\n\tconst ancestors = listElement.getAncestors( { parentFirst: true } );\n\n\tlet parentList = null;\n\tlet levelChange = 0;\n\n\tfor ( const ancestor of ancestors ) {\n\t\tif ( ancestor.name === 'ul' || ancestor.name === 'ol' ) {\n\t\t\tlevelChange++;\n\t\t}\n\n\t\tif ( levelChange === indentationDifference ) {\n\t\t\tparentList = ancestor;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parentList;\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/googledocsnormalizer\n */\n\nimport removeBoldWrapper from '../filters/removeboldwrapper';\nimport { unwrapParagraphInListItem } from '../filters/list';\nimport UpcastWriter from '@ckeditor/ckeditor5-engine/src/view/upcastwriter';\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n\n/**\n * Normalizer for the content pasted from Google Docs.\n *\n * @implements module:paste-from-office/normalizer~Normalizer\n */\nexport default class GoogleDocsNormalizer {\n\t/**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param {module:engine/view/document~Document} document View document.\n\t */\n\tconstructor( document ) {\n\t\t/**\n\t\t * @readonly\n\t\t * @type {module:engine/view/document~Document}\n\t\t */\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tisActive( htmlString ) {\n\t\treturn googleDocsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\texecute( data ) {\n\t\tconst writer = new UpcastWriter( this.document );\n\n\t\tremoveBoldWrapper( data.content, writer );\n\t\tunwrapParagraphInListItem( data.content, writer );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removeboldwrapper\n */\n\n/**\n * Removes `` tag wrapper added by Google Docs to a copied content.\n *\n * @param {module:engine/view/documentfragment~DocumentFragment} documentFragment element `data.content` obtained from clipboard\n * @param {module:engine/view/upcastwriter~UpcastWriter} writer\n */\nexport default function removeBoldWrapper( documentFragment, writer ) {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'b' ) && child.getStyle( 'font-weight' ) === 'normal' ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/space\n */\n\n/**\n * Replaces last space preceding elements closing tag with ` `. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~DomConverter#_processDataFromDomText}).\n * This method also takes into account Word specific `` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param {String} htmlString HTML string in which spacing should be normalized.\n * @returns {String} Input HTML with spaces normalized.\n */\nexport function normalizeSpacing( htmlString ) {\n\t// Run normalizeSafariSpaceSpans() two times to cover nested spans.\n\treturn normalizeSafariSpaceSpans( normalizeSafariSpaceSpans( htmlString ) )\n\t\t// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n\t\t.replace( /([\\s]*?)[\\r\\n]+(\\s*<\\/span>)/g, '$1$2' )\n\t\t.replace( /<\\/span>/g, '' )\n\t\t.replace( / <\\//g, '\\u00A0<\\/o:p>/g, '\\u00A0' )\n\t\t// Remove block filler from empty paragraph. Safari uses \\u00A0 instead of  .\n\t\t.replace( /( |\\u00A0)<\\/o:p>/g, '' )\n\t\t// Remove all whitespaces when they contain any \\r or \\n.\n\t\t.replace( />(\\s*[\\r\\n]\\s*)<' );\n}\n\n/**\n * Normalizes spacing in special Word `spacerun spans` (`\\s+`) by replacing\n * all spaces with `  ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~DomConverter#_processDataFromDomText}).\n *\n * @param {Document} htmlDocument Native `Document` object in which spacing should be normalized.\n */\nexport function normalizeSpacerunSpans( htmlDocument ) {\n\thtmlDocument.querySelectorAll( 'span[style*=spacerun]' ).forEach( el => {\n\t\tconst innerTextLength = el.innerText.length || 0;\n\n\t\tel.innerHTML = Array( innerTextLength + 1 ).join( '\\u00A0 ' ).substr( 0, innerTextLength );\n\t} );\n}\n\n// Normalizes specific spacing generated by Safari when content pasted from Word (` `)\n// by replacing all spaces sequences longer than 1 space with `  ` pairs. This prevents spaces from being removed during\n// further DOM/View processing (see especially {@link module:engine/view/domconverter~DomConverter#_processDataFromDomText}).\n//\n// This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n// regular spaces /   sequence for replacement.\n//\n// @param {String} htmlString HTML string in which spacing should be normalized\n// @returns {String} Input HTML with spaces normalized.\nfunction normalizeSafariSpaceSpans( htmlString ) {\n\treturn htmlString.replace( /(\\s+)<\\/span>/g, ( fullMatch, spaces ) => {\n\t\treturn spaces.length === 1 ? ' ' : Array( spaces.length + 1 ).join( '\\u00A0 ' ).substr( 0, spaces.length );\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/parse\n */\n\n/* globals DOMParser */\n\nimport DomConverter from '@ckeditor/ckeditor5-engine/src/view/domconverter';\nimport ViewDocument from '@ckeditor/ckeditor5-engine/src/view/document';\n\nimport { normalizeSpacing, normalizeSpacerunSpans } from './space';\n\n/**\n * Parses provided HTML extracting contents of `` and ` - - + - editor.editing.view.document.on("keyup", (evt, data) => { - socket.emit("message", editor.getData()); - socket.emit("cursor position", {position: editor.model.document.selection.getFirstPosition().path, user: "{{auth()->user()->name}}"}) - }); + + + + + -@endsection +@endsection \ No newline at end of file diff --git a/server/routes/web.php b/server/routes/web.php index 09b4caa..4609563 100644 --- a/server/routes/web.php +++ b/server/routes/web.php @@ -18,7 +18,8 @@ }); Route::middleware(['auth:sanctum', 'verified', 'document'])->group(function () { - Route::get('/dashboard', \App\Http\Livewire\Dashboard::class)->name('dashboard'); + Route::get('/dashboard', \App\Http\Livewire\Dashboard::class) + ->name('dashboard'); Route::get('/document/{documentId}', \App\Http\Livewire\Document\Edit::class) ->name('showDocument'); @@ -26,5 +27,7 @@ Route::get('/folder/{folderId}', \App\Http\Livewire\Folder\ListContents::class) ->name('listFolderContents'); - + Route::post('/document/{documentId}/save', + ['\App\Http\Controllers\API\DocumentController', 'save']) + ->name('saveDocument'); }); \ No newline at end of file diff --git a/socket/config.js b/socket/config.js deleted file mode 100644 index 566ed9b..0000000 --- a/socket/config.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-env browser */ - -const isDeployed = location.hostname === 'yjs.website' - -if (!isDeployed) { - console.log('%cYjs: Start your local websocket server by running %c`npm run websocket-server`', 'color:blue', 'color: grey; font-weight: bold') -} - -export const serverAddress = isDeployed ? 'wss://api.yjs.website' : 'ws://localhost:1234' diff --git a/todo b/todo new file mode 100644 index 0000000..7bab243 --- /dev/null +++ b/todo @@ -0,0 +1,11 @@ +- Userlar link aldığında direkt erişebiliyor, paylaşım sistemi ayarlanacak +- Sağ tık menüsü konulup silme, paylaşma falan eklenecek +- Websocket auth öğrensem iyi olur. +- PDF sistemi eklenecek +- SS alma sistemi eklenecek + + +// yapılanlar +- Document save sistemi eklenecek (ajax ile) -- yazıldı test edilecek // 1 kere test edildi +- Soket sistemi userlar arasında ayrıştırılacak. -- yazıldı test edilecek +- Collab eden userlar listelenecek.