@liascript/exporter
Version:
A generic exporter for LiaScript
1 lines • 96.6 kB
JavaScript
function t(t,e,r,n){Object.defineProperty(t,e,{get:r,set:n,enumerable:!0,configurable:!0})}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},r=e.parcelRequire55a5;r.register("5Owdb",(function(e,n){t(e.exports,"uint8_to_base64",(function(){return l})),t(e.exports,"base64_to_unit8",(function(){return a})),t(e.exports,"Sync",(function(){return u}));var s=r("2Xs1f"),i=r("j1TWg"),o=r("hYRq7"),c=r("dOAsX");function l(t){return(0,c.encode)(t)}function a(t){return(0,c.decode)(t)}function h(t=16){let e="";for(let r=0;r<t;r++)e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return e}class u{connect(t){this.room=t.room,this.course=t.course,this.password=t.password,this.isConnected=!0}destroy(){this.db.destroy(),this.cbConnection("disconnect",this.token),this.isConnected=!1}disconnect(){this.db.removePeer()}uniqueID(){return"string"==typeof this.room&&(this.room.startsWith('"')&&this.room.endsWith('"')||this.room.startsWith("'")&&this.room.endsWith("'"))?this.room:this.course&&this.room?JSON.stringify({course:this.course,room:this.room,pw:i.getHashCode(this.password||"")}):(console.warn("Sync: no uniqueID"),null)}sendToLia(t){this.cbRelay(t)}sync(t,e=null){this.cbConnection(t,e)}sendDisconnectError(t){this.sync("error",t)}sendConnect(){this.sync("connect",this.token),this.onConnect&&this.onConnect()}pubsubSend(t,e){var r;const n=JSON.stringify({topic:t,message:e}),s=new TextEncoder;this.broadcast(!1,s.encode(n)),this.replyOnReceive&&(null===(r=this.onReceive)||void 0===r||r.call(this,t,e))}pubsubReceive(t){try{var e;const r=(new TextDecoder).decode(t),n=JSON.parse(r);null===(e=this.onReceive)||void 0===e||e.call(this,n.topic,n.message)}catch(t){console.warn("Sync: pubsubReceive",t.message)}}broadcast(t,e){console.warn("broadcast needs to be implemented")}load(t,e){try{for(let r=0;r<t.length;r++){const n=document.createElement("script");n.async=!1,n.defer=!0,n.src=t[r],this.urlCounter++;let s=this;n.onload=function(){console.log("successfully loaded =>",t),s.urlCounter--,0==s.urlCounter&&e.init(!0)},n.onerror=function(r){console.warn("could not load =>",t,r),s.urlCounter=0,e.init(!1,`could not load => ${t}`)},document.head.appendChild(n)}}catch(t){console.error("load: ",t),e.init(!1,t.message)}}publish(t){switch(t.message.cmd){case"update":break;case"join":this.db.init(t.message.param),this.gossip();break;case"chat":this.db.addChatMessage(t.message.param);break;case"quiz":var e,r;"quiz"===(null===(e=t.track)||void 0===e?void 0:e[0][0])&&"id"===(null===(r=t.track)||void 0===r?void 0:r[1][0])?this.db.addQuiz(t.track[0][1],t.track[1][1],t.message.param):console.warn("SyncTX wrong event ->",t);break;case"survey":var n,s;"survey"===(null===(n=t.track)||void 0===n?void 0:n[0][0])&&"id"===(null===(s=t.track)||void 0===s?void 0:s[1][0])?this.db.addSurvey(t.track[0][1],t.track[1][1],t.message.param):console.warn("SyncTX wrong event ->",t);break;case"code":var i,o;"code"===(null===(i=t.track)||void 0===i?void 0:i[0][0])&&"id"===(null===(o=t.track)||void 0===o?void 0:o[1][0])?this.db.updateCode(t.track[0][1],t.track[1][1],t.message.param.j,t.message.param.msg):console.warn("SyncTX wrong event ->",t);break;case"codes":var c;if("code"===(null===(c=t.track)||void 0===c?void 0:c[0][0])&&1===t.track.length)for(let e=0;e<t.message.param.length;e++)for(let r=0;r<t.message.param[e].length;r++)this.db.initCode(t.track[0][1],e,r,t.message.param[e][r]);else console.warn("SyncTX wrong event ->",t);break;case"cursor":var l;"code"==(null===(l=t.track)||void 0===l?void 0:l[0][0])&&this.db.setCursor(t.track[0][1],t.message.param);break;case"broadcast":this.broadcast(!0,t.message.param);default:console.warn("SyncTX unknown command:",t.message)}}applyUpdate(t,e=!1){this.db.applyUpdate(t,e)}constructor(t,e,r,n,c=!1,l=!0){let a;(0,s.default)(this,"isConnected",!1),(0,s.default)(this,"replyOnReceive",!1);try{a=window.localStorage.getItem("lia-token"),a||(a=h(),window.localStorage.setItem("lia-token",a))}catch(t){console.warn("cannot write to localStorage"),a=h()}this.token=a,this.urlCounter=0,this.cbConnection=t,this.cbRelay=e,this.onConnect=r,this.onReceive=n,this.replyOnReceive=c;const u=this,d=function(t){let e=null;function r(){return 200*(t.db.getPeers().length+1)+(t.db.initialized?5e3:1e3)}function n(){if(t.isConnected)try{t.broadcast(!0,t.db.encode()),e=window.setTimeout(n,r())}catch(t){console.warn("Gossip error:",t),e=null}}return()=>{e&&window.clearTimeout(e),t.db.initialized?n():t.db.initPromise?t.db.initPromise.then(n):e=window.setTimeout(n,r())}}(u);this.gossip=d;const f=i.throttle((()=>{u.broadcast(!0,u.db.encode()),d()}),1e3);this.db=new(0,o.CRDT)(a,l?(t,e)=>{if(u.db){switch(e){case"cursor":this.sync("update",{cmd:"cursor",param:t});break;case"peer":this.sync("update",{cmd:"peer",param:t});break;case"code":this.sync("update",{cmd:"code",param:t});break;case"quiz":this.sync("update",{cmd:"quiz",param:t});break;case"survey":this.sync("update",{cmd:"survey",param:t});break;case"chat":this.sync("update",{cmd:"chat",param:t});break;case"exit":try{e=null,this.broadcast(!0,t),this.destroy()}catch(t){}break;default:console.warn("Sync unknown origin",e)}e&&f()}}:void 0)}}})),r.register("hYRq7",(function(e,n){t(e.exports,"CRDT",(function(){return u}));var s=r("2Xs1f"),i=r("dM3DM"),o=r("9a6qY"),c=r("j1TWg"),l=r("d8U9c");const a="peers",h="cursors";class u{init(t){return this.initPromise=new Promise((e=>{this.initState=t,this.length=Math.max(this.length,t.length);const r=this;this.doc.transact((()=>{for(let e=0;e<t.length;e++)r.initMap(this.quizzes,e,t[e].q),r.initMap(this.surveys,e,t[e].s),r.initText(e,t[e].c);r.peers.set(r.peerID,!0)}),this.peerID),this.registerCallbacks(),this.initialized=!0,e()})),this.initPromise}registerCallbacks(){this.peers.observe((t=>{const e=this.getPeers();this.callback(e,"peer")})),this.cursors.observe((t=>{const e=this.getPeers();this.callback(this.getCursors(e),"cursor")})),this.quizzes.on("change",(t=>{const e=this.getUpdates(this.quizzes,t);e&&this.callback(e,"quiz")})),this.surveys.on("change",(t=>{const e=this.getUpdates(this.surveys,t);e&&this.callback(e,"survey")})),this.chat.on("change",(t=>{const e=[];let r;for(let[n,s]of t)"add"===s.action&&(r=s.newValue,r.id=parseInt(n),e.push(r));e.length>0&&this.callback(e,"chat")})),this.codes.observeDeep((t=>{const e=new Set;for(const r of t){const n=r.currentTarget.keys();for(const r of n)try{const[t]=JSON.parse(r);e.add(t)}catch(t){}}e.size>0&&this.callback(this.getCode(e),"code")})),this.peers.set(this.peerID,!0)}encode(){return o.encodeStateAsUpdate(this.doc)}destroy(){this.doc.destroy()}applyUpdate(t,e=!1){this.doc.transact((()=>{e?(this.doc.destroy(),this.doc=new o.Doc,o.applyUpdate(this.doc,t),this.peers=this.doc.getMap(a),this.cursors=this.doc.getMap(h),this.codes=this.doc.getMap("c"),this.quizzes=new(0,l.YKeyValue)(this.doc.getArray("q")),this.surveys=new(0,l.YKeyValue)(this.doc.getArray("s")),this.chat=new(0,l.YKeyValue)(this.doc.getArray("chat")),this.init(this.initState)):o.applyUpdate(this.doc,t)}))}log(){console.warn("*********** PEERS ***********"),console.warn(this.peers.toJSON()),console.warn("*********** STATE ***********"),console.warn(this.doc.toJSON())}initMap(t,e,r){if(0===r.length)return;let n;for(let s=0;s<r.length;s++){n=t.get(this.id(e,s)),n||(n={});for(const t in r[s])n[t]=r[s][t];t.set(this.id(e,s),n)}}initText(t,e){if(0!==e.length)for(let r=0;r<e.length;r++)for(let n=0;n<e[r].length;n++)this.initCode(t,r,n,e[r][n])}diff(t){return o.encodeStateAsUpdate(this.doc,t)}getCode(t){let e=[];for(const r of t)e.push({id:r,data:this.getAllTexts(r)});return e}getCursors(t){const e=[],r=this.cursors.toJSON();for(let n of t)n!==this.peerID&&void 0!==r[n]&&e.push(r[n]);return e}getPeers(){const t=this.peers.toJSON();return t?Object.entries(t).filter((([t,e])=>e)).map((([t,e])=>t)):[]}removePeer(t){this.doc.transact((()=>{this.peers.set(t||this.peerID,!1)})),void 0===t&&this.callback(this.encode(),"exit")}id(t,e,r){return void 0===r?JSON.stringify([t,e]):JSON.stringify([t,e,r])}getMap(t,e,r){return this.doc.getMap(this.id(e,r))}getAllMaps(t){const e=[];for(let r=0;r<this.length;r++){let n=[];for(let e=0;t.has(this.id(r,e));e++)n.push(t.get(this.id(r,e)));e.push(n)}return e}getMaps(t,e){const r=[];for(let n=0;e.has(this.id(t,n));n++)r.push(e.get(this.id(t,n)));return r}getAllTexts(t){let e,r=[];for(let n=0;this.codes.has(this.id(t,n,0));n++){let s=[];for(let r=0;this.codes.has(this.id(t,n,r));r++)e=this.codes.get(this.id(t,n,r)),s.push((null==e?void 0:e.toString())||"");r.push(s)}return r}addQuiz(t,e,r){this.addRecord(this.quizzes,t,e,r)}addSurvey(t,e,r){this.addRecord(this.surveys,t,e,r)}addRecord(t,e,r,n){let s=t.get(this.id(e,r));s||(s={}),s[this.peerID]=n,t.set(this.id(e,r),s)}initCode(t,e,r,n){if(!this.codes.has(this.id(t,e,r))){const s=this.doc.clientID;this.doc.clientID=0;const i=new o.Text;i.insert(0,n),this.codes.set(this.id(t,e,r),i),this.doc.clientID=s}}addChatMessage(t){this.chat.set(""+Date.now(),{color:this.getColor(),message:t,user:this.peerID})}updateCode(t,e,r,n){this.codes.has(this.id(t,e,r))&&this.doc.transact((()=>{const s=this.codes.get(this.id(t,e,r));if(void 0!==s)for(let t of n)switch(t.action){case"insert":s.insert(t.index,t.content);break;case"remove":s.delete(t.index,t.content.length);break;default:console.warn("Sync code, unknown action ->",t)}}),"code")}getColor(){return this.color||(this.color=c.getColorFor(this.peerID)),this.color}setCursor(t,e){this.doc.transact((()=>{this.cursors.set(this.peerID,{id:this.peerID,section:t,project:e.project,file:e.file,state:e.state,color:this.getColor()})}),"cursor")}removeCursor(){this.cursors.delete(this.peerID)}getUpdates(t,e){const r=new Set,n=[];for(const[s,o]of e)switch(o.action){case"update":if(JSON.stringify(Object.keys(o.oldValue).sort())!==JSON.stringify(Object.keys(o.newValue).sort())){n.push([s,(0,i.default)({},o.oldValue,o.newValue)]);continue}case"add":try{const[t]=JSON.parse(s);r.add(t)}catch(t){}}const s=[];for(const e of r)s.push({id:e,data:this.getMaps(e,t)});for(const[e,r]of n)t.set(e,r);return s.length>0?s:null}constructor(t,e){(0,s.default)(this,"timestamp",Date.now()),(0,s.default)(this,"initialized",!1),(0,s.default)(this,"initPromise",null),this.doc=new o.Doc,this.callback=e||((t,e)=>{console.warn("SyncDB: no callback provided")}),this.length=0,this.peerID=t,this.peers=this.doc.getMap(a),this.cursors=this.doc.getMap(h),this.codes=this.doc.getMap("c"),this.quizzes=new(0,l.YKeyValue)(this.doc.getArray("q")),this.surveys=new(0,l.YKeyValue)(this.doc.getArray("s")),this.chat=new(0,l.YKeyValue)(this.doc.getArray("chat"))}}})),r.register("9a6qY",(function(n,s){t(n.exports,"Doc",(function(){return R})),t(n.exports,"Text",(function(){return Ee})),t(n.exports,"applyUpdate",(function(){return Y})),t(n.exports,"encodeStateAsUpdate",(function(){return X}));var i=r("dM3DM"),o=r("aQXMn"),c=r("ewMJf"),l=r("1WDbo"),a=r("bktFk"),h=r("l1iu4"),u=r("8fTKk"),d=r("4VypT"),f=r("jlSlF"),g=r("8BgnQ"),p=r("ggKo5"),w=r("cLlZH"),y=r("1efOZ"),m=r("3oYST"),b=(m=r("3oYST"),r("2JauM")),k=r("6RvfK"),_=r("8LIwu"),x=(r("fyQrk"),r("4XMSc"),r("hvB5G")),S=r("hxgBf");c.Observable;class D{constructor(t,e){this.clock=t,this.len=e}}class E{constructor(){this.clients=new Map}}const C=(t,e,r)=>e.clients.forEach(((e,n)=>{const s=t.doc.store.clients.get(n);for(let n=0;n<e.length;n++){const i=e[n];yt(t,s,i.clock,i.len,r)}})),v=(t,e)=>{const r=t.clients.get(e.client);return void 0!==r&&null!==((t,e)=>{let r=0,n=t.length-1;for(;r<=n;){const s=a.floor((r+n)/2),i=t[s],o=i.clock;if(o<=e){if(e<o+i.len)return s;r=s+1}else n=s-1}return null})(r,e.clock)},U=t=>{t.clients.forEach((t=>{let e,r;for(t.sort(((t,e)=>t.clock-e.clock)),e=1,r=1;e<t.length;e++){const n=t[r-1],s=t[e];n.clock+n.len>=s.clock?n.len=a.max(n.len,s.clock+s.len-n.clock):(r<e&&(t[r]=s),r++)}t.length=r}))},A=t=>{const e=new E;for(let r=0;r<t.length;r++)t[r].clients.forEach(((n,s)=>{if(!e.clients.has(s)){const i=n.slice();for(let e=r+1;e<t.length;e++)l.appendTo(i,t[e].clients.get(s)||[]);e.clients.set(s,i)}}));return U(e),e},I=(t,e,r,n)=>{h.setIfUndefined(t.clients,e,(()=>[])).push(new D(r,n))},T=()=>new E,O=(t,e)=>{u.writeVarUint(t.restEncoder,e.clients.size),l.from(e.clients.entries()).sort(((t,e)=>e[0]-t[0])).forEach((([e,r])=>{t.resetDsCurVal(),u.writeVarUint(t.restEncoder,e);const n=r.length;u.writeVarUint(t.restEncoder,n);for(let e=0;e<n;e++){const n=r[e];t.writeDsClock(n.clock),t.writeDsLen(n.len)}}))},M=t=>{const e=new E,r=d.readVarUint(t.restDecoder);for(let n=0;n<r;n++){t.resetDsCurVal();const r=d.readVarUint(t.restDecoder),n=d.readVarUint(t.restDecoder);if(n>0){const s=h.setIfUndefined(e.clients,r,(()=>[]));for(let e=0;e<n;e++)s.push(new D(t.readDsClock(),t.readDsLen()))}}return e},V=(t,e,r)=>{const n=new E,s=d.readVarUint(t.restDecoder);for(let i=0;i<s;i++){t.resetDsCurVal();const s=d.readVarUint(t.restDecoder),i=d.readVarUint(t.restDecoder),o=r.clients.get(s)||[],c=ht(r,s);for(let r=0;r<i;r++){const r=t.readDsClock(),i=r+t.readDsLen();if(r<c){c<i&&I(n,s,c,i-c);let t=dt(o,r),l=o[t];for(!l.deleted&&l.id.clock<r&&(o.splice(t+1,0,Ze(e,l,r-l.id.clock)),t++);t<o.length&&(l=o[t++],l.id.clock<i);)l.deleted||(i<l.id.clock+l.length&&o.splice(t,0,Ze(e,l,i-l.id.clock)),l.delete(e))}else I(n,s,r,i-r)}}if(n.clients.size>0){const t=new q;return u.writeVarUint(t.restEncoder,0),O(t,n),t.toUint8Array()}return null},N=f.uint32;class R extends c.Observable{load(){const t=this._item;null===t||this.shouldLoad||St(t.parent.doc,(t=>{t.subdocsLoaded.add(this)}),null,!0),this.shouldLoad=!0}getSubdocs(){return this.subdocs}getSubdocGuids(){return new Set(l.from(this.subdocs).map((t=>t.guid)))}transact(t,e=null){return St(this,t,e)}get(t,e=zt){const r=h.setIfUndefined(this.share,t,(()=>{const t=new e;return t._integrate(this,null),t})),n=r.constructor;if(e!==zt&&n!==e){if(n===zt){const n=new e;n._map=r._map,r._map.forEach((t=>{for(;null!==t;t=t.left)t.parent=n})),n._start=r._start;for(let t=n._start;null!==t;t=t.right)t.parent=n;return n._length=r._length,this.share.set(t,n),n._integrate(this,null),n}throw new Error(`Type with the name ${t} has already been defined with a different constructor`)}return r}getArray(t=""){return this.get(t,ce)}getText(t=""){return this.get(t,Ee)}getMap(t=""){return this.get(t,ae)}getXmlElement(t=""){return this.get(t,Ue)}getXmlFragment(t=""){return this.get(t,ve)}toJSON(){const t={};return this.share.forEach(((e,r)=>{t[r]=e.toJSON()})),t}destroy(){l.from(this.subdocs).forEach((t=>t.destroy()));const t=this._item;if(null!==t){this._item=null;const e=t.content;e.doc=new R((0,o.default)((0,i.default)({guid:this.guid},e.opts),{shouldLoad:!1})),e.doc._item=t,St(t.parent.doc,(r=>{const n=e.doc;t.deleted||r.subdocsAdded.add(n),r.subdocsRemoved.add(this)}),null,!0)}this.emit("destroyed",[!0]),this.emit("destroy",[this]),super.destroy()}on(t,e){super.on(t,e)}off(t,e){super.off(t,e)}constructor({guid:t=f.uuidv4(),collectionid:e=null,gc:r=!0,gcFilter:n=(()=>!0),meta:s=null,autoLoad:i=!1,shouldLoad:o=!0}={}){super(),this.gc=r,this.gcFilter=n,this.clientID=N(),this.guid=t,this.collectionid=e,this.share=new Map,this.store=new lt,this._transaction=null,this._transactionCleanups=[],this.subdocs=new Set,this._item=null,this.shouldLoad=o,this.autoLoad=i,this.meta=s,this.isLoaded=!1,this.isSynced=!1,this.whenLoaded=g.create((t=>{this.on("load",(()=>{this.isLoaded=!0,t(this)}))}));const c=()=>g.create((t=>{const e=r=>{void 0!==r&&!0!==r||(this.off("sync",e),t())};this.on("sync",e)}));this.on("sync",(t=>{!1===t&&this.isSynced&&(this.whenSynced=c()),this.isSynced=void 0===t||!0===t,this.isSynced&&!this.isLoaded&&this.emit("load",[])})),this.whenSynced=c()}}class L{resetDsCurVal(){}readDsClock(){return d.readVarUint(this.restDecoder)}readDsLen(){return d.readVarUint(this.restDecoder)}constructor(t){this.restDecoder=t}}class B extends L{readLeftID(){return st(d.readVarUint(this.restDecoder),d.readVarUint(this.restDecoder))}readRightID(){return st(d.readVarUint(this.restDecoder),d.readVarUint(this.restDecoder))}readClient(){return d.readVarUint(this.restDecoder)}readInfo(){return d.readUint8(this.restDecoder)}readString(){return d.readVarString(this.restDecoder)}readParentInfo(){return 1===d.readVarUint(this.restDecoder)}readTypeRef(){return d.readVarUint(this.restDecoder)}readLen(){return d.readVarUint(this.restDecoder)}readAny(){return d.readAny(this.restDecoder)}readBuf(){return p.copyUint8Array(d.readVarUint8Array(this.restDecoder))}readJSON(){return JSON.parse(d.readVarString(this.restDecoder))}readKey(){return d.readVarString(this.restDecoder)}}class P{resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=d.readVarUint(this.restDecoder),this.dsCurrVal}readDsLen(){const t=d.readVarUint(this.restDecoder)+1;return this.dsCurrVal+=t,t}constructor(t){this.dsCurrVal=0,this.restDecoder=t}}class F extends P{readLeftID(){return new rt(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new rt(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 d.readAny(this.restDecoder)}readBuf(){return d.readVarUint8Array(this.restDecoder)}readJSON(){return d.readAny(this.restDecoder)}readKey(){const t=this.keyClockDecoder.read();if(t<this.keys.length)return this.keys[t];{const t=this.stringDecoder.read();return this.keys.push(t),t}}constructor(t){super(t),this.keys=[],d.readVarUint(t),this.keyClockDecoder=new d.IntDiffOptRleDecoder(d.readVarUint8Array(t)),this.clientDecoder=new d.UintOptRleDecoder(d.readVarUint8Array(t)),this.leftClockDecoder=new d.IntDiffOptRleDecoder(d.readVarUint8Array(t)),this.rightClockDecoder=new d.IntDiffOptRleDecoder(d.readVarUint8Array(t)),this.infoDecoder=new d.RleDecoder(d.readVarUint8Array(t),d.readUint8),this.stringDecoder=new d.StringDecoder(d.readVarUint8Array(t)),this.parentInfoDecoder=new d.RleDecoder(d.readVarUint8Array(t),d.readUint8),this.typeRefDecoder=new d.UintOptRleDecoder(d.readVarUint8Array(t)),this.lenDecoder=new d.UintOptRleDecoder(d.readVarUint8Array(t))}}class J{toUint8Array(){return u.toUint8Array(this.restEncoder)}resetDsCurVal(){}writeDsClock(t){u.writeVarUint(this.restEncoder,t)}writeDsLen(t){u.writeVarUint(this.restEncoder,t)}constructor(){this.restEncoder=u.createEncoder()}}class j extends J{writeLeftID(t){u.writeVarUint(this.restEncoder,t.client),u.writeVarUint(this.restEncoder,t.clock)}writeRightID(t){u.writeVarUint(this.restEncoder,t.client),u.writeVarUint(this.restEncoder,t.clock)}writeClient(t){u.writeVarUint(this.restEncoder,t)}writeInfo(t){u.writeUint8(this.restEncoder,t)}writeString(t){u.writeVarString(this.restEncoder,t)}writeParentInfo(t){u.writeVarUint(this.restEncoder,t?1:0)}writeTypeRef(t){u.writeVarUint(this.restEncoder,t)}writeLen(t){u.writeVarUint(this.restEncoder,t)}writeAny(t){u.writeAny(this.restEncoder,t)}writeBuf(t){u.writeVarUint8Array(this.restEncoder,t)}writeJSON(t){u.writeVarString(this.restEncoder,JSON.stringify(t))}writeKey(t){u.writeVarString(this.restEncoder,t)}}class z{toUint8Array(){return u.toUint8Array(this.restEncoder)}resetDsCurVal(){this.dsCurrVal=0}writeDsClock(t){const e=t-this.dsCurrVal;this.dsCurrVal=t,u.writeVarUint(this.restEncoder,e)}writeDsLen(t){0===t&&w.unexpectedCase(),u.writeVarUint(this.restEncoder,t-1),this.dsCurrVal+=t}constructor(){this.restEncoder=u.createEncoder(),this.dsCurrVal=0}}class q extends z{toUint8Array(){const t=u.createEncoder();return u.writeVarUint(t,0),u.writeVarUint8Array(t,this.keyClockEncoder.toUint8Array()),u.writeVarUint8Array(t,this.clientEncoder.toUint8Array()),u.writeVarUint8Array(t,this.leftClockEncoder.toUint8Array()),u.writeVarUint8Array(t,this.rightClockEncoder.toUint8Array()),u.writeVarUint8Array(t,u.toUint8Array(this.infoEncoder)),u.writeVarUint8Array(t,this.stringEncoder.toUint8Array()),u.writeVarUint8Array(t,u.toUint8Array(this.parentInfoEncoder)),u.writeVarUint8Array(t,this.typeRefEncoder.toUint8Array()),u.writeVarUint8Array(t,this.lenEncoder.toUint8Array()),u.writeUint8Array(t,u.toUint8Array(this.restEncoder)),u.toUint8Array(t)}writeLeftID(t){this.clientEncoder.write(t.client),this.leftClockEncoder.write(t.clock)}writeRightID(t){this.clientEncoder.write(t.client),this.rightClockEncoder.write(t.clock)}writeClient(t){this.clientEncoder.write(t)}writeInfo(t){this.infoEncoder.write(t)}writeString(t){this.stringEncoder.write(t)}writeParentInfo(t){this.parentInfoEncoder.write(t?1:0)}writeTypeRef(t){this.typeRefEncoder.write(t)}writeLen(t){this.lenEncoder.write(t)}writeAny(t){u.writeAny(this.restEncoder,t)}writeBuf(t){u.writeVarUint8Array(this.restEncoder,t)}writeJSON(t){u.writeAny(this.restEncoder,t)}writeKey(t){const e=this.keyMap.get(t);void 0===e?(this.keyClockEncoder.write(this.keyClock++),this.stringEncoder.write(t)):this.keyClockEncoder.write(e)}constructor(){super(),this.keyMap=new Map,this.keyClock=0,this.keyClockEncoder=new u.IntDiffOptRleEncoder,this.clientEncoder=new u.UintOptRleEncoder,this.leftClockEncoder=new u.IntDiffOptRleEncoder,this.rightClockEncoder=new u.IntDiffOptRleEncoder,this.infoEncoder=new u.RleEncoder(u.writeUint8),this.stringEncoder=new u.StringEncoder,this.parentInfoEncoder=new u.RleEncoder(u.writeUint8),this.typeRefEncoder=new u.UintOptRleEncoder,this.lenEncoder=new u.UintOptRleEncoder}}const W=(t,e,r)=>{const n=new Map;r.forEach(((t,r)=>{ht(e,r)>t&&n.set(r,t)})),at(e).forEach(((t,e)=>{r.has(e)||n.set(e,0)})),u.writeVarUint(t.restEncoder,n.size),l.from(n.entries()).sort(((t,e)=>e[0]-t[0])).forEach((([r,n])=>{((t,e,r,n)=>{n=a.max(n,e[0].id.clock);const s=dt(e,n);u.writeVarUint(t.restEncoder,e.length-s),t.writeClient(r),u.writeVarUint(t.restEncoder,n);const i=e[s];i.write(t,n-i.id.clock);for(let r=s+1;r<e.length;r++)e[r].write(t,0)})(t,e.clients.get(r),r,n)}))},K=(t,e,r,n=F)=>{const s=d.createDecoder(e);((t,e,r,n=new F(t))=>{St(e,(t=>{t.local=!1;let e=!1;const r=t.doc,s=r.store,i=((t,e)=>{const r=h.create(),n=d.readVarUint(t.restDecoder);for(let s=0;s<n;s++){const n=d.readVarUint(t.restDecoder),s=new Array(n),i=t.readClient();let o=d.readVarUint(t.restDecoder);r.set(i,{i:0,refs:s});for(let r=0;r<n;r++){const n=t.readInfo();switch(y.BITS5&n){case 0:{const e=t.readLen();s[r]=new Me(st(i,o),e),o+=e;break}case 10:{const e=d.readVarUint(t.restDecoder);s[r]=new rr(st(i,o),e),o+=e;break}default:{const c=!(n&(y.BIT7|y.BIT8)),l=new Qe(st(i,o),null,(n&y.BIT8)===y.BIT8?t.readLeftID():null,null,(n&y.BIT7)===y.BIT7?t.readRightID():null,c?t.readParentInfo()?e.get(t.readString()):t.readLeftID():null,c&&(n&y.BIT6)===y.BIT6?t.readString():null,tr(t,n));s[r]=l,o+=l.length}}}}return r})(n,r),o=((t,e,r)=>{const n=[];let s=l.from(r.keys()).sort(((t,e)=>t-e));if(0===s.length)return null;const i=()=>{if(0===s.length)return null;let t=r.get(s[s.length-1]);for(;t.refs.length===t.i;){if(s.pop(),!(s.length>0))return null;t=r.get(s[s.length-1])}return t};let o=i();if(null===o)return null;const c=new lt,a=new Map,d=(t,e)=>{const r=a.get(t);(null==r||r>e)&&a.set(t,e)};let f=o.refs[o.i++];const g=new Map,p=()=>{for(const t of n){const e=t.id.client,n=r.get(e);n?(n.i--,c.clients.set(e,n.refs.slice(n.i)),r.delete(e),n.i=0,n.refs=[]):c.clients.set(e,[t]),s=s.filter((t=>t!==e))}n.length=0};for(;;){if(f.constructor!==rr){const s=h.setIfUndefined(g,f.id.client,(()=>ht(e,f.id.client)))-f.id.clock;if(s<0)n.push(f),d(f.id.client,f.id.clock-1),p();else{const i=f.getMissing(t,e);if(null!==i){n.push(f);const t=r.get(i)||{refs:[],i:0};if(t.refs.length!==t.i){f=t.refs[t.i++];continue}d(i,ht(e,i)),p()}else(0===s||s<f.length)&&(f.integrate(t,s),g.set(f.id.client,f.id.clock+f.length))}}if(n.length>0)f=n.pop();else if(null!==o&&o.i<o.refs.length)f=o.refs[o.i++];else{if(o=i(),null===o)break;f=o.refs[o.i++]}}if(c.clients.size>0){const t=new q;return W(t,c,new Map),u.writeVarUint(t.restEncoder,0),{missing:a,update:t.toUint8Array()}}return null})(t,s,i),c=s.pendingStructs;if(c){for(const[t,r]of c.missing)if(r<ht(s,t)){e=!0;break}if(o){for(const[t,e]of o.missing){const r=c.missing.get(t);(null==r||r>e)&&c.missing.set(t,e)}c.update=Ut([c.update,o.update])}}else s.pendingStructs=o;const a=V(n,t,s);if(s.pendingDs){const e=new F(d.createDecoder(s.pendingDs));d.readVarUint(e.restDecoder);const r=V(e,t,s);s.pendingDs=a&&r?Ut([a,r]):a||r}else s.pendingDs=a;if(e){const e=s.pendingStructs.update;s.pendingStructs=null,K(t.doc,e)}}),r,!1)})(s,t,r,new n(s))},Y=(t,e,r)=>K(t,e,r,B),G=(t,e=new Uint8Array([0]),r=new q)=>{((t,e,r=new Map)=>{W(t,e.store,r),O(t,(t=>{const e=T();return t.clients.forEach(((t,r)=>{const n=[];for(let e=0;e<t.length;e++){const r=t[e];if(r.deleted){const s=r.id.clock;let i=r.length;if(e+1<t.length)for(let r=t[e+1];e+1<t.length&&r.deleted;r=t[1+ ++e])i+=r.length;n.push(new D(s,i))}}n.length>0&&e.clients.set(r,n)})),e})(e.store))})(r,t,$(e));const n=[r.toUint8Array()];if(t.store.pendingDs&&n.push(t.store.pendingDs),t.store.pendingStructs&&n.push(At(t.store.pendingStructs.update,e)),n.length>1){if(r.constructor===j)return Ct(n.map(((t,e)=>0===e?t:Mt(t))));if(r.constructor===q)return Ut(n)}return n[0]},X=(t,e)=>G(t,e,new j),$=t=>(t=>{const e=new Map,r=d.readVarUint(t.restDecoder);for(let n=0;n<r;n++){const r=d.readVarUint(t.restDecoder),n=d.readVarUint(t.restDecoder);e.set(r,n)}return e})(new L(d.createDecoder(t)));class H{constructor(){this.l=[]}}const Z=()=>new H,Q=(t,e)=>t.l.push(e),tt=(t,e)=>{const r=t.l,n=r.length;t.l=r.filter((t=>e!==t)),n===t.l.length&&console.error("[yjs] Tried to remove event handler that doesn't exist.")},et=(t,e,r)=>m.callAll(t.l,[e,r]);class rt{constructor(t,e){this.client=t,this.clock=e}}const nt=(t,e)=>t===e||null!==t&&null!==e&&t.client===e.client&&t.clock===e.clock,st=(t,e)=>new rt(t,e);class it{constructor(t,e){this.ds=t,this.sv=e}}const ot=(((t,e)=>{new it(t,e)})(T(),new Map),(t,e)=>void 0===e?!t.deleted:e.sv.has(t.id.client)&&(e.sv.get(t.id.client)||0)>t.id.clock&&!v(e.ds,t.id)),ct=(t,e)=>{const r=h.setIfUndefined(t.meta,ct,b.create),n=t.doc.store;r.has(e)||(e.sv.forEach(((e,r)=>{e<ht(n,r)&&pt(t,st(r,e))})),C(t,e.ds,(t=>{})),r.add(e))};class lt{constructor(){this.clients=new Map,this.pendingStructs=null,this.pendingDs=null}}const at=t=>{const e=new Map;return t.clients.forEach(((t,r)=>{const n=t[t.length-1];e.set(r,n.id.clock+n.length)})),e},ht=(t,e)=>{const r=t.clients.get(e);if(void 0===r)return 0;const n=r[r.length-1];return n.id.clock+n.length},ut=(t,e)=>{let r=t.clients.get(e.id.client);if(void 0===r)r=[],t.clients.set(e.id.client,r);else{const t=r[r.length-1];if(t.id.clock+t.length!==e.id.clock)throw w.unexpectedCase()}r.push(e)},dt=(t,e)=>{let r=0,n=t.length-1,s=t[n],i=s.id.clock;if(i===e)return n;let o=a.floor(e/(i+s.length-1)*n);for(;r<=n;){if(s=t[o],i=s.id.clock,i<=e){if(e<i+s.length)return o;r=o+1}else n=o-1;o=a.floor((r+n)/2)}throw w.unexpectedCase()},ft=(t,e)=>{const r=t.clients.get(e.client);return r[dt(r,e.clock)]},gt=(t,e,r)=>{const n=dt(e,r),s=e[n];return s.id.clock<r&&s instanceof Qe?(e.splice(n+1,0,Ze(t,s,r-s.id.clock)),n+1):n},pt=(t,e)=>{const r=t.doc.store.clients.get(e.client);return r[gt(t,r,e.clock)]},wt=(t,e,r)=>{const n=e.clients.get(r.client),s=dt(n,r.clock),i=n[s];return r.clock!==i.id.clock+i.length-1&&i.constructor!==Me&&n.splice(s+1,0,Ze(t,i,r.clock-i.id.clock+1)),i},yt=(t,e,r,n,s)=>{if(0===n)return;const i=r+n;let o,c=gt(t,e,r);do{o=e[c++],i<o.id.clock+o.length&>(t,e,i),s(o)}while(c<e.length&&e[c].id.clock<i)};class mt{constructor(t,e,r){this.doc=t,this.deleteSet=new E,this.beforeState=at(t.store),this.afterState=new Map,this.changed=new Map,this.changedParentTypes=new Map,this._mergeStructs=[],this.origin=e,this.meta=new Map,this.local=r,this.subdocsAdded=new Set,this.subdocsRemoved=new Set,this.subdocsLoaded=new Set,this._needFormattingCleanup=!1}}const bt=(t,e)=>!(0===e.deleteSet.clients.size&&!h.any(e.afterState,((t,r)=>e.beforeState.get(r)!==t))||(U(e.deleteSet),((t,e)=>{W(t,e.doc.store,e.beforeState)})(t,e),O(t,e.deleteSet),0)),kt=(t,e,r)=>{const n=e._item;(null===n||n.id.clock<(t.beforeState.get(n.id.client)||0)&&!n.deleted)&&h.setIfUndefined(t.changed,e,b.create).add(r)},_t=(t,e)=>{let r=t[e],n=t[e-1],s=e;for(;s>0&&n.deleted===r.deleted&&n.constructor===r.constructor&&n.mergeWith(r);r=n,n=t[--s-1])r instanceof Qe&&null!==r.parentSub&&r.parent._map.get(r.parentSub)===r&&r.parent._map.set(r.parentSub,n);const i=e-s;return i&&t.splice(e+1-i,i),i},xt=(t,e)=>{if(e<t.length){const r=t[e],n=r.doc,s=n.store,i=r.deleteSet,o=r._mergeStructs;try{U(i),r.afterState=at(r.doc.store),n.emit("beforeObserverCalls",[r,n]);const t=[];r.changed.forEach(((e,n)=>t.push((()=>{null!==n._item&&n._item.deleted||n._callObserver(r,e)})))),t.push((()=>{r.changedParentTypes.forEach(((t,e)=>{e._dEH.l.length>0&&(null===e._item||!e._item.deleted)&&((t=t.filter((t=>null===t.target._item||!t.target._item.deleted))).forEach((t=>{t.currentTarget=e,t._path=null})),t.sort(((t,e)=>t.path.length-e.path.length)),et(e._dEH,t,r))}))})),t.push((()=>n.emit("afterTransaction",[r,n]))),(0,m.callAll)(t,[]),r._needFormattingCleanup&&xe(r)}finally{n.gc&&((t,e,r)=>{for(const[n,s]of t.clients.entries()){const t=e.clients.get(n);for(let n=s.length-1;n>=0;n--){const i=s[n],o=i.clock+i.len;for(let n=dt(t,i.clock),s=t[n];n<t.length&&s.id.clock<o;s=t[++n]){const s=t[n];if(i.clock+i.len<=s.id.clock)break;s instanceof Qe&&s.deleted&&!s.keep&&r(s)&&s.gc(e,!1)}}}})(i,s,n.gcFilter),((t,e)=>{t.clients.forEach(((t,r)=>{const n=e.clients.get(r);for(let e=t.length-1;e>=0;e--){const r=t[e];for(let t=a.min(n.length-1,1+dt(n,r.clock+r.len-1)),e=n[t];t>0&&e.id.clock>=r.clock;e=n[t])t-=1+_t(n,t)}}))})(i,s),r.afterState.forEach(((t,e)=>{const n=r.beforeState.get(e)||0;if(n!==t){const t=s.clients.get(e),r=a.max(dt(t,n),1);for(let e=t.length-1;e>=r;)e-=1+_t(t,e)}}));for(let t=o.length-1;t>=0;t--){const{client:e,clock:r}=o[t].id,n=s.clients.get(e),i=dt(n,r);i+1<n.length&&_t(n,i+1)>1||i>0&&_t(n,i)}if(r.local||r.afterState.get(n.clientID)===r.beforeState.get(n.clientID)||(k.print(_.ORANGE,_.BOLD,"[yjs] ",_.UNBOLD,_.RED,"Changed the client-id because another client seems to be using it."),n.clientID=N()),n.emit("afterTransactionCleanup",[r,n]),n._observers.has("update")){const t=new j;bt(t,r)&&n.emit("update",[t.toUint8Array(),r.origin,n,r])}if(n._observers.has("updateV2")){const t=new q;bt(t,r)&&n.emit("updateV2",[t.toUint8Array(),r.origin,n,r])}const{subdocsAdded:c,subdocsLoaded:l,subdocsRemoved:h}=r;(c.size>0||h.size>0||l.size>0)&&(c.forEach((t=>{t.clientID=n.clientID,null==t.collectionid&&(t.collectionid=n.collectionid),n.subdocs.add(t)})),h.forEach((t=>n.subdocs.delete(t))),n.emit("subdocs",[{loaded:l,added:c,removed:h},n,r]),h.forEach((t=>t.destroy()))),t.length<=e+1?(n._transactionCleanups=[],n.emit("afterAllTransactions",[n,t])):xt(t,e+1)}}},St=(t,e,r=null,n=!0)=>{const s=t._transactionCleanups;let i=!1,o=null;null===t._transaction&&(i=!0,t._transaction=new mt(t,r,n),s.push(t._transaction),1===s.length&&t.emit("beforeAllTransactions",[t]),t.emit("beforeTransaction",[t._transaction,t]));try{o=e(t._transaction)}finally{if(i){const e=t._transaction===s[0];t._transaction=null,e&&xt(s,0)}}return o};c.Observable;class Dt{next(){do{this.curr=this.gen.next().value||null}while(this.filterSkips&&null!==this.curr&&this.curr.constructor===rr);return this.curr}constructor(t,e){this.gen=function*(t){const e=d.readVarUint(t.restDecoder);for(let r=0;r<e;r++){const e=d.readVarUint(t.restDecoder),r=t.readClient();let n=d.readVarUint(t.restDecoder);for(let s=0;s<e;s++){const e=t.readInfo();if(10===e){const e=d.readVarUint(t.restDecoder);yield new rr(st(r,n),e),n+=e}else if(y.BITS5&e){const s=!(e&(y.BIT7|y.BIT8)),i=new Qe(st(r,n),null,(e&y.BIT8)===y.BIT8?t.readLeftID():null,null,(e&y.BIT7)===y.BIT7?t.readRightID():null,s?t.readParentInfo()?t.readString():t.readLeftID():null,s&&(e&y.BIT6)===y.BIT6?t.readString():null,tr(t,e));yield i,n+=i.length}else{const e=t.readLen();yield new Me(st(r,n),e),n+=e}}}}(t),this.curr=null,this.done=!1,this.filterSkips=e,this.next()}}class Et{constructor(t){this.currClient=0,this.startClock=0,this.written=0,this.encoder=t,this.clientStructs=[]}}const Ct=t=>Ut(t,B,j),vt=(t,e)=>{if(t.constructor===Me){const{client:r,clock:n}=t.id;return new Me(st(r,n+e),t.length-e)}if(t.constructor===rr){const{client:r,clock:n}=t.id;return new rr(st(r,n+e),t.length-e)}{const r=t,{client:n,clock:s}=r.id;return new Qe(st(n,s+e),null,st(n,s+e-1),null,r.rightOrigin,r.parent,r.parentSub,r.content.splice(e))}},Ut=(t,e=F,r=q)=>{if(1===t.length)return t[0];const n=t.map((t=>new e(d.createDecoder(t))));let s=n.map((t=>new Dt(t,!0))),i=null;const o=new r,c=new Et(o);for(;s=s.filter((t=>null!==t.curr)),s.sort(((t,e)=>{if(t.curr.id.client===e.curr.id.client){const r=t.curr.id.clock-e.curr.id.clock;return 0===r?t.curr.constructor===e.curr.constructor?0:t.curr.constructor===rr?1:-1:r}return e.curr.id.client-t.curr.id.client})),0!==s.length;){const t=s[0],e=t.curr.id.client;if(null!==i){let r=t.curr,n=!1;for(;null!==r&&r.id.clock+r.length<=i.struct.id.clock+i.struct.length&&r.id.client>=i.struct.id.client;)r=t.next(),n=!0;if(null===r||r.id.client!==e||n&&r.id.clock>i.struct.id.clock+i.struct.length)continue;if(e!==i.struct.id.client)Tt(c,i.struct,i.offset),i={struct:r,offset:0},t.next();else if(i.struct.id.clock+i.struct.length<r.id.clock)if(i.struct.constructor===rr)i.struct.length=r.id.clock+r.length-i.struct.id.clock;else{Tt(c,i.struct,i.offset);const t=r.id.clock-i.struct.id.clock-i.struct.length;i={struct:new rr(st(e,i.struct.id.clock+i.struct.length),t),offset:0}}else{const e=i.struct.id.clock+i.struct.length-r.id.clock;e>0&&(i.struct.constructor===rr?i.struct.length-=e:r=vt(r,e)),i.struct.mergeWith(r)||(Tt(c,i.struct,i.offset),i={struct:r,offset:0},t.next())}}else i={struct:t.curr,offset:0},t.next();for(let r=t.curr;null!==r&&r.id.client===e&&r.id.clock===i.struct.id.clock+i.struct.length&&r.constructor!==rr;r=t.next())Tt(c,i.struct,i.offset),i={struct:r,offset:0}}null!==i&&(Tt(c,i.struct,i.offset),i=null),Ot(c);const l=n.map((t=>M(t))),a=A(l);return O(o,a),o.toUint8Array()},At=(t,e,r=F,n=q)=>{const s=$(e),i=new n,o=new Et(i),c=new r(d.createDecoder(t)),l=new Dt(c,!1);for(;l.curr;){const t=l.curr,e=t.id.client,r=s.get(e)||0;if(l.curr.constructor!==rr)if(t.id.clock+t.length>r)for(Tt(o,t,a.max(r-t.id.clock,0)),l.next();l.curr&&l.curr.id.client===e;)Tt(o,l.curr,0),l.next();else for(;l.curr&&l.curr.id.client===e&&l.curr.id.clock+l.curr.length<=r;)l.next();else l.next()}Ot(o);const h=M(c);return O(i,h),i.toUint8Array()},It=t=>{t.written>0&&(t.clientStructs.push({written:t.written,restEncoder:u.toUint8Array(t.encoder.restEncoder)}),t.encoder.restEncoder=u.createEncoder(),t.written=0)},Tt=(t,e,r)=>{t.written>0&&t.currClient!==e.id.client&&It(t),0===t.written&&(t.currClient=e.id.client,t.encoder.writeClient(e.id.client),u.writeVarUint(t.encoder.restEncoder,e.id.clock+r)),e.write(t.encoder,r),t.written++},Ot=t=>{It(t);const e=t.encoder.restEncoder;u.writeVarUint(e,t.clientStructs.length);for(let r=0;r<t.clientStructs.length;r++){const n=t.clientStructs[r];u.writeVarUint(e,n.written),u.writeUint8Array(e,n.restEncoder)}},Mt=t=>((t,e,r,n)=>{const s=new r(d.createDecoder(t)),i=new Dt(s,!1),o=new n,c=new Et(o);for(let t=i.curr;null!==t;t=i.next())Tt(c,e(t),0);Ot(c);const l=M(s);return O(o,l),o.toUint8Array()})(t,m.id,F,j),Vt="You must not compute changes after the event-handler fired.";class Nt{get path(){return this._path||(this._path=Rt(this.currentTarget,this.target))}deletes(t){return v(this.transaction.deleteSet,t.id)}get keys(){if(null===this._keys){if(0===this.transaction.doc._transactionCleanups.length)throw w.create(Vt);const t=new Map,e=this.target;this.transaction.changed.get(e).forEach((r=>{if(null!==r){const n=e._map.get(r);let s,i;if(this.adds(n)){let t=n.left;for(;null!==t&&this.adds(t);)t=t.left;if(this.deletes(n)){if(null===t||!this.deletes(t))return;s="delete",i=l.last(t.content.getContent())}else null!==t&&this.deletes(t)?(s="update",i=l.last(t.content.getContent())):(s="add",i=void 0)}else{if(!this.deletes(n))return;s="delete",i=l.last(n.content.getContent())}t.set(r,{action:s,oldValue:i})}})),this._keys=t}return this._keys}get delta(){return this.changes.delta}adds(t){return t.id.clock>=(this.transaction.beforeState.get(t.id.client)||0)}get changes(){let t=this._changes;if(null===t){if(0===this.transaction.doc._transactionCleanups.length)throw w.create(Vt);const e=this.target,r=b.create(),n=b.create(),s=[];if(t={added:r,deleted:n,delta:s,keys:this.keys},this.transaction.changed.get(e).has(null)){let t=null;const i=()=>{t&&s.push(t)};for(let s=e._start;null!==s;s=s.right)s.deleted?this.deletes(s)&&!this.adds(s)&&(null!==t&&void 0!==t.delete||(i(),t={delete:0}),t.delete+=s.length,n.add(s)):this.adds(s)?(null!==t&&void 0!==t.insert||(i(),t={insert:[]}),t.insert=t.insert.concat(s.content.getContent()),r.add(s)):(null!==t&&void 0!==t.retain||(i(),t={retain:0}),t.retain+=s.length);null!==t&&void 0===t.retain&&i()}this._changes=t}return t}constructor(t,e){this.target=t,this.currentTarget=t,this.transaction=e,this._changes=null,this._keys=null,this._delta=null,this._path=null}}const Rt=(t,e)=>{const r=[];for(;null!==e._item&&e!==t;){if(null!==e._item.parentSub)r.unshift(e._item.parentSub);else{let t=0,n=e._item.parent._start;for(;n!==e._item&&null!==n;)n.deleted||t++,n=n.right;r.unshift(t)}e=e._item.parent}return r};let Lt=0;class Bt{constructor(t,e){t.marker=!0,this.p=t,this.index=e,this.timestamp=Lt++}}const Pt=(t,e,r)=>{t.p.marker=!1,t.p=e,e.marker=!0,t.index=r,t.timestamp=Lt++},Ft=(t,e)=>{if(null===t._start||0===e||null===t._searchMarker)return null;const r=0===t._searchMarker.length?null:t._searchMarker.reduce(((t,r)=>a.abs(e-t.index)<a.abs(e-r.index)?t:r));let n=t._start,s=0;for(null!==r&&(n=r.p,s=r.index,(t=>{t.timestamp=Lt++})(r));null!==n.right&&s<e;){if(!n.deleted&&n.countable){if(e<s+n.length)break;s+=n.length}n=n.right}for(;null!==n.left&&s>e;)n=n.left,!n.deleted&&n.countable&&(s-=n.length);for(;null!==n.left&&n.left.id.client===n.id.client&&n.left.id.clock+n.left.length===n.id.clock;)n=n.left,!n.deleted&&n.countable&&(s-=n.length);return null!==r&&a.abs(r.index-s)<n.parent.length/80?(Pt(r,n,s),r):((t,e,r)=>{if(t.length>=80){const n=t.reduce(((t,e)=>t.timestamp<e.timestamp?t:e));return Pt(n,e,r),n}{const n=new Bt(e,r);return t.push(n),n}})(t._searchMarker,n,s)},Jt=(t,e,r)=>{for(let n=t.length-1;n>=0;n--){const s=t[n];if(r>0){let e=s.p;for(e.marker=!1;e&&(e.deleted||!e.countable);)e=e.left,e&&!e.deleted&&e.countable&&(s.index-=e.length);if(null===e||!0===e.marker){t.splice(n,1);continue}s.p=e,e.marker=!0}(e<s.index||r>0&&e===s.index)&&(s.index=a.max(e,s.index+r))}},jt=(t,e,r)=>{const n=t,s=e.changedParentTypes;for(;h.setIfUndefined(s,t,(()=>[])).push(r),null!==t._item;)t=t._item.parent;et(n._eH,r,e)};class zt{get parent(){return this._item?this._item.parent:null}_integrate(t,e){this.doc=t,this._item=e}_copy(){throw w.methodUnimplemented()}clone(){throw w.methodUnimplemented()}_write(t){}get _first(){let t=this._start;for(;null!==t&&t.deleted;)t=t.right;return t}_callObserver(t,e){!t.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(t){Q(this._eH,t)}observeDeep(t){Q(this._dEH,t)}unobserve(t){tt(this._eH,t)}unobserveDeep(t){tt(this._dEH,t)}toJSON(){}constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=Z(),this._dEH=Z(),this._searchMarker=null}}const qt=(t,e,r)=>{e<0&&(e=t._length+e),r<0&&(r=t._length+r);let n=r-e;const s=[];let i=t._start;for(;null!==i&&n>0;){if(i.countable&&!i.deleted){const t=i.content.getContent();if(t.length<=e)e-=t.length;else{for(let r=e;r<t.length&&n>0;r++)s.push(t[r]),n--;e=0}}i=i.right}return s},Wt=t=>{const e=[];let r=t._start;for(;null!==r;){if(r.countable&&!r.deleted){const t=r.content.getContent();for(let r=0;r<t.length;r++)e.push(t[r])}r=r.right}return e},Kt=(t,e)=>{let r=0,n=t._start;for(;null!==n;){if(n.countable&&!n.deleted){const s=n.content.getContent();for(let n=0;n<s.length;n++)e(s[n],r++,t)}n=n.right}},Yt=(t,e)=>{const r=[];return Kt(t,((n,s)=>{r.push(e(n,s,t))})),r},Gt=t=>{let e=t._start,r=null,n=0;return{[Symbol.iterator](){return this},next:()=>{if(null===r){for(;null!==e&&e.deleted;)e=e.right;if(null===e)return{done:!0,value:void 0};r=e.content.getContent(),n=0,e=e.right}const t=r[n++];return r.length<=n&&(r=null),{done:!1,value:t}}}},Xt=(t,e)=>{const r=Ft(t,e);let n=t._start;for(null!==r&&(n=r.p,e-=r.index);null!==n;n=n.right)if(!n.deleted&&n.countable){if(e<n.length)return n.content.getContent()[e];e-=n.length}},$t=(t,e,r,n)=>{let s=r;const i=t.doc,o=i.clientID,c=i.store,l=null===r?e._start:r.right;let a=[];const h=()=>{a.length>0&&(s=new Qe(st(o,ht(c,o)),s,s&&s.lastId,l,l&&l.id,e,null,new Je(a)),s.integrate(t,0),a=[])};n.forEach((r=>{if(null===r)a.push(r);else switch(r.constructor){case Number:case Object:case Boolean:case Array:case String:a.push(r);break;default:switch(h(),r.constructor){case Uint8Array:case ArrayBuffer:s=new Qe(st(o,ht(c,o)),s,s&&s.lastId,l,l&&l.id,e,null,new Ve(new Uint8Array(r))),s.integrate(t,0);break;case R:s=new Qe(st(o,ht(c,o)),s,s&&s.lastId,l,l&&l.id,e,null,new Le(r)),s.integrate(t,0);break;default:if(!(r instanceof zt))throw new Error("Unexpected content type in insert operation");s=new Qe(st(o,ht(c,o)),s,s&&s.lastId,l,l&&l.id,e,null,new He(r)),s.integrate(t,0)}}})),h()},Ht=()=>w.create("Length exceeded!"),Zt=(t,e,r,n)=>{if(r>e._length)throw Ht();if(0===r)return e._searchMarker&&Jt(e._searchMarker,r,n.length),$t(t,e,null,n);const s=r,i=Ft(e,r);let o=e._start;for(null!==i&&(o=i.p,0==(r-=i.index)&&(o=o.prev,r+=o&&o.countable&&!o.deleted?o.length:0));null!==o;o=o.right)if(!o.deleted&&o.countable){if(r<=o.length){r<o.length&&pt(t,st(o.id.client,o.id.clock+r));break}r-=o.length}return e._searchMarker&&Jt(e._searchMarker,s,n.length),$t(t,e,o,n)},Qt=(t,e,r,n)=>{if(0===n)return;const s=r,i=n,o=Ft(e,r);let c=e._start;for(null!==o&&(c=o.p,r-=o.index);null!==c&&r>0;c=c.right)!c.deleted&&c.countable&&(r<c.length&&pt(t,st(c.id.client,c.id.clock+r)),r-=c.length);for(;n>0&&null!==c;)c.deleted||(n<c.length&&pt(t,st(c.id.client,c.id.clock+n)),c.delete(t),n-=c.length),c=c.right;if(n>0)throw Ht();e._searchMarker&&Jt(e._searchMarker,s,-i+n)},te=(t,e,r)=>{const n=e._map.get(r);void 0!==n&&n.delete(t)},ee=(t,e,r,n)=>{const s=e._map.get(r)||null,i=t.doc,o=i.clientID;let c;if(null==n)c=new Je([n]);else switch(n.constructor){case Number:case Object:case Boolean:case Array:case String:c=new Je([n]);break;case Uint8Array:c=new Ve(n);break;case R:c=new Le(n);break;default:if(!(n instanceof zt))throw new Error("Unexpected content type");c=new He(n)}new Qe(st(o,ht(i.store,o)),s,s&&s.lastId,null,null,e,r,c).integrate(t,0)},re=(t,e)=>{const r=t._map.get(e);return void 0===r||r.deleted?void 0:r.content.getContent()[r.length-1]},ne=t=>{const e={};return t._map.forEach(((t,r)=>{t.deleted||(e[r]=t.content.getContent()[t.length-1])})),e},se=(t,e)=>{const r=t._map.get(e);return void 0!==r&&!r.deleted},ie=t=>x.iteratorFilter(t.entries(),(t=>!t[1].deleted));class oe extends Nt{constructor(t,e){super(t,e),this._transaction=e}}class ce extends zt{static from(t){const e=new ce;return e.push(t),e}_integrate(t,e){super._integrate(t,e),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new ce}clone(){const t=new ce;return t.insert(0,this.toArray().map((t=>t instanceof zt?t.clone():t))),t}get length(){return null===this._prelimContent?this._length:this._prelimContent.length}_callObserver(t,e){super._callObserver(t,e),jt(this,t,new oe(this,t))}insert(t,e){null!==this.doc?St(this.doc,(r=>{Zt(r,this,t,e)})):this._prelimContent.splice(t,0,...e)}push(t){null!==this.doc?St(this.doc,(e=>{((t,e,r)=>{let n=(e._searchMarker||[]).reduce(((t,e)=>e.index>t.index?e:t),{index:0,p:e._start}).p;if(n)for(;n.right;)n=n.right;$t(t,e,n,r)})(e,this,t)})):this._prelimContent.push(...t)}unshift(t){this.insert(0,t)}delete(t,e=1){null!==this.doc?St(this.doc,(r=>{Qt(r,this,t,e)})):this._prelimContent.splice(t,e)}get(t){return Xt(this,t)}toArray(){return Wt(this)}slice(t=0,e=this.length){return qt(this,t,e)}toJSON(){return this.map((t=>t instanceof zt?t.toJSON():t))}map(t){return Yt(this,t)}forEach(t){Kt(this,t)}[Symbol.iterator](){return Gt(this)}_write(t){t.writeTypeRef(qe)}constructor(){super(),this._prelimContent=[],this._searchMarker=[]}}class le extends Nt{constructor(t,e,r){super(t,e),this.keysChanged=r}}class ae extends zt{_integrate(t,e){super._integrate(t,e),this._prelimContent.forEach(((t,e)=>{this.set(e,t)})),this._prelimContent=null}_copy(){return new ae}clone(){const t=new ae;return this.forEach(((e,r)=>{t.set(r,e instanceof zt?e.clone():e)})),t}_callObserver(t,e){jt(this,t,new le(this,t,e))}toJSON(){const t={};return this._map.forEach(((e,r)=>{if(!e.deleted){const n=e.content.getContent()[e.length-1];t[r]=n instanceof zt?n.toJSON():n}})),t}get size(){return[...ie(this._map)].length}keys(){return x.iteratorMap(ie(this._map),(t=>t[0]))}values(){return x.iteratorMap(ie(this._map),(t=>t[1].content.getContent()[t[1].length-1]))}entries(){return x.iteratorMap(ie(this._map),(t=>[t[0],t[1].content.getContent()[t[1].length-1]]))}forEach(t){this._map.forEach(((e,r)=>{e.deleted||t(e.content.getContent()[e.length-1],r,this)}))}[Symbol.iterator](){return this.entries()}delete(t){null!==this.doc?St(this.doc,(e=>{te(e,this,t)})):this._prelimContent.delete(t)}set(t,e){return null!==this.doc?St(this.doc,(r=>{ee(r,this,t,e)})):this._prelimContent.set(t,e),e}get(t){return re(this,t)}has(t){return se(this,t)}clear(){null!==this.doc?St(this.doc,(t=>{this.forEach((function(e,r,n){te(t,n,r)}))})):this._prelimContent.clear()}_write(t){t.writeTypeRef(We)}constructor(t){super(),this._prelimContent=null,this._prelimContent=void 0===t?new Map:new Map(t)}}const he=(t,e)=>t===e||"object"==typeof t&&"object"==typeof e&&t&&e&&S.equalFlat(t,e);class ue{forward(){null===this.right&&w.unexpectedCase(),this.right.content.constructor===Pe?this.right.deleted||pe(this.currentAttributes,this.right.content):this.right.deleted||(this.index+=this.right.length),this.left=this.right,this.right=this.right.right}constructor(t,e,r,n){this.left=t,this.right=e,this.index=r,this.currentAttributes=n}}const de=(t,e,r)=>{for(;null!==e.right&&r>0;)e.right.content.constructor===Pe?e.right.deleted||pe(e.currentAttributes,e.right.content):e.right.deleted||(r<e.right.length&&pt(t,st(e.right.id.client,e.right.id.clock+r)),e.index+=e.right.length,r-=e.right.length),e.left=e.right,e.right=e.right.right;return e},fe=(t,e,r,n)=>{const s=new Map,i=n?Ft(e,r):null;if(i){const e=new ue(i.p.left,i.p,i.index,s);return de(t,e,r-i.index)}{const n=new ue(null,e._start,0,s);return de(t,n,r)}},ge=(t,e,r,n)=>{for(;null!==r.right&&(!0===r.right.deleted||r.right.content.constructor===Pe&&he(n.get(r.right.content.key),r.right.content.value));)r.right.deleted||n.delete(r.right.content.key),r.forward();const s=t.doc,i=s.clientID;n.forEach(((n,o)=>{const c=r.left,l=r.right,a=new Qe(st(i,ht(s.store,i)),c,c&&c.lastId,l,l&&l.id,e,null,new Pe(o,n));a.integrate(t,0),r.right=a,r.forward()}))},pe=(t,e)=>{const{key:r,value:n}=e;null===n?t.delete(r):t.set(r,n)},we=(t,e)=>{for(;null!==t.right&&(t.right.deleted||t.right.content.constructor===Pe&&he(e[t.right.content.key]||null,t.right.content.value));)t.forward()},ye=(t,e,r,n)=>{const s=t.doc,i=s.clientID,o=new Map;for(const c in n){const l=n[c],a=r.currentAttributes.get(c)||null;if(!he(a,l)){o.set(c,a);const{left:n,right:h}=r;r.right=new Qe(st(i,ht(s.store,i)),n,n&&n.lastId,h,h&&h.id,e,null,new Pe(c,l)),r.right.integrate(t,0),r.forward()}}return o},me=(t,e,r,n,s)=>{r.currentAttributes.forEach(((t,e)=>{void 0===s[e]&&(s[e]=null)}));const i=t.doc,o=i.clientID;we(r,s);const c=ye(t,e,r,s),l=n.constructor===String?new je(n):n instanceof zt?new He(n):new Be(n);let{left:a,right:h,index:u}=r;e._searchMarker&&Jt(e._searchMarker,r.index,l.getLength()),h=new Qe(st(o,ht(i.store,o)),a,a&&a.lastId,h,h&&h.id,e,null,l),h.integrate(t,0),r.right=h,r.index=u,r.forward(),ge(t,e,r,c)},be=(t,e,r,n,s)=>{const i=t.doc,o=i.clientID;we(r,s);const c=ye(t,e,r,s);t:for(;null!==r.right&&(n>0||c.size>0&&(r.right.deleted||r.right.content.constructor===Pe));){if(!r.right.deleted)switch(r.right.content.constructor){case Pe:{const{key:e,value:i}=r.right.content,o=s[e];if(void 0!==o){if(he(o,i))c.delete(e);else{if(0===n)break t;c.set(e,i)}r.right.delete(t)}else r.currentAttributes.set(e,i);break}default:n<r.right.length&&pt(t,st(r.right.id.client,r.right.id.clock+n)),n-=r.right.length}r.forward()}if(n>0){let s="";for(;n>0;n--)s+="\n";r.right=new Qe(st(o,ht(i.store,o)),r.left,r.left&&r.left.lastId,r.right,r.right&&r.right.id,e,null,new je(s)),r.right.integrate(t,0),r.forward()}ge(t,e,r,c)},ke=(t,e,r,n,s)=>{let i=e;const o=h.create();for(;i&&(!i.countable||i.deleted);){if(!i.deleted&&i.content.constructor===Pe){const t=i.content;o.set(t.key,t)}i=i.right}let c=0,l=!1;for(;e!==i;){if(r===e&&(l=!0),!e.deleted){const r=e.content;switch(r.constructor){case Pe:{const{key:i,value:a}=r,h=n.get(i)||null;o.get(i)===r&&h!==a||(e.delete(t),c++,l||(s.get(i)||null)!==a||h===a||(null===h?s.delete(i):s.set(i,h))),l||e.deleted||pe(s,r);break}}}e=e.right}return c},_e=t=>{let e=0;return St(t.doc,(r=>{let n=t._start,s=t._start,i=h.create();const o=h.copy(i);for(;s;)!1===s.deleted&&(s.content.constructor===Pe?pe(o,s.content):(e+=ke(r,n,s,i,o),i=h.copy(o),n=s)),s=s.right})),e},xe=t=>{const e=new Set,r=t.doc;for(const[n,s]of t.afterState.entries()){const i=t.beforeState.get(n)||0;s!==i&&yt(t,r.store.clients.get(n),i,s,(t=>{t.deleted||t.content.constructor!==Pe||t.constructor===Me||e.add(t.parent)}))}St(r,(r=>{C(t,t.deleteSet,(t=>{if(t instanceof Me||!t.parent._hasFormatting||e.has(t.parent))return;const n=t.parent;t.content.constructor===Pe?e.add(n):((t,e)=>{for(;e&&e.right&&(e.right.deleted||!e.right.countabl