From be4e7f32792156990ba7daaac27135f9700ea705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukan=20=C3=96ks=C3=BCz?= Date: Sun, 7 Mar 2021 19:29:11 +0300 Subject: [PATCH] Search system, sharing system, context menu added. All ideas implemented and project finished. Maybe bugfixes will come. --- editor/dist/quill.bundle.js | 2 +- editor/dist/quill.bundle.js.map | 2 +- editor/quill.js | 6 +- .../Controllers/API/DocumentController.php | 9 ++ server/app/Http/Livewire/Breadcrumb.php | 27 +--- server/app/Http/Livewire/Document/Create.php | 35 +---- server/app/Http/Livewire/Document/Edit.php | 3 - server/app/Http/Livewire/Document/Share.php | 65 +++++++++ server/app/Http/Livewire/Document/Show.php | 9 +- server/app/Http/Livewire/Folder/Create.php | 74 ---------- .../app/Http/Livewire/Folder/ListContents.php | 55 -------- server/app/Http/Livewire/Folder/Show.php | 32 ----- server/app/Http/Livewire/Search.php | 25 ++++ .../Middleware/CheckIfUserOwnsDocument.php | 10 -- server/app/Models/Document.php | 7 +- server/app/Models/Folder.php | 24 ---- server/app/Models/User.php | 5 - ...2020_11_08_162644_create_folders_table.php | 32 ----- ..._11_08_214254_create_folder_user_table.php | 34 ----- ...20_11_08_255555_create_documents_table.php | 2 - ...11_194033_add_columns_to_folders_table.php | 34 ----- server/public/editor/quill.bundle.js | 2 +- .../views/livewire/breadcrumb.blade.php | 15 -- .../views/livewire/dashboard.blade.php | 53 ++++++- .../views/livewire/document/edit.blade.php | 2 +- .../views/livewire/document/share.blade.php | 62 ++++++++ .../views/livewire/document/show.blade.php | 23 ++- .../resources/views/livewire/search.blade.php | 65 +++++++++ .../views/navigation-dropdown.blade.php | 8 +- server/resources/views/welcome.blade.php | 132 ------------------ server/routes/web.php | 22 ++- socket/Procfile | 1 - socket/socket.js | 4 + todo | 15 +- 34 files changed, 346 insertions(+), 550 deletions(-) create mode 100644 server/app/Http/Livewire/Document/Share.php delete mode 100644 server/app/Http/Livewire/Folder/Create.php delete mode 100644 server/app/Http/Livewire/Folder/ListContents.php delete mode 100644 server/app/Http/Livewire/Folder/Show.php create mode 100644 server/app/Http/Livewire/Search.php delete mode 100644 server/app/Models/Folder.php delete mode 100644 server/database/migrations/2020_11_08_162644_create_folders_table.php delete mode 100644 server/database/migrations/2020_11_08_214254_create_folder_user_table.php delete mode 100644 server/database/migrations/2020_11_11_194033_add_columns_to_folders_table.php create mode 100644 server/resources/views/livewire/document/share.blade.php create mode 100644 server/resources/views/livewire/search.blade.php delete mode 100644 server/resources/views/welcome.blade.php delete mode 100644 socket/Procfile diff --git a/editor/dist/quill.bundle.js b/editor/dist/quill.bundle.js index 3565d2f..0b5d2ef 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")},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,avatar:divergent_avatar}),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"}),Lo(".download-pdf",{content:"PDF Olarak Kaydet"});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(()=>{document.hasFocus()&&o()},8e3),s=!0)}))})}]); +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,avatar:divergent_avatar}),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"}),Lo(".download-pdf",{content:"PDF Olarak Kaydet"});let o=()=>{$.ajax(saveRoute,{type:"POST",data:{_token:csrfToken,data:$(".ql-editor").html()},success:function(e,t,n){console.log("status: "+t+", data: "+e)},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 5b4b1c8..5e396dd 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","documentUUID","getText","editor","editorInstance","providerInstance","divergent_name","divergent_color","avatar","divergent_avatar","save","ajax","saveRoute","csrfToken","success","xhr","jqXhr","textStatus","errorMessage","saveLoop","checker","keypress","hasFocus"],"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 avatar: divergent_avatar\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 tippy('.download-pdf', {\n content: 'PDF Olarak Kaydet'\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 if (document.hasFocus()) {\n save()\n }\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 +{"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","avatar","divergent_avatar","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 avatar: divergent_avatar\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 tippy('.download-pdf', {\n content: 'PDF Olarak Kaydet'\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/quill.js b/editor/quill.js index aebd768..537f764 100644 --- a/editor/quill.js +++ b/editor/quill.js @@ -105,7 +105,7 @@ window.addEventListener('load', () => { 'data': $(".ql-editor").html() }, success: function (data, status, xhr) { - //console.log('status: ' + status + ', data: ' + data); + console.log('status: ' + status + ', data: ' + data); }, error: function (jqXhr, textStatus, errorMessage) { clearInterval(saveLoop); @@ -124,9 +124,7 @@ window.addEventListener('load', () => { if (!checker) { clearInterval(saveLoop) saveLoop = setInterval(() => { - if (document.hasFocus()) { - save() - } + save() }, 8000) checker = true } diff --git a/server/app/Http/Controllers/API/DocumentController.php b/server/app/Http/Controllers/API/DocumentController.php index bdd74fc..dd8729c 100644 --- a/server/app/Http/Controllers/API/DocumentController.php +++ b/server/app/Http/Controllers/API/DocumentController.php @@ -18,4 +18,13 @@ public function save($documentId, Request $request) return response()->json(['message' => 'Success', 'state' => 'ok']); } + + public function delete($documentId) + { + $document = Document::where('id', $documentId)->first(); + + $document->delete(); + + return response()->json(['message' => 'Success', 'state' => 'ok']); + } } diff --git a/server/app/Http/Livewire/Breadcrumb.php b/server/app/Http/Livewire/Breadcrumb.php index 5f3af1e..8c2717c 100644 --- a/server/app/Http/Livewire/Breadcrumb.php +++ b/server/app/Http/Livewire/Breadcrumb.php @@ -2,41 +2,16 @@ namespace App\Http\Livewire; -use App\Models\Folder; use Livewire\Component; class Breadcrumb extends Component { public $documentId; - public $folderId; public $elements; - public function findIterativeFolders() + public function mount($documentId) { - $this->elements = []; - if ($this->folderId != null) { - $folder = Folder::find($this->folderId); - array_push($this->elements, $folder); - - if (isset($folder->parent_folder_id)) - { - while($folder->parent_folder_id != null) - { - $folder = Folder::find($folder->parent_folder_id); - array_unshift($this->elements, $folder); - } - } - } - - return $this->elements; - } - - public function mount($documentId, $folderId) - { - $this->findIterativeFolders(); - $this->documentId = $documentId; - $this->folderId = $folderId; } public function render() diff --git a/server/app/Http/Livewire/Document/Create.php b/server/app/Http/Livewire/Document/Create.php index 036231e..744dee6 100644 --- a/server/app/Http/Livewire/Document/Create.php +++ b/server/app/Http/Livewire/Document/Create.php @@ -4,7 +4,6 @@ use Livewire\Component; use App\Models\Document; -use App\Models\Folder; class Create extends Component { @@ -12,7 +11,6 @@ class Create extends Component public $name = ""; public $message = ""; public $emitTo; - public $folderId; public function confirmCreating() { @@ -22,18 +20,10 @@ public function confirmCreating() public function createNewDocument() { try { - if($this->folderId == null) - { - $document = Document::create([ - 'name' => $this->name, - ]); - } else { - $document = Document::create([ - 'name' => $this->name, - 'folder_id' => $this->folderId - ]); - } - + $document = Document::create([ + 'name' => $this->name, + ]); + $document->user()->attach(auth()->user()); } catch (\Throwable $e) @@ -42,14 +32,7 @@ public function createNewDocument() } $this->emitTo($this->emitTo, 'flashMessage', $this->name . " isimli doküman başarıyla eklendi!"); - if ($this->folderId == null) - { - $documents = Document::where('folder_id', null)->orderBy('updated_at', 'DESC')->get(); - } - else - { - $documents = Folder::findOrFail($this->folderId)->document()->orderBy('updated_at', 'DESC')->get(); - } + $documents = Document::orderBy('updated_at', 'DESC')->get(); $this->emitTo($this->emitTo, 'emptyDecrement'); @@ -58,19 +41,13 @@ public function createNewDocument() $this->name = ""; } - public function mount($emitTo, $folderId) + public function mount($emitTo) { - $this->folderId = $folderId; - $this->emitTo = $emitTo; if(!$emitTo) { $this->emitTo = 'dashboard'; } - - if(!$folderId) { - $this->folderId = null; - } } public function render() diff --git a/server/app/Http/Livewire/Document/Edit.php b/server/app/Http/Livewire/Document/Edit.php index 0ee540b..7af02bf 100644 --- a/server/app/Http/Livewire/Document/Edit.php +++ b/server/app/Http/Livewire/Document/Edit.php @@ -8,14 +8,11 @@ class Edit extends Component { public $document; - public $folderId; public $joining_key; public function mount($documentId) { $this->document = Document::findOrFail($documentId); - - $this->folderId = $this->document->folder_id; $to_be_hashed = env('SOCKET_SECRET') . "||" . $documentId . "||" . auth()->user()->id; $this->joining_key = md5($to_be_hashed); diff --git a/server/app/Http/Livewire/Document/Share.php b/server/app/Http/Livewire/Document/Share.php new file mode 100644 index 0000000..7f4befc --- /dev/null +++ b/server/app/Http/Livewire/Document/Share.php @@ -0,0 +1,65 @@ +users = $this->document->user()->get(); + } + + public function share() + { + $attachUser = \App\Models\User::where('email', $this->email)->first(); + + if ($attachUser == null) { + $this->flashMessage("Bu kullanıcı sistemde bulunmadığından kendisini yetkilendiremezsiniz."); + return; + } else { + $this->flashMessage("Başarıyla paylaşım eklendi."); + } + $this->document->user()->attach($attachUser); + $this->newUserAdded(); + } + + public function deleteShare($uid) + { + $deletedUser = \App\Models\User::where('id', $uid)->first(); + $this->document->user()->detach($deletedUser); + $this->flashMessage("Kullanıcı paylaşımı kaldırıldı."); + $this->newUserAdded(); + } + + public function redirectToDocument() + { + return redirect()->to(route('showDocument', $this->document->id)); + } + + public function flashMessage($message) + { + $this->message = $message; + } + + public function mount() + { + $this->document = \App\Models\Document::where('id', request()->documentId)->first(); + $this->users = $this->document->user()->get(); + $this->message = ""; + } + + public function render() + { + return view('livewire.document.share'); + } +} diff --git a/server/app/Http/Livewire/Document/Show.php b/server/app/Http/Livewire/Document/Show.php index ab70a01..551ac31 100644 --- a/server/app/Http/Livewire/Document/Show.php +++ b/server/app/Http/Livewire/Document/Show.php @@ -10,21 +10,24 @@ class Show extends Component protected $listeners = ['newDocumentCreated']; - public function newDocumentCreated($documents) + public function newDocumentCreated() { $this->documents = auth()->user()->document() ->orderBy('updated_at', 'DESC') - ->where('folder_id', null) ->get(); } + public function share() + { + + } + public function mount($documents) { if (!$documents) { $this->documents = auth()->user()->document() ->orderBy('updated_at', 'DESC') - ->where('folder_id', null) ->get(); } else { $this->documents = $documents; diff --git a/server/app/Http/Livewire/Folder/Create.php b/server/app/Http/Livewire/Folder/Create.php deleted file mode 100644 index cef23e3..0000000 --- a/server/app/Http/Livewire/Folder/Create.php +++ /dev/null @@ -1,74 +0,0 @@ -isCreatingFolder = true; - } - - public function createNewFolder() - { - try { - if ($this->folderId == null) { - $folder = Folder::create([ - 'name' => $this->name - ]); - } else { - $folder = Folder::create([ - 'name' => $this->name, - 'parent_folder_id' => $this->folderId - ]); - } - - - $folder->user()->attach(auth()->user()); - } catch (\Throwable $e) { - $this->emitTo($this->emitTo, 'flashMessage', "Oluşturma işlemi başarısız oldu!"); - } - $this->emitTo($this->emitTo, 'flashMessage', $this->name . " isimli klasör başarıyla eklendi!"); - - if ($this->folderId == null) { - $folders = Folder::where('parent_folder_id', null)->orderBy('updated_at', 'DESC')->get(); - } else { - $folders = Folder::where('parent_folder_id', $this->folderId)->orderBy('updated_at', 'DESC')->get(); - } - - $this->emitTo($this->emitTo, 'emptyDecrement'); - - $this->emitTo('folder.show', 'newFolderCreated', $folders, $this->folderId); - $this->isCreatingFolder = false; - $this->name = ""; - } - - public function mount($emitTo, $folderId) - { - $this->folderId = $folderId; - - $this->emitTo = $emitTo; - - if(!$emitTo) { - $this->emitTo = 'dashboard'; - } - - if(!$folderId) { - $this->folderId = null; - } - } - - public function render() - { - return view('livewire.folder.create'); - } -} \ No newline at end of file diff --git a/server/app/Http/Livewire/Folder/ListContents.php b/server/app/Http/Livewire/Folder/ListContents.php deleted file mode 100644 index 1a53a73..0000000 --- a/server/app/Http/Livewire/Folder/ListContents.php +++ /dev/null @@ -1,55 +0,0 @@ -message = $message; - } - - public function emptyChecker() - { - if(count($this->documents) == 0) - { - $this->empty++; - } - - if(count($this->subfolders) == 0) - { - $this->empty++; - } - } - - public function emptyDecrement() - { - $this->empty--; - } - - public function mount($folderId) - { - $this->message = ""; - $this->folderId = $folderId; - $this->documents = Folder::findOrFail($folderId)->document()->orderBy('updated_at', 'DESC')->get(); - $this->subfolders = Folder::where('parent_folder_id', $folderId)->orderBy('updated_at', 'DESC')->get(); - - $this->emptyChecker(); - } - - public function render() - { - return view('livewire.folder.list-contents'); - } -} diff --git a/server/app/Http/Livewire/Folder/Show.php b/server/app/Http/Livewire/Folder/Show.php deleted file mode 100644 index 7bb1471..0000000 --- a/server/app/Http/Livewire/Folder/Show.php +++ /dev/null @@ -1,32 +0,0 @@ -folders = auth()->user()->folder()->where('parent_folder_id', null)->orderBy('updated_at', 'DESC')->get(); - } - - public function mount($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(); - } - } - - public function render() - { - return view('livewire.folder.show'); - } -} diff --git a/server/app/Http/Livewire/Search.php b/server/app/Http/Livewire/Search.php new file mode 100644 index 0000000..d69890c --- /dev/null +++ b/server/app/Http/Livewire/Search.php @@ -0,0 +1,25 @@ +searchQuery = request()->q; + $this->searchResults = auth()->user()->document()->getQuery() + ->where('name', 'LIKE', "%{$this->searchQuery}%") + ->orWhere('content', 'LIKE', "%{$this->searchQuery}%") + ->get(); + } + + public function render() + { + return view('livewire.search'); + } +} diff --git a/server/app/Http/Middleware/CheckIfUserOwnsDocument.php b/server/app/Http/Middleware/CheckIfUserOwnsDocument.php index 4398c89..4434968 100644 --- a/server/app/Http/Middleware/CheckIfUserOwnsDocument.php +++ b/server/app/Http/Middleware/CheckIfUserOwnsDocument.php @@ -25,16 +25,6 @@ public function handle(Request $request, Closure $next) return redirect(route('dashboard')); } } - - $folderId = $request->route('folderId'); - if ($folderId) - { - if (Auth::user()->folder()->find($folderId) === null) - { - return redirect(route('dashboard')); - } - } - return $next($request); } } diff --git a/server/app/Models/Document.php b/server/app/Models/Document.php index 58e3e60..663689e 100644 --- a/server/app/Models/Document.php +++ b/server/app/Models/Document.php @@ -11,16 +11,11 @@ class Document extends Model use HasFactory, Uuids; protected $fillable = [ - 'name', 'content', 'folder_id' + 'name', 'content' ]; public function user() { return $this->belongsToMany(User::class); } - - public function folder() - { - return $this->belongsTo(Folder::class); - } } diff --git a/server/app/Models/Folder.php b/server/app/Models/Folder.php deleted file mode 100644 index b624e01..0000000 --- a/server/app/Models/Folder.php +++ /dev/null @@ -1,24 +0,0 @@ -belongsToMany(User::class); - } - - public function document() - { - return $this->hasMany(Document::class); - } -} diff --git a/server/app/Models/User.php b/server/app/Models/User.php index 57e5ca8..81f93df 100644 --- a/server/app/Models/User.php +++ b/server/app/Models/User.php @@ -59,11 +59,6 @@ class User extends Authenticatable 'profile_photo_url', ]; - public function folder() - { - return $this->belongsToMany(Folder::class); - } - public function document() { return $this->belongsToMany(Document::class); diff --git a/server/database/migrations/2020_11_08_162644_create_folders_table.php b/server/database/migrations/2020_11_08_162644_create_folders_table.php deleted file mode 100644 index c74d18c..0000000 --- a/server/database/migrations/2020_11_08_162644_create_folders_table.php +++ /dev/null @@ -1,32 +0,0 @@ -uuid('id')->primary(); - $table->string('name'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('folders'); - } -} diff --git a/server/database/migrations/2020_11_08_214254_create_folder_user_table.php b/server/database/migrations/2020_11_08_214254_create_folder_user_table.php deleted file mode 100644 index 01413da..0000000 --- a/server/database/migrations/2020_11_08_214254_create_folder_user_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->uuid('folder_id'); - $table->foreignId('user_id'); - $table->foreign('folder_id')->on('folders')->references('id')->cascadeOnDelete(); - $table->foreign('user_id')->on('users')->references('id')->cascadeOnDelete(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('folder_user'); - } -} diff --git a/server/database/migrations/2020_11_08_255555_create_documents_table.php b/server/database/migrations/2020_11_08_255555_create_documents_table.php index 81ecce3..9681495 100644 --- a/server/database/migrations/2020_11_08_255555_create_documents_table.php +++ b/server/database/migrations/2020_11_08_255555_create_documents_table.php @@ -17,8 +17,6 @@ public function up() $table->uuid('id')->primary(); $table->string('name'); $table->longText('content')->nullable(); - $table->uuid('folder_id')->nullable(); - $table->foreign('folder_id')->references('id')->on('folders')->cascadeOnDelete(); $table->timestamps(); }); } diff --git a/server/database/migrations/2020_11_11_194033_add_columns_to_folders_table.php b/server/database/migrations/2020_11_11_194033_add_columns_to_folders_table.php deleted file mode 100644 index 92e7429..0000000 --- a/server/database/migrations/2020_11_11_194033_add_columns_to_folders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -uuid('parent_folder_id')->nullable(); - $table->foreign('parent_folder_id')->references('id')->on('folders')->cascadeOnDelete(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('folders', function (Blueprint $table) { - $table->dropForeign('folders_parent_folder_id_foreign'); - $table->dropColumn('parent_folder_id'); - }); - } -} diff --git a/server/public/editor/quill.bundle.js b/server/public/editor/quill.bundle.js index 3565d2f..0b5d2ef 100644 --- a/server/public/editor/quill.bundle.js +++ b/server/public/editor/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")},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,avatar:divergent_avatar}),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"}),Lo(".download-pdf",{content:"PDF Olarak Kaydet"});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(()=>{document.hasFocus()&&o()},8e3),s=!0)}))})}]); +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,avatar:divergent_avatar}),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"}),Lo(".download-pdf",{content:"PDF Olarak Kaydet"});let o=()=>{$.ajax(saveRoute,{type:"POST",data:{_token:csrfToken,data:$(".ql-editor").html()},success:function(e,t,n){console.log("status: "+t+", data: "+e)},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/resources/views/livewire/breadcrumb.blade.php b/server/resources/views/livewire/breadcrumb.blade.php index a2a57c0..21f1e0a 100644 --- a/server/resources/views/livewire/breadcrumb.blade.php +++ b/server/resources/views/livewire/breadcrumb.blade.php @@ -4,21 +4,6 @@
  • Pano
  • - @foreach ($elements as $key => $element) - @if ($key == array_key_last($elements) && $documentId == null) - @php - break; - @endphp - @endif -
  • - - - - {{ $element["name"] }} - -
  • - @endforeach @if ($documentId == null)
  • diff --git a/server/resources/views/livewire/dashboard.blade.php b/server/resources/views/livewire/dashboard.blade.php index 21a6eae..815448e 100644 --- a/server/resources/views/livewire/dashboard.blade.php +++ b/server/resources/views/livewire/dashboard.blade.php @@ -27,7 +27,58 @@
  • - +
    + +@section('scripts') + + + + + +@endsection \ No newline at end of file diff --git a/server/resources/views/livewire/document/edit.blade.php b/server/resources/views/livewire/document/edit.blade.php index 3055bb7..52b0cfe 100644 --- a/server/resources/views/livewire/document/edit.blade.php +++ b/server/resources/views/livewire/document/edit.blade.php @@ -1,6 +1,6 @@
    - +
    @endif diff --git a/server/resources/views/welcome.blade.php b/server/resources/views/welcome.blade.php deleted file mode 100644 index 8b1cf22..0000000 --- a/server/resources/views/welcome.blade.php +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - Collab Docs - - - - - - - - - - -
    - @if (Route::has('login')) - - @endif - -
    -
    - - - - - -
    - -
    -
    -
    - - -
    -
    - Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. -
    -
    -
    - -
    -
    - - -
    - -
    -
    - Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. -
    -
    -
    - -
    -
    - - -
    - -
    -
    - Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
    -
    -
    - -
    -
    - -
    Vibrant Ecosystem
    -
    - -
    -
    - Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - - Shop - - - - - - - - Sponsor - -
    -
    - -
    - Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) -
    -
    -
    -
    - - diff --git a/server/routes/web.php b/server/routes/web.php index 044e97f..cfe84c6 100644 --- a/server/routes/web.php +++ b/server/routes/web.php @@ -14,7 +14,11 @@ */ Route::get('/', function () { - return view('welcome'); + if (auth()->check()) { + return redirect()->route('dashboard'); + } else { + return redirect()->route('register'); + } }); Route::middleware(['auth:sanctum', 'verified', 'document'])->group(function () { @@ -24,14 +28,20 @@ Route::get('/document/{documentId}', \App\Http\Livewire\Document\Edit::class) ->name('showDocument'); + Route::get('/document/{documentId}/share', \App\Http\Livewire\Document\Share::class) + ->name('shareDocument'); + Route::get('/document/{documentId}/pdf', ['\App\Http\Controllers\Document\PDFController', 'renderAsHtml']) ->name('showDocumentAsPdf'); - - /*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'); - + + Route::get('/document/{documentId}/delete', + ['\App\Http\Controllers\API\DocumentController', 'delete']) + ->name('deleteDocument'); + + Route::get('/search', \App\Http\Livewire\Search::class) + ->name('search'); }); \ No newline at end of file diff --git a/socket/Procfile b/socket/Procfile deleted file mode 100644 index 5f618fe..0000000 --- a/socket/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: npm start diff --git a/socket/socket.js b/socket/socket.js index 577504a..bf2547e 100644 --- a/socket/socket.js +++ b/socket/socket.js @@ -1,5 +1,9 @@ /** * @type {any} + * + * COLLABORATIVE DOCUMENT EDITOR + * SOCKET SRV BY DIVERGENT + * */ const WebSocket = require('ws') const http = require('http') diff --git a/todo b/todo index d02291b..69f0f4e 100644 --- a/todo +++ b/todo @@ -1,14 +1,3 @@ -- 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. -- Arama - - -// 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. -- PDF sistemi eklenecek - // overengineering ideas -- SS alma sistemi eklenecek \ No newline at end of file +- SS alma sistemi eklenecek +- Websocket auth sistemi yazılmalı mı? \ No newline at end of file