/** * yjs - A framework for real-time p2p shared editing on any data * @version v13.0.0-4 * @license MIT */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Y=t()}(this,function(){"use strict";function e(e,t){return t={exports:{}},e(t,t.exports),t.exports}function t(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*I;case"days":case"day":case"d":return r*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return r*O;case"minutes":case"minute":case"mins":case"min":case"m":return r*w;case"seconds":case"second":case"secs":case"sec":case"s":return r*m;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function r(e){return e>=Y?Math.round(e/Y)+"d":e>=O?Math.round(e/O)+"h":e>=w?Math.round(e/w)+"m":e>=m?Math.round(e/m)+"s":e+"ms"}function n(e){return i(e,Y,"day")||i(e,O,"hour")||i(e,w,"minute")||i(e,m,"second")||e+" ms"}function i(e,t,r){if(!(e=0;--n){var i=this.tryEntries[n],s=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=k.call(i,"catchLoc"),o=k.call(i,"finallyLoc");if(a&&o){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&k.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),f(r),_}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;f(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:g(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=v),_}}}("object"===l(u)?u:"object"===("undefined"==typeof window?"undefined":l(window))?window:"object"===("undefined"==typeof self?"undefined":l(self))?self:u)}),v="object"===l(u)?u:"object"===("undefined"==typeof window?"undefined":l(window))?window:"object"===("undefined"==typeof self?"undefined":l(self))?self:u,b=v.regeneratorRuntime&&Object.getOwnPropertyNames(v).indexOf("regeneratorRuntime")>=0,k=b&&v.regeneratorRuntime;v.regeneratorRuntime=void 0;var x=y;if(b)v.regeneratorRuntime=k;else try{delete v.regeneratorRuntime}catch(e){v.regeneratorRuntime=void 0}var m=1e3,w=60*m,O=60*w,Y=24*O,I=365.25*Y,S=function(e,i){i=i||{};var s=void 0===e?"undefined":l(e);if("string"===s&&e.length>0)return t(e);if("number"===s&&!1===isNaN(e))return i.long?n(e):r(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))},T=e(function(e,t){function r(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}function n(e){function n(){if(n.enabled){var e=n,r=+new Date,i=r-(c||r);e.diff=i,e.prev=c,e.curr=r,c=r;for(var s=new Array(arguments.length),a=0;a=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function n(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),r){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,s=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(i++,"%c"===e&&(s=i))}),e.splice(s,0,n)}}function i(){return"object"===("undefined"==typeof console?"undefined":l(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function a(){var e;try{e=t.storage.debug}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e}t=e.exports=T,t.log=i,t.formatArgs=n,t.save=s,t.load=a,t.useColors=r,t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(a())});!function(e){var t=function(){function t(r,n){if(d(this,t),this.y=r,null==n&&(n={}),this.preferUntransformed=n.preferUntransformed||!1,null==n.role||"master"===n.role)this.role="master";else{if("slave"!==n.role)throw new Error("Role must be either 'master' or 'slave'!");this.role="slave"}this.log=e.debug("y:connector"),this.logMessage=e.debug("y:connector-message"),this.y.db.forwardAppliedOperations=n.forwardAppliedOperations||!1,this.role=n.role,this.connections={},this.isSynced=!1,this.userEventListeners=[],this.whenSyncedListeners=[],this.currentSyncTarget=null,this.syncingClients=[],this.forwardToSyncingClients=!1!==n.forwardToSyncingClients,this.debug=!0===n.debug,this.broadcastOpBuffer=[],this.protocolVersion=11,this.authInfo=n.auth||null,this.checkAuth=n.checkAuth||function(){return Promise.resolve("write")},!1!==n.generateUserId&&this.setUserId(e.utils.generateGuid())}return h(t,[{key:"resetAuth",value:function(e){this.authInfo!==e&&(this.authInfo=e,this.broadcast({type:"auth",auth:this.authInfo}))}},{key:"reconnect",value:function(){return this.log("reconnecting.."),this.y.db.startGarbageCollector()}},{key:"disconnect",value:function(){return this.log("discronnecting.."),this.connections={},this.isSynced=!1,this.currentSyncTarget=null,this.syncingClients=[],this.whenSyncedListeners=[],this.y.db.stopGarbageCollector(),this.y.db.whenTransactionsFinished()}},{key:"repair",value:function(){this.log("Repairing the state of Yjs. This can happen if messages get lost, and Yjs detects that something is wrong. If this happens often, please report an issue here: https://github.com/y-js/yjs/issues");for(var e in this.connections)this.connections[e].isSynced=!1;this.isSynced=!1,this.currentSyncTarget=null,this.findNextSyncTarget()}},{key:"setUserId",value:function(e){return null==this.userId?(this.log('Set userId to "%s"',e),this.userId=e,this.y.db.setUserId(e)):null}},{key:"onUserEvent",value:function(e){this.userEventListeners.push(e)}},{key:"removeUserEventListener",value:function(e){this.userEventListeners=this.userEventListeners.filter(function(t){return e!==t})}},{key:"userLeft",value:function(e){if(null!=this.connections[e]){this.log("User left: %s",e),delete this.connections[e],e===this.currentSyncTarget&&(this.currentSyncTarget=null,this.findNextSyncTarget()),this.syncingClients=this.syncingClients.filter(function(t){return t!==e});var t=!0,r=!1,n=void 0;try{for(var i,s=this.userEventListeners[Symbol.iterator]();!(t=(i=s.next()).done);t=!0)(0,i.value)({action:"userLeft",user:e})}catch(e){r=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(r)throw n}}}}},{key:"userJoined",value:function(e,t){if(null==t)throw new Error("You must specify the role of the joined user!");if(null!=this.connections[e])throw new Error("This user already joined!");this.log("User joined: %s",e),this.connections[e]={isSynced:!1,role:t};var r={};r.promise=new Promise(function(e){r.resolve=e}),this.connections[e].syncStep2=r;var n=!0,i=!1,s=void 0;try{for(var a,o=this.userEventListeners[Symbol.iterator]();!(n=(a=o.next()).done);n=!0)(0,a.value)({action:"userJoined",user:e,role:t})}catch(e){i=!0,s=e}finally{try{!n&&o.return&&o.return()}finally{if(i)throw s}}null==this.currentSyncTarget&&this.findNextSyncTarget()}},{key:"whenSynced",value:function(e){this.isSynced?e():this.whenSyncedListeners.push(e)}},{key:"findNextSyncTarget",value:function(){if(null==this.currentSyncTarget){var e=null;for(var t in this.connections)if(!this.connections[t].isSynced){e=t;break}var r=this;null!=e?(this.currentSyncTarget=e,this.y.db.requestTransaction(x.mark(function t(){var n,i;return x.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(this.getStateSet(),"t0",1);case 1:n=t.t0,i={type:"sync step 1",stateSet:n,protocolVersion:r.protocolVersion,auth:r.authInfo},r.preferUntransformed&&0===Object.keys(n).length&&(i.preferUntransformed=!0),r.send(e,i);case 5:case"end":return t.stop()}},t,this)}))):r.isSynced||this.y.db.requestTransaction(x.mark(function e(){var t,n,i,s,a,o;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r.isSynced){e.next=22;break}for(r.isSynced=!0,t=!0,n=!1,i=void 0,e.prev=5,s=r.whenSyncedListeners[Symbol.iterator]();!(t=(a=s.next()).done);t=!0)(o=a.value)();e.next=13;break;case 9:e.prev=9,e.t0=e.catch(5),n=!0,i=e.t0;case 13:e.prev=13,e.prev=14,!t&&s.return&&s.return();case 16:if(e.prev=16,!n){e.next=19;break}throw i;case 19:return e.finish(16);case 20:return e.finish(13);case 21:r.whenSyncedListeners=[];case 22:case"end":return e.stop()}},e,this,[[5,9,13,21],[14,,16,20]])}))}}},{key:"send",value:function(e,t){this.log("Send '%s' to %s",t.type,e),this.logMessage("Message: %j",t)}},{key:"broadcast",value:function(e){this.log("Broadcast '%s'",e.type),this.logMessage("Message: %j",e)}},{key:"broadcastOps",value:function(t){function r(){n.broadcastOpBuffer.length>0&&(n.broadcast({type:"update",ops:n.broadcastOpBuffer}),n.broadcastOpBuffer=[])}t=t.map(function(t){return e.Struct[t.struct].encode(t)});var n=this;0===this.broadcastOpBuffer.length?(this.broadcastOpBuffer=t,this.y.db.whenTransactionsFinished().then(r)):this.broadcastOpBuffer=this.broadcastOpBuffer.concat(t)}},{key:"receiveMessage",value:function(e,t){var r=this;if(e===this.userId)return Promise.resolve();if(this.log("Receive '%s' from %s",t.type,e),this.logMessage("Message: %j",t),null!=t.protocolVersion&&t.protocolVersion!==this.protocolVersion)return this.log("You tried to sync with a yjs instance that has a different protocol version\n (You: "+this.protocolVersion+", Client: "+t.protocolVersion+").\n The sync was stopped. You need to upgrade your dependencies (especially Yjs & the Connector)!\n "),this.send(e,{type:"sync stop",protocolVersion:this.protocolVersion}),Promise.reject(new Error("Incompatible protocol version"));if(null!=t.auth&&null!=this.connections[e]){var n=this.checkAuth(t.auth,this.y);this.connections[e].auth=n,n.then(function(t){var n=!0,i=!1,s=void 0;try{for(var a,o=r.userEventListeners[Symbol.iterator]();!(n=(a=o.next()).done);n=!0)(0,a.value)({action:"userAuthenticated",user:e,auth:t})}catch(e){i=!0,s=e}finally{try{!n&&o.return&&o.return()}finally{if(i)throw s}}})}else null!=this.connections[e]&&null==this.connections[e].auth&&(this.connections[e].auth=this.checkAuth(null,this.y));return null!=this.connections[e]&&null!=this.connections[e].auth?this.connections[e].auth.then(function(n){if("sync step 1"===t.type&&s(n)){var i=r,o=t,c=void 0;c="slave"===r.role?Promise.all(Object.keys(r.connections).map(function(e){return r.connections[e]}).filter(function(e){return"master"===e.role}).map(function(e){return e.syncStep2.promise})):Promise.resolve(),c.then(function(){r.y.db.requestTransaction(x.mark(function r(){var n,s,a;return x.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.delegateYield(this.getStateSet(),"t0",1);case 1:return n=r.t0,r.delegateYield(this.getDeleteSet(),"t1",3);case 3:if(s=r.t1,a={type:"sync step 2",stateSet:n,deleteSet:s,protocolVersion:this.protocolVersion,auth:this.authInfo},!0!==t.preferUntransformed||0!==Object.keys(o.stateSet).length){r.next=10;break}return r.delegateYield(this.getOperationsUntransformed(),"t2",7);case 7:a.osUntransformed=r.t2,r.next=12;break;case 10:return r.delegateYield(this.getOperations(o.stateSet),"t3",11);case 11:a.os=r.t3;case 12:i.send(e,a),this.forwardToSyncingClients?(i.syncingClients.push(e),setTimeout(function(){i.syncingClients=i.syncingClients.filter(function(t){return t!==e}),i.send(e,{type:"sync done"})},5e3)):i.send(e,{type:"sync done"});case 14:case"end":return r.stop()}},r,this)}))})}else{if("sync step 2"===t.type&&a(n)){var u=r.y.db,l=r.connections[e].syncStep2,d=t;return u.requestTransaction(x.mark(function e(){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null==d.osUntransformed){e.next=4;break}return e.delegateYield(this.applyOperationsUntransformed(d.osUntransformed,d.stateSet),"t0",2);case 2:e.next=5;break;case 4:this.store.apply(d.os);case 5:case"end":return e.stop()}},e,this)})),u.whenTransactionsFinished().then(function(){u.requestTransaction(x.mark(function e(){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.applyDeleteSet(d.deleteSet),"t0",1);case 1:case"end":return e.stop()}},e,this)})),l.resolve()}),l.promise}if("sync done"===t.type){var h=r;r.connections[e].syncStep2.promise.then(function(){h._setSyncedWith(e)})}else if("update"===t.type&&a(n)){if(r.forwardToSyncingClients){var f=!0,p=!1,g=void 0;try{for(var y,v=r.syncingClients[Symbol.iterator]();!(f=(y=v.next()).done);f=!0){var b=y.value;r.send(b,t)}}catch(e){p=!0,g=e}finally{try{!f&&v.return&&v.return()}finally{if(p)throw g}}}if(r.y.db.forwardAppliedOperations){var k=t.ops.filter(function(e){return"Delete"===e.struct});k.length>0&&r.broadcastOps(k)}r.y.db.apply(t.ops)}}}):Promise.reject(new Error("Unable to deliver message"))}},{key:"_setSyncedWith",value:function(e){var t=this.connections[e];null!=t&&(t.isSynced=!0),e===this.currentSyncTarget&&(this.currentSyncTarget=null,this.findNextSyncTarget())}},{key:"parseMessageFromXml",value:function(e){function t(e){var n=!0,i=!1,s=void 0;try{for(var a,o=e.children[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var c=a.value;return"true"===c.getAttribute("isArray")?t(c):r(c)}}catch(e){i=!0,s=e}finally{try{!n&&o.return&&o.return()}finally{if(i)throw s}}}function r(e){var n={};for(var i in e.attrs){var s=e.attrs[i],a=parseInt(s,10);isNaN(a)||""+a!==s?n[i]=s:n[i]=a}for(var o in e.children){var c=o.name;"true"===o.getAttribute("isArray")?n[c]=t(o):n[c]=r(o)}return n}r(e)}},{key:"encodeMessageToXml",value:function(e,t){function r(e,t){for(var i in t){var s=t[i];null==i||(s.constructor===Object?r(e.c(i),s):s.constructor===Array?n(e.c(i),s):e.setAttribute(i,s))}}function n(e,t){e.setAttribute("isArray","true");var i=!0,s=!1,a=void 0;try{for(var o,c=t[Symbol.iterator]();!(i=(o=c.next()).done);i=!0){var u=o.value;u.constructor===Object?r(e.c("array-element"),u):n(e.c("array-element"),u)}}catch(e){s=!0,a=e}finally{try{!i&&c.return&&c.return()}finally{if(s)throw a}}}if(t.constructor===Object)r(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t);else{if(t.constructor!==Array)throw new Error("I can't encode this json!");n(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t)}}}]),t}();e.AbstractConnector=t}(c),function(e){var t=function(){function t(e,r){function n(){return i.whenTransactionsFinished().then(function(){return i.gcTimeout>0&&(i.gc1.length>0||i.gc2.length>0)?(i.y.connector.isSynced||console.warn("gc should be empty when not synced!"),new Promise(function(e){i.requestTransaction(x.mark(function t(){var r,s;return x.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(null==i.y.connector||!i.y.connector.isSynced){t.next=10;break}r=0;case 2:if(!(r0&&(i.gcInterval=setTimeout(n,i.gcTimeout)),e();case 12:case"end":return t.stop()}},t,this)}))})):(i.gcTimeout>0&&(i.gcInterval=setTimeout(n,i.gcTimeout)),Promise.resolve())})}d(this,t),this.y=e,r.gc=!0===r.gc,this.dbOpts=r;var i=this;this.userId=null;var s;this.userIdPromise=new Promise(function(e){s=e}),this.userIdPromise.resolve=s,this.forwardAppliedOperations=!1,this.listenersById={},this.listenersByIdExecuteNow=[],this.listenersByIdRequestPending=!1,this.initializedTypes={},this.waitingTransactions=[],this.transactionInProgress=!1,this.transactionIsFlushed=!1,"undefined"!=typeof YConcurrencyTestingMode&&(this.executeOrder=[]),this.gc1=[],this.gc2=[],this.garbageCollect=n,this.startGarbageCollector(),this.repairCheckInterval=r.repairCheckInterval?r.repairCheckInterval:6e3,this.opsReceivedTimestamp=new Date,this.startRepairCheck()}return h(t,[{key:"startGarbageCollector",value:function(){this.gc=this.dbOpts.gc,this.gc?this.gcTimeout=this.dbOpts.gcTimeout?this.dbOpts.gcTimeout:1e5:this.gcTimeout=-1,this.gcTimeout>0&&this.garbageCollect()}},{key:"startRepairCheck",value:function(){var e=this;this.repairCheckInterval>0&&(this.repairCheckIntervalHandler=setInterval(function(){new Date-e.opsReceivedTimestamp>e.repairCheckInterval&&Object.keys(e.listenersById).length>0&&(e.listenersById={},e.opsReceivedTimestamp=new Date,e.y.connector.repair())},this.repairCheckInterval))}},{key:"stopRepairCheck",value:function(){clearInterval(this.repairCheckIntervalHandler)}},{key:"queueGarbageCollector",value:function(e){this.y.connector.isSynced&&this.gc&&this.gc1.push(e)}},{key:"emptyGarbageCollector",value:function(){var e=this;return new Promise(function(t){var r=function r(){e.gc1.length>0||e.gc2.length>0?e.garbageCollect().then(r):t()};setTimeout(r,0)})}},{key:"addToDebug",value:function(){if("undefined"!=typeof YConcurrencyTestingMode){var e=Array.prototype.map.call(arguments,function(e){return"string"==typeof e?e:JSON.stringify(e)}).join("").replace(/"/g,"'").replace(/,/g,", ").replace(/:/g,": ");this.executeOrder.push(e)}}},{key:"getDebugData",value:function(){console.log(this.executeOrder.join("\n"))}},{key:"stopGarbageCollector",value:function(){var e=this;return this.gc=!1,this.gcTimeout=-1,new Promise(function(t){e.requestTransaction(x.mark(function r(){var n,i,s;return x.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:n=e.gc1.concat(e.gc2),e.gc1=[],e.gc2=[],i=0;case 4:if(!(i1)){e.next=10;break}return e.delegateYield(this.getInsertionCleanStart([t.id[0],t.id[1]+1]),"t0",8);case 8:t=e.t0,n=!0;case 10:if(!n){e.next=15;break}return t.gc=!0,e.delegateYield(this.setOperation(t),"t1",13);case 13:return this.store.queueGarbageCollector(t.id),e.abrupt("return",!0);case 15:return e.abrupt("return",!1);case 16:case"end":return e.stop()}},e,this)})},{key:"removeFromGarbageCollector",value:function(t){function r(r){return!e.utils.compareIds(r,t.id)}this.gc1=this.gc1.filter(r),this.gc2=this.gc2.filter(r),delete t.gc}},{key:"destroyTypes",value:function(){for(var e in this.initializedTypes){var t=this.initializedTypes[e];null!=t._destroy?t._destroy():console.error("The type you included does not provide destroy functionality, it will remain in memory (updating your packages will help).")}}},{key:"destroy",value:x.mark(function e(){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:clearTimeout(this.gcInterval),this.gcInterval=null,this.stopRepairCheck();case 3:case"end":return e.stop()}},e,this)})},{key:"setUserId",value:function(e){if(!this.userIdPromise.inProgress){this.userIdPromise.inProgress=!0;var t=this;t.requestTransaction(x.mark(function r(){var n;return x.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t.userId=e,r.delegateYield(this.getState(e),"t0",2);case 2:n=r.t0,t.opClock=n.clock,t.userIdPromise.resolve(e);case 5:case"end":return r.stop()}},r,this)}))}return this.userIdPromise}},{key:"whenUserIdSet",value:function(e){this.userIdPromise.then(e)}},{key:"getNextOpId",value:function(e){if(null==e)throw new Error("getNextOpId expects the number of created ids to create!");if(null==this.userId)throw new Error("OperationStore not yet initialized!");var t=[this.userId,this.opClock];return this.opClock+=e,t}},{key:"apply",value:function(t){this.opsReceivedTimestamp=new Date;for(var r=0;r0)for(var r={op:t,missing:e.length},n=0;n0&&this.store.y.connector.broadcastOps(n);case 10:case"end":return t.stop()}},t,this)})},{key:"deleteList",value:x.mark(function e(t){var r;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null==t){e.next=15;break}return e.delegateYield(this.getOperation(t),"t0",2);case 2:if(t=e.t0,t.gc){e.next=12;break}return t.gc=!0,t.deleted=!0,e.delegateYield(this.setOperation(t),"t1",7);case 7:return r=null!=t.content?t.content.length:1,e.delegateYield(this.markDeleted(t.id,r),"t2",9);case 9:if(null==t.opContent){e.next=11;break}return e.delegateYield(this.deleteOperation(t.opContent),"t3",11);case 11:this.store.queueGarbageCollector(t.id);case 12:t=t.right,e.next=0;break;case 15:case"end":return e.stop()}},e,this)})},{key:"deleteOperation",value:x.mark(function e(t,r,n){var i,s,a,o,c,u,l;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return null==r&&(r=1),e.delegateYield(this.markDeleted(t,r),"t0",2);case 2:if(!(r>0)){e.next=64;break}return i=!1,e.delegateYield(this.os.findWithUpperBound([t[0],t[1]+r-1]),"t1",5);case 5:if(s=e.t1,a=null!=s&&null!=s.content?s.content.length:1,!(null==s||s.id[0]!==t[0]||s.id[1]+a<=t[1])){e.next=12;break}s=null,r=0,e.next=22;break;case 12:if(s.deleted){e.next=21;break}if(!(s.id[1]t[1]+r)){e.next=21;break}return e.delegateYield(this.getInsertionCleanEnd([t[0],t[1]+r-1]),"t3",19);case 19:s=e.t3,a=s.content.length;case 21:r=s.id[1]-t[1];case 22:if(null==s){e.next=62;break}if(s.deleted){e.next=44;break}if(i=!0,s.deleted=!0,null==s.start){e.next=28;break}return e.delegateYield(this.deleteList(s.start),"t4",28);case 28:if(null==s.map){e.next=35;break}e.t5=x.keys(s.map);case 30:if((e.t6=e.t5()).done){e.next=35;break}return o=e.t6.value,e.delegateYield(this.deleteList(s.map[o]),"t7",33);case 33:e.next=30;break;case 35:if(null==s.opContent){e.next=37;break}return e.delegateYield(this.deleteOperation(s.opContent),"t8",37);case 37:if(null==s.requires){e.next=44;break}c=0;case 39:if(!(c0)){e.next=20;break}if(n.gc){e.next=11;break}n.len+=i,e.next=18;break;case 11:if(!((i=n.id[1]+n.len-t[1])=s.id[1])){e.next=61;break}i=n.id[1]+n.len-s.id[1];case 33:if(!(i>=0)){e.next=61;break}if(!s.gc){e.next=44;break}if(n.len-=i,!(i>=s.len)){e.next=41;break}if(!((i-=s.len)>0)){e.next=41;break}return e.delegateYield(this.ds.put(n),"t5",40);case 40:return e.delegateYield(this.markDeleted([s.id[0],s.id[1]+s.len],i),"t6",41);case 41:return e.abrupt("break",61);case 44:if(!(i>s.len)){e.next=56;break}return e.delegateYield(this.ds.findNext(s.id),"t7",46);case 46:return a=e.t7,e.delegateYield(this.ds.delete(s.id),"t8",48);case 48:if(null!=a&&n.id[0]===a.id[0]){e.next=52;break}return e.abrupt("break",61);case 52:s=a,i=n.id[1]+n.len-s.id[1];case 54:e.next=59;break;case 56:return n.len+=s.len-i,e.delegateYield(this.ds.delete(s.id),"t9",58);case 58:return e.abrupt("break",61);case 59:e.next=33;break;case 61:return e.delegateYield(this.ds.put(n),"t10",62);case 62:return e.abrupt("return",n);case 63:case"end":return e.stop()}},e,this)})},{key:"garbageCollectAfterSync",value:x.mark(function e(){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((this.store.gc1.length>0||this.store.gc2.length>0)&&console.warn("gc should be empty after sync"),this.store.gc){e.next=3;break}return e.abrupt("return");case 3:return e.delegateYield(this.os.iterate(this,null,null,x.mark(function e(t){var r,n,i;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.gc){e.next=3;break}return delete t.gc,e.delegateYield(this.setOperation(t),"t0",3);case 3:if(null==t.parent){e.next=23;break}return e.delegateYield(this.isDeleted(t.parent),"t1",5);case 5:if(!(r=e.t1)){e.next=23;break}if(t.gc=!0,t.deleted){e.next=20;break}return e.delegateYield(this.markDeleted(t.id,null!=t.content?t.content.length:1),"t2",10);case 10:if(t.deleted=!0,null==t.opContent){e.next=13;break}return e.delegateYield(this.deleteOperation(t.opContent),"t3",13);case 13:if(null==t.requires){e.next=20;break}n=0;case 15:if(!(n0)){t.next=53;break}u=n.left,t.t11=x.keys(n.originOf);case 39:if((t.t12=t.t11()).done){t.next=48;break}return l=t.t12.value,t.delegateYield(this.getOperation(n.originOf[l]),"t13",42);case 42:if(null==(d=t.t13)){t.next=46;break}return d.origin=u,t.delegateYield(this.setOperation(d),"t14",46);case 46:t.next=39;break;case 48:if(null==u){t.next=53;break}return t.delegateYield(this.getInsertion(u),"t15",50);case 50:return h=t.t15,null==h.originOf?h.originOf=n.originOf:h.originOf=n.originOf.concat(h.originOf),t.delegateYield(this.setOperation(h),"t16",53);case 53:if(null==n.origin){t.next=58;break}return t.delegateYield(this.getInsertion(n.origin),"t17",55);case 55:return f=t.t17,f.originOf=f.originOf.filter(function(t){return!e.utils.compareIds(r,t)}),t.delegateYield(this.setOperation(f),"t18",58);case 58:if(null==n.parent){t.next=61;break}return t.delegateYield(this.getOperation(n.parent),"t19",60);case 60:p=t.t19;case 61:if(null==p){t.next=66;break}if(g=!1,null!=n.parentSub?e.utils.compareIds(p.map[n.parentSub],n.id)&&(g=!0,null!=n.right?p.map[n.parentSub]=n.right:delete p.map[n.parentSub]):(e.utils.compareIds(p.start,n.id)&&(g=!0,p.start=n.right),e.utils.matchesId(n,p.end)&&(g=!0,p.end=n.left)),!g){t.next=66;break}return t.delegateYield(this.setOperation(p),"t20",66);case 66:return t.delegateYield(this.removeOperation(n.id),"t21",67);case 67:case"end":return t.stop()}},t,this)})},{key:"checkDeleteStoreForState",value:x.mark(function e(t){var r;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.ds.findWithUpperBound([t.user,t.clock]),"t0",1);case 1:null!=(r=e.t0)&&r.id[0]===t.user&&r.gc&&(t.clock=Math.max(t.clock,r.id[1]+r.len));case 3:case"end":return e.stop()}},e,this)})},{key:"updateState",value:x.mark(function e(t){var r,n,i;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.getState(t),"t0",1);case 1:return r=e.t0,e.delegateYield(this.checkDeleteStoreForState(r),"t1",3);case 3:return e.delegateYield(this.getInsertion([t,r.clock]),"t2",4);case 4:n=e.t2,i=null!=n&&null!=n.content?n.content.length:1;case 6:if(!(null!=n&&t===n.id[0]&&n.id[1]<=r.clock&&n.id[1]+i>r.clock)){e.next=14;break}return r.clock+=i,e.delegateYield(this.checkDeleteStoreForState(r),"t3",9);case 9:return e.delegateYield(this.os.findNext(n.id),"t4",10);case 10:n=e.t4,i=null!=n&&null!=n.content?n.content.length:1,e.next=6;break;case 14:return e.delegateYield(this.setState(r),"t5",15);case 15:case"end":return e.stop()}},e,this)})},{key:"applyDeleteSet",value:x.mark(function e(t){var r,n,i,s,a,o,c,u,l,d,h;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=[],e.t0=x.keys(t);case 2:if((e.t1=e.t0()).done){e.next=11;break}return n=e.t1.value,i=t[n],s=0,a=i[s],e.delegateYield(this.ds.iterate(this,[n,0],[n,Number.MAX_VALUE],x.mark(function e(t){var o;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null==a){e.next=10;break}if(o=0,!(t.id[1]+t.len<=a[0])){e.next=6;break}return e.abrupt("break",10);case 6:a[0]=c[1])){e.next=36;break}return e.delegateYield(this.os.findWithUpperBound([c[0],u-1]),"t5",20);case 20:if(null!=(l=e.t5)){e.next=23;break}return e.abrupt("break",36);case 23:if(d=null!=l.content?l.content.length:1,!(l.id[0]!==c[0]||l.id[1]+d<=c[1])){e.next=26;break}return e.abrupt("break",36);case 26:if(!(l.id[1]+d>c[1]+c[2])){e.next=29;break}return e.delegateYield(this.getInsertionCleanEnd([c[0],c[1]+c[2]-1]),"t6",28);case 28:l=e.t6;case 29:if(!(l.id[1]1)){t.next=15;break}return s=i[0],a=e.Struct[s].create(r),a.type=i[1],t.delegateYield(this.setOperation(a),"t1",12);case 12:return t.abrupt("return",a);case 15:throw new Error("Unexpected case. Operation cannot be generated correctly!Incompatible Yjs version?");case 16:case"end":return t.stop()}},t,this)})},{key:"removeOperation",value:x.mark(function e(t){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.os.delete(t),"t0",1);case 1:case"end":return e.stop()}},e,this)})},{key:"setState",value:x.mark(function e(t){var r;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r={id:[t.user],clock:t.clock},e.delegateYield(this.ss.put(r),"t0",2);case 2:case"end":return e.stop()}},e,this)})},{key:"getState",value:x.mark(function e(t){var r,n;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.ss.find([t]),"t0",1);case 1:return r=e.t0,n=null==r?null:r.clock,null==n&&(n=0),e.abrupt("return",{user:t,clock:n});case 5:case"end":return e.stop()}},e,this)})},{key:"getStateVector",value:x.mark(function e(){var t;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],e.delegateYield(this.ss.iterate(this,null,null,x.mark(function e(r){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t.push({user:r.id[0],clock:r.clock});case 1:case"end":return e.stop()}},e,this)})),"t0",2);case 2:return e.abrupt("return",t);case 3:case"end":return e.stop()}},e,this)})},{key:"getStateSet",value:x.mark(function e(){var t;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.delegateYield(this.ss.iterate(this,null,null,x.mark(function e(r){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t[r.id[0]]=r.clock;case 1:case"end":return e.stop()}},e,this)})),"t0",2);case 2:return e.abrupt("return",t);case 3:case"end":return e.stop()}},e,this)})},{key:"getOperations",value:x.mark(function t(r){var n,i,s,a,o,c,u,l,d,h,f,p,g,y,v,b,k,m,w;return x.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return null==r&&(r={}),n=[],t.delegateYield(this.getStateVector(),"t0",3);case 3:i=t.t0,s=!0,a=!1,o=void 0,t.prev=7,c=i[Symbol.iterator]();case 9:if(s=(u=c.next()).done){t.next=23;break}if(l=u.value,"_"!==(d=l.user)){t.next=14;break}return t.abrupt("continue",20);case 14:if(!((h=r[d]||0)>0)){t.next=19;break}return t.delegateYield(this.getInsertion([d,h]),"t1",17);case 17:null!=(f=t.t1)&&(h=f.id[1]);case 19:r[d]=h;case 20:s=!0,t.next=9;break;case 23:t.next=29;break;case 25:t.prev=25,t.t2=t.catch(7),a=!0,o=t.t2;case 29:t.prev=29,t.prev=30,!s&&c.return&&c.return();case 32:if(t.prev=32,!a){t.next=35;break}throw o;case 35:return t.finish(32);case 36:return t.finish(29);case 37:p=!0,g=!1,y=void 0,t.prev=40,v=i[Symbol.iterator]();case 42:if(p=(b=v.next()).done){t.next=52;break}if(k=b.value,m=k.user,w=r[m],"_"!==m){t.next=48;break}return t.abrupt("continue",49);case 48:return t.delegateYield(this.os.iterate(this,[m,w],[m,Number.MAX_VALUE],x.mark(function t(i){var s,a,o,c;return x.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(i=e.Struct[i.struct].encode(i),"Insert"===i.struct){t.next=5;break}n.push(i),t.next=40;break;case 5:if(!(null==i.right||i.right[1]<(r[i.right[0]]||0))){t.next=40;break}s=i,a=[i],o=i.right;case 9:if(null!=s.left){t.next=14;break}return i.left=null,n.push(i),t.abrupt("break",40);case 14:return t.delegateYield(this.getInsertion(s.left),"t0",15);case 15:for(s=t.t0;a.length>0&&e.utils.matchesId(s,a[a.length-1].origin);)a.pop();if(!(s.id[1]<(r[s.id[0]]||0))){t.next=23;break}return i.left=e.utils.getLastId(s),n.push(i),t.abrupt("break",40);case 23:if(!e.utils.matchesId(s,i.origin)){t.next=33;break}if(i.left=i.origin,n.push(i),i=e.Struct[i.struct].encode(s),i.right=o,!(a.length>0)){t.next=30;break}throw new Error("Reached inconsistent OS state.Operations are not correctly connected.");case 30:a=[i],t.next=38;break;case 33:c=e.Struct[i.struct].encode(s),c.right=a[a.length-1].id,c.left=c.origin,n.push(c),a.push(s);case 38:t.next=9;break;case 40:case"end":return t.stop()}},t,this)})),"t3",49);case 49:p=!0,t.next=42;break;case 52:t.next=58;break;case 54:t.prev=54,t.t4=t.catch(40),g=!0,y=t.t4;case 58:t.prev=58,t.prev=59,!p&&v.return&&v.return();case 61:if(t.prev=61,!g){t.next=64;break}throw y;case 64:return t.finish(61);case 65:return t.finish(58);case 66:return t.abrupt("return",n.reverse());case 67:case"end":return t.stop()}},t,this,[[7,25,29,37],[30,,32,36],[40,54,58,66],[59,,61,65]])})},{key:"getOperationsUntransformed",value:x.mark(function e(){var t;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],e.delegateYield(this.os.iterate(this,null,null,x.mark(function e(r){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:"_"!==r.id[0]&&t.push(r);case 1:case"end":return e.stop()}},e,this)})),"t0",2);case 2:return e.abrupt("return",{untransformed:t});case 3:case"end":return e.stop()}},e,this)})},{key:"applyOperationsUntransformed",value:x.mark(function t(r,n){var i,s,a,o,c,u;return x.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:i=r.untransformed,s=0;case 2:if(!(s1)){r.next=84;break}return r.delegateYield(this.getInsertionCleanEnd(p.id),"t16",83);case 83:p=r.t16;case 84:this.store.removeFromGarbageCollector(p);case 85:return r.delegateYield(this.setOperation(p),"t17",86);case 86:if(null==n.parentSub){r.next=96;break}if(null!=f){r.next=90;break}return u.map[n.parentSub]=n.id,r.delegateYield(this.setOperation(u),"t18",90);case 90:if(null==n.right){r.next=92;break}return r.delegateYield(this.deleteOperation(n.right,1,!0),"t19",92);case 92:if(null==n.left){r.next=94;break}return r.delegateYield(this.deleteOperation(n.id,1,!0),"t20",94);case 94:r.next=100;break;case 96:if(null!=p&&null!=f){r.next=100;break}return null==p&&(u.end=e.utils.getLastId(n)),null==f&&(u.start=n.id),r.delegateYield(this.setOperation(u),"t21",100);case 100:i=0;case 101:if(!(i=0&&null!=i.right)){e.next=12;break}return e.delegateYield(this.getOperation(i.right),"t1",9);case 9:i=e.t1,e.next=13;break;case 12:return e.abrupt("break",15);case 13:e.next=5;break;case 15:return e.abrupt("return",n);case 16:case"end":return e.stop()}},e,this)}),map:x.mark(function e(t,r){var n,i;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=t.start,n=[];case 2:if(null==t){e.next=9;break}return e.delegateYield(this.getOperation(t),"t0",4);case 4:i=e.t0,i.deleted||n.push(r(i)),t=i.right,e.next=2;break;case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}},e,this)})},Map:{create:function(e){return{id:e,map:{},struct:"Map"}},encode:function(e){var t={struct:"Map",type:e.type,id:e.id,map:{}};return null!=e.requires&&(t.requires=e.requires),null!=e.info&&(t.info=e.info),t},requiredOps:function(){return[]},execute:x.mark(function e(){return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},e,this)}),get:x.mark(function e(t,r){var n,i;return x.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null==(n=t.map[r])){e.next=14;break}return e.delegateYield(this.getOperation(n),"t0",3);case 3:if(null!=(i=e.t0)&&!i.deleted){e.next=8;break}return e.abrupt("return",void 0);case 8:if(null!=i.opContent){e.next=12;break}return e.abrupt("return",i.content[0]);case 12:return e.delegateYield(this.getType(i.opContent),"t1",13);case 13:return e.abrupt("return",e.t1);case 14:case"end":return e.stop()}},e,this)})}};e.Struct=t}(c),function(e){function t(e){var t={};for(var r in e)t[r]=e[r];return t}function r(e){return e=t(e),null!=e.content&&(e.content=e.content.map(function(e){return e})),e}function n(e,t){return e[0]=e.id[1]&&t[1]=0)){e.next=10;break}if(s=this.readBuffer[i],s.id[1]!==r[1]||s.id[0]!==r[0]){e.next=7;break}for(;i=0)){e.next=19;break}if(s=this.writeBuffer[i],s.id[1]!==r[1]||s.id[0]!==r[0]){e.next=16;break}return a=s,e.abrupt("break",19);case 16:i--,e.next=11;break;case 19:if(!(i<0&&void 0===n)){e.next=22;break}return e.delegateYield(f(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"find",this).call(this,r),"t0",21);case 21:a=e.t0;case 22:if(null!=a){for(i=0;i=0)){e.next=11;break}if(s=this.writeBuffer[i],s.id[1]!==n[1]||s.id[0]!==n[0]){e.next=8;break}for(;i>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,y)}e.utils={},e.utils.bubbleEvent=function(e,t){for(e.eventHandler.callEventListeners(t),t.path=[];null!=e&&null!=e._deepEventHandler;){e._deepEventHandler.callEventListeners(t);var r=null;null!=e._parent&&(r=e.os.getType(e._parent)),null!=r&&null!=r._getPathToChild?(t.path=[r._getPathToChild(e._model)].concat(t.path),e=r):e=null}};var v=function(){function e(){d(this,e),this._eventListener={}}return h(e,[{key:"on",value:function(e,t){null==this._eventListener[e]&&(this._eventListener[e]=[]),this._eventListener[e].push(t)}},{key:"off",value:function(e,t){if(null==e||null==t)throw new Error("You must specify event name and function!");var r=this._eventListener[e]||[];this._eventListener[e]=r.filter(function(e){return e!==t})}},{key:"emit",value:function(e,t){(this._eventListener[e]||[]).forEach(function(e){return e(t)})}},{key:"destroy",value:function(){this._eventListener=null}}]),e}();e.utils.NamedEventHandler=v;var b=function(){function e(){d(this,e),this.eventListeners=[]}return h(e,[{key:"destroy",value:function(){this.eventListeners=null}},{key:"addEventListener",value:function(e){this.eventListeners.push(e)}},{key:"removeEventListener",value:function(e){this.eventListeners=this.eventListeners.filter(function(t){return e!==t})}},{key:"removeAllEventListeners",value:function(){this.eventListeners=[]}},{key:"callEventListeners",value:function(e){for(var t=0;t0;)for(var n=0;n0&&this.awaiting--,!(0===this.awaiting&&this.waiting.length>0)){t.next=70;break}o=0;case 7:if(!(o=0;s--){var a=this.waiting[s];"Insert"===a.struct&&(e.utils.matchesId(a,i.left)?(a.right=i.id,i.left=a.left):e.utils.compareIds(a.id,i.right)&&(a.left=e.utils.getLastId(i),i.right=a.right))}}this._tryCallEvents(t)}},{key:"awaitedDeletes",value:function(t,r){for(var n=this.waiting.splice(this.waiting.length-t),i=0;i0&&this.awaiting--,0===this.awaiting&&this.waiting.length>0){var t=[],r=[];this.waiting.forEach(function(e){"Delete"===e.struct?r.push(e):t.push(e)}),t=function(t){for(var r=[];t.length>0;)for(var n=0;n