phaser3-rex-plugins
Version:
6 lines • 56.8 kB
JavaScript
var e,t;e=void 0,t=function(){var e=function(e){return void 0===e&&(e="10.13"),{app:`https://www.gstatic.com/firebasejs/${e}/firebase-app-compat.js`,database:`https://www.gstatic.com/firebasejs/${e}/firebase-database-compat.js`,firestore:`https://www.gstatic.com/firebasejs/${e}/firebase-firestore-compat.js`}},t=function(e){if("object"!=typeof e||null===e)return e;if(Array.isArray(e))e.length=0;else for(var t in e)delete e[t];return e},r=function(e,r){var s=function(e,r){var s=Array.isArray(e);if(void 0===r?r=s?[]:{}:t(r),s){r.length=e.length;for(var i=0,n=e.length;i<n;i++)r[i]=e[i]}else for(var a in e)r[a]=e[a];return r}(e);for(var i in r)s.hasOwnProperty(i)&&(s[i]=r[i]);return s},s=function(e){return new Promise((function(t,r){!function(e,t){for(var r=document.getElementsByTagName("script"),s=0,i=r.length;s<i;s++)if(-1!=r[s].src.indexOf(e))return void(t&&t());var n=document.createElement("script");n.setAttribute("src",e),t&&(n.onload=t),document.head.appendChild(n)}(e,t)}))},i=function(e,t){return void 0===e&&(e=0),new Promise((function(r,s){setTimeout((function(){r(t)}),e)}))},n=function(e){return a(e)?Promise.resolve():i(10).then((function(){return n(e)}))},a=function(e){var t;for(var r in e)if(e[r]&&(t=o[r])&&!t())return!1;return!0},o={database:function(){return void 0!==firebase.database},firestore:function(){return void 0!==firebase.firestore}};class h{constructor(){}initializeApp(e){return firebase.initializeApp(e),this}static register(e,t){h.prototype[e]=t}}var u={setEventEmitter(e,t){return void 0===t&&(t=Phaser.Events.EventEmitter),this._privateEE=!0===e||void 0===e,this._eventEmitter=this._privateEE?new t:e,this},destroyEventEmitter(){return this._eventEmitter&&this._privateEE&&this._eventEmitter.shutdown(),this},getEventEmitter(){return this._eventEmitter},on(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit(e){return this._eventEmitter&&e&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}},c=function(e,t,r,s){var i=e&&("object"==typeof e||"function"==typeof e),n=s&&("object"==typeof s||"function"==typeof s);if(!i&&!n)return r;var a=String(t);if(i&&a in e)return e[a];if(n&&a in s)return s[a];if(-1===a.indexOf("."))return r;var o=a.split(".");if(i){var h=d(e,o,r);if(h.found)return h.value}if(n){var u=d(s,o,r);if(u.found)return u.value}return r},d=function(e,t,r){for(var s=e,i=r,n=0,a=t.length;n<a;n++){var o=t[n];if(!s||"object"!=typeof s&&"function"!=typeof s||!(o in s))return l.found=!1,l;s=i=s[o]}return l.found=!0,l.value=i,l},l={},m=function(e){if("object"!=typeof e||e.nodeType||e===e.window)return!1;try{if(e.constructor&&!{}.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}return!0},v={startReceiving(){return this.isReceiving&&this.receiverRef.key===this.receiverID||(this.stopReceiving(),this.isReceiving=!0,this.skipFirst=!0,this.receiverRef=this.database.ref(this.rootPath).child(this.receiverID),this.receiverRef.on("value",f,this),this.receiverRef.onDisconnect().remove()),this},stopReceiving(){return this.isReceiving?(this.isReceiving=!1,this.receiverRef.off("value",f,this),this.receiverRef.remove(),this.receiverRef.onDisconnect().cancel(),this):this}},f=function(e){if(this.skipFirst)this.skipFirst=!1;else{var t=e.val();null!=t&&(delete t.stamp,this.history.add(t),this.emit(this.eventNameMap.receive,t))}};class g{constructor(e){this.maxLength=c(e,"maxLength",-1),this.records=[]}add(e){return 0===this.maxLength||(this.records.push(e),this.maxLength>0&&this.records.length>this.maxLength&&this.records.shift()),this}clear(){return this.records.length=0,this}changeUserName(e,t){return 0===this.maxLength||this.records.forEach((function(r){r.senderID===e&&(r.senderName=t)})),this}}class I{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",y),this.database=firebase.database(),this.setRootPath(c(e,"root","")),this.skipFirst=!0,this.stamp=!1,this.userInfo={userID:"",userName:void 0},this.setSender(c(e,"senderID",""),c(e,"senderName","")),this.setReceiver(c(e,"receiverID","")),this.isReceiving=!1;var s=c(e,"history",0);!0===s?s=-1:!1===s&&(s=0),this.history=new g({maxLength:s})}shutdown(){this.stopReceiving().destroyEventEmitter()}destroy(){this.shutdown()}get userID(){return this.userInfo.userID}set userID(e){this.userInfo.userID=e}get userName(){return this.userInfo.userName}set userName(e){this.userInfo.userName=e}setRootPath(e){return this.rootPath=e,this.sendToRef=void 0,this.receiverRef=void 0,this}setSender(e,t){return m(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}setReceiver(e){return this.receiverID=e,this}changeUserName(e,t){return e===this.userID&&(this.userName=t),this.history.changeUserName(e,t),this}getHistory(){return this.history.records}clearHistory(){return this.history.clear(),this}}var p={send:function(e){if(this.sendToRef&&this.sendToRef.key===this.receiverID||(this.sendToRef=this.database.ref(this.rootPath).child(this.receiverID)),void 0===e)return this.sendToRef.remove();var t={message:e,senderID:this.userID,stamp:this.stamp};return void 0!==this.userName&&(t.senderName=this.userName),this.skipFirst=!1,this.stamp=!this.stamp,this.sendToRef.set(t)}};Object.assign(I.prototype,u,v,p);const y={receive:"receive"};var D=function(e){return null!==e&&"object"==typeof e},R=function(e,t,r,s="."){if(!D(e))return e;if(function(e){return null==e}(t)||""===t||Array.isArray(t)&&0===t.length)return e;if("string"==typeof t&&-1===t.indexOf(s)||"number"==typeof t)return e[t]=r,e;var i=function(e,t){return Array.isArray(e)||(e="string"!=typeof e||""===e.trim()?[]:e.split(t).filter(Boolean)),e}(t,s);if(0===i.length)return e;for(var n=e,a=i.length,o=0;o<a-1;o++){var h=i[o],u=n[h];D(u)||(n[h]={}),n=n[h]}return n[i[a-1]]=r,e};h.register("broadcast",(function(e){return new I(e)})),R(window,"RexPlugins.Fire.Broadcast",I);var P={clear(){return this.items.length=0,t(this.itemID2Index),this},getItems(){return this.items},hasItem(e){return this.itemID2Index.hasOwnProperty(e)},getItemIndexFromItemID(e){return null==e?null:this.itemID2Index[e]},getItemFromItemID(e){if(null==e)return null;var t=this.getItemIndexFromItemID(e);return null==t?null:this.items[t]},forEach(e,t){return this.items.forEach(e,t),this},updateItemID2Index(){var e;t(this.itemID2Index);for(var r=0,s=this.items.length;r<s;r++)e=this.items[r][this.keyItemID],this.itemID2Index[e]=r;return this}},b=function(e,t){var r=w.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.add,r),this.emit(this.eventNameMap.update,this.items)},k=function(e,t){var r=x.call(this,e);this.updateItemID2Index();var s=w.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.change,s,r),this.emit(this.eventNameMap.update,this.items)},E=function(e){var t=x.call(this,e);this.updateItemID2Index(),this.emit(this.eventNameMap.remove,t),this.emit(this.eventNameMap.update,this.items)},N=function(e){this.clear(),e.forEach(function(e){w.call(this,e,null,!0)}.bind(this)),this.updateItemID2Index(),this.emit(this.eventNameMap.update,this.items)},w=function(e,t,r){var s,i=this.getItemCallback,n=this.getItemCallbackScope;if(s=n?i.call(n,e):i(e),r)return this.items.push(s),s;if(null==t)this.items.unshift(s);else{var a=this.itemID2Index[t];a===this.items.length-1?this.items.push(s):this.items.splice(a+1,0,s)}return s},x=function(e){var t=this.itemID2Index[e.key],r=function(e,t){if(!(t>=e.length)){for(var r=e.length-1,s=e[t],i=t;i<r;i++)e[i]=e[i+1];return e.length=r,s}}(this.items,t);return r},F={start(e){return this.isUpdating=!1,e.once("value",N,this),this},stop(){return this}},U={start(e){return e.on("child_added",b,this),e.on("child_removed",E,this),e.on("child_moved",k,this),e.on("child_changed",k,this),this},stop(){return this.query.off("child_added",b,this),this.query.off("child_removed",E,this),this.query.off("child_moved",k,this),this.query.off("child_changed",k,this),this}},L={start(e){return e.on("value",N,this),this},stop(){return this.query.off("value",N,this),this}};
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2018 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/class C{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",j),this.isUpdating=!1,this.items=[],this.itemID2Index={},this.setItemIDKey(c(e,"itemIDKey","__itemID__")),this.setMode(c(e,"mode",1)),this.setGetitemCallback(c(e,"getItemCallback",M),c(e,"getItemCallbackScope",this)),this.setQuery(c(e,"query",void 0))}shutdown(){this.stopUpdate().clear()}destroy(){this.shutdown()}setItemIDKey(e){return this.keyItemID=e,this}setMode(e){return"string"==typeof e&&(e=_[e]),this.mode=e,this.updater=Q[e],this}setGetitemCallback(e,t){return this.getItemCallback=e,this.getItemCallbackScope=t,this}setQuery(e){return this.query=e,this}startUpdate(e){if(e)this.setQuery(e);else{if(!this.query)return this;e=this.query}return this.stopUpdate().clear(),this.isUpdating=!0,this.updater.start.call(this,e),this}stopUpdate(){return this.query&&this.isUpdating?(this.isUpdating=!1,this.updater.stop.call(this),this):this}}var M=function(e){var t=e.val();return t[this.keyItemID]=e.key,t};Object.assign(C.prototype,u,P);const j={update:"update",add:"add",remove:"remove",change:"change"},Q={0:F,1:U,2:L},_={once:0,child:1,all:2};var $=function(e,t){var r=!1;return e.forEach((function(e){if(e.val().userID===t)return r=!0,!0})),r};class T{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.database=firebase.database(),this.setRootPath(c(e,"root","")),this.userInfo={userID:"",userName:""},this.setUser(c(e,"userID",""),c(e,"userName","")),this.setMaxUsers(c(e,"maxUsers",0)),this.userList=new C({eventEmitter:this.getEventEmitter(),itemIDKey:"joinAt",eventNames:{add:c(e,"eventNames.join","join"),remove:c(e,"eventNames.leave","leave"),update:c(e,"eventNames.update","update"),change:c(e,"eventNames.change","change"),init:c(e,"eventNames.init","init"),changename:c(e,"eventNames.changename","changename")}}),this.isInList=!1,this.userID2ItemID={},this.userList.on(this.userList.eventNames.add,(function(e){this.userID2ItemID[e.userID]=e.joinAt,e.userID===this.userInfo.userID&&this.emit(this.userList.eventNames.init,this.getUsers())}),this).on(this.userList.eventNames.remove,(function(e){delete this.userID2ItemID[e.userID],e.userID===this.userID&&(this.isInList=!1)}),this).on(this.userList.eventNames.change,(function(e,t){var r=e.userID,s=e.userName,i=t.userName;s!==i&&this.emit(this.userList.eventNames.changename,r,s,i)}),this)}shutdown(){this.stopUpdate().destroyEventEmitter().leave(),this.userList.shutdown()}destroy(){this.shutdown()}get userID(){return this.userInfo.userID}set userID(e){this.userInfo.userID=e}get userName(){return this.userInfo.userName}set userName(e){this.userInfo.userName=e}setRootPath(e){return this.rootPath=e,this}get rootRef(){return this.database.ref(this.rootPath)}setUser(e,t){return m(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}setMaxUsers(e){return this.maxUsers=e,this}clear(){return this.userList.clear(),this}forEach(e,t){return this.userList.forEach(e,t),this}isFull(){return 0!==this.maxUsers&&this.userList.getItems().length>=this.maxUsers}isFirstUser(e){void 0===e&&(e=this.userID);var t=this.usersList.getItems()[0];return t&&t.userID===e}getUser(e){if(void 0===e&&(e=this.userID),!this.contains(e))return null;var t=this.userID2ItemID[e];return this.userList.getItemFromItemID(t)}getUsers(){return this.userList.getItems()}get rootRef(){return this.database.ref(this.rootPath)}getUserRef(e){if(void 0===e&&(e=this.userID),!this.contains(e))return null;var t=this.userID2ItemID[e];return this.rootRef.child(t)}contains(e){return void 0===e&&(e=this.userID),this.userID2ItemID.hasOwnProperty(e)}startUpdate(){var e=this.database.ref(this.rootPath);return this.maxUsers>0&&(e=e.limitToFirst(this.maxUsers)),this.userList.startUpdate(e),this}stopUpdate(){return this.userList.stopUpdate(),this}}var A={join:function(e,t){if(void 0===e&&(e=this.userID,t=this.userName),this.contains(e))return Promise.resolve();var r={userID:e,userName:t},s=this.maxUsers,n=this.database.ref(this.rootPath),a=n.push();return a.onDisconnect().remove().then((function(){return a.set(r)})).then((function(){return i(0)})).then((function(){return 0===s?(self.isInList=!0,Promise.resolve()):n.limitToFirst(s).once("value").then((function(t){return $(t,e)?(self.isInList=!0,Promise.resolve()):(self.isInList=!1,a.remove().then((function(){return a.onDisconnect().cancel()})).then((function(){return Promise.reject()})))}))}))},leave:function(e){if(void 0===e&&(e=this.userID),!this.contains(e))return Promise.resolve();var t=this.userID2ItemID[e];return this.database.ref(this.rootPath).child(t).remove()},changeUserName:function(e){var t=this;return new Promise((function(e,r){var s=t.getUserRef();s?e(s):t.rootRef.orderByChild("userID").equalTo(t.userID).once("child_added").then((function(t){e(t.ref)}))})).then((function(t){return t.child("userName").set(e)})).then((function(){return t.userName=e,Promise.resolve()}))}};Object.assign(T.prototype,u,A),h.register("onlineUserList",(function(e){return new T(e)})),R(window,"RexPlugins.Fire.OnlineUserList",T);var O=function(e){var t=new T({eventEmitter:this.getEventEmitter(),eventNames:{join:"userlist.join",leave:"userlist.leave",update:"userlist.update",change:"userlist.change",init:"userlist.init",changename:"userlist.changename"},userID:this.userInfo});return t.on("userlist.leave",(function(e){e.userID===this.userID&&S.call(this)}),this),this.on("room.join",(function(){t.startUpdate()})).on("room.leave",(function(){t.stopUpdate().clear()})),t},S=function(){this.emit("room.leave");var e=this;setTimeout((function(){e.roomID=void 0,e.roomName=void 0,e.doorState=void 0,e.leftRoomFlag=!1}),0)},K=function(e){return new C({eventEmitter:this.getEventEmitter(),root:this.getRoomFilterRef(),itemIDKey:"roomID",eventNames:{update:"roomlist.update",add:"roomlist.add",remove:"roomlist.remove",change:"roomlist.change"},mode:"once"})},B=function(e){var t=c(e,"broadcast",!0);if(!t)return null;var r=new I({eventEmitter:this.getEventEmitter(),eventNames:{receive:"broadcast.receive"},receiverID:"boradcast",senderID:this.userInfo,history:c(t,"history",!1)});return this.on("room.join",(function(e){r.setRootPath(this.getRoomDataPath(e.roomID)).startReceiving()}),this).on("room.leave",(function(){r.stopReceiving()}),this).on("userlist.changename",(function(e,t){r.changeUserName(e,t)}),this),r};function q(e){if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map((e=>q(e)));if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(Object.getPrototypeOf(e)!==Object.prototype)return e;const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=q(e[r]));return t}class z{constructor(e){void 0===e&&(e={}),this.data=e,this.refPath=""}getFullPath(e){if("string"==typeof e)if("."===e)e=this.refPath;else if(e.startsWith(".."))if(""!==this.refPath){var t=this.refPath.split(".");t.pop(),e=`${t.join(".")}${e.substring(1)}`}else e=e.substring(2);else e.startsWith(".")&&(e=""!==this.refPath?`${this.refPath}${e}`:e.substring(1));return e}setRefPath(e){return void 0===e&&(e=""),this.refPath=this.getFullPath(e),this}setValue(e,t){return void 0===e?this.clear():void 0===t?this.data=e:R(this.data,this.getFullPath(e),t),this}getValue(e){return void 0===e?this.data:("string"==typeof e&&(e=this.getFullPath(e).split(".")),V(this.data,e))}cloneValue(e){return q(this.getValue(e))}removeKey(e){if(void 0===e)this.clear();else{"string"==typeof e&&(e=this.getFullPath(e).split("."));var t=e.pop(),r=V(this.data,e);H(r)&&delete r[t]}return this}hasKey(e){"string"==typeof e&&(e=this.getFullPath(e).split("."));var t=e.pop(),r=V(this.data,e);return!!H(r)&&r.hasOwnProperty(t)}clear(){return t(this.data),this}clone(e){var t=e?this.cloneValue():this.data,r=new z(t);return r.setRefPath(this.refPath),r}}var H=function(e){return null!=e&&"object"==typeof e},V=function(e,t){if(""===t[0])return e;for(var r=e,s=0,i=t.length;s<i;s++){if(!H(r))return;r=r[t[s]]}return r};class W{constructor(e){this.setEventEmitter(e.eventEmitter,e.EventEmitterClass),this.parent=e.parent,this.key=e.key,this.parent?this.fullKeyPath=Y(this.parent.fullKeyPath,this.key):this.fullKeyPath="",this.type=e.type,this.eventNameMap=e.eventNames,this.table=e.table,this.database=firebase.database(),this.setRootPath(),this.children={}}shutdown(){this.stopUpdate().clear().destroyEventEmitter()}destroy(){this.shutdown()}setRootPath(e){var t;for(var r in void 0===e&&(e=`${this.parent?this.parent.rootPath:""}/${this.key}`),this.rootPath=e,this.children)(t=this.children[r])instanceof W&&t.setRootPath();return this}get rootRef(){return this.database.ref(this.rootPath)}load(){var e=this;return this.rootRef.once("value").then((function(t){var r=t.val()||{};return e.table.setValue(r),Promise.resolve(r)}))}setData(e,t){if(void 0===e)this.clear();else if(void 0===t){var r=e;for(e in this.children)r.hasOwnProperty(e)||this.removeChild(e);for(e in r)this.setChildData(e,r[e])}else this.setChildData(e,t);return this}clear(){for(var e in this.table.removeKey(this.fullKeyPath),this.children)this.removeChild(e);return this}get childClass(){}setChildData(e,t){var r=Y(this.fullKeyPath,e);if(this.table.setValue(r,t),this.children.hasOwnProperty(e))this.children[e].setData(t);else if(this.childClass){var s=new this.childClass({parent:this,key:e,type:this.type,eventEmitter:this.getEventEmitter(),eventNames:this.eventNameMap,table:this.table});s.startUpdate(),this.children[e]=s}return this}removeChild(e){return this.children.hasOwnProperty(e)&&(this.children[e].destroy(),delete this.children[e]),this}startUpdate(){}stopUpdate(){}}var Y=function(e,t){return null==e||""===e?t:null==t||""===t?e:`${e}.${t}`};Object.assign(W.prototype,u);class G extends W{startUpdate(){return this.rootRef.on("child_added",this.addCol,this),this.rootRef.on("child_removed",this.removeCol,this),this.rootRef.on("child_changed",this.changeColValue,this),this}stopUpdate(){return this.rootRef.off("child_added",this.addCol,this),this.rootRef.off("child_removed",this.removeCol,this),this.rootRef.off("child_changed",this.changeColValue,this),this}addCol(e){var t=e.key,r=e.val();switch(this.setData(t,r),this.type){case 1:this.emit(this.eventNameMap.addkey0,t,r);break;case 2:this.emit(this.eventNameMap.addkey1,this.key,t,r);break;default:this.emit(this.eventNameMap.addkey2,this.pageKey,this.key,t,r)}this.emit(this.eventNameMap.update,this.table.data)}removeCol(e){var t=e.key;switch(this.removeChild(t),this.type){case 1:this.emit(this.eventNameMap.removekey0,t);break;case 2:this.emit(this.eventNameMap.removekey1,this.key,t);break;default:this.emit(this.eventNameMap.removekey2,this.pageKey,this.key,t)}this.emit(this.eventNameMap.update,this.table.data)}changeColValue(e){var t=e.key,r=e.val();switch(this.setData(t,r),this.type){case 1:this.emit(this.eventNameMap.changekey0,t,r);break;case 2:this.emit(this.eventNameMap.changekey1,this.key,t,r);break;default:this.emit(this.eventNameMap.changekey2,this.pageKey,this.key,t,r)}this.emit(this.eventNameMap.update,this.table.data)}get pageKey(){return this.parent.key}}class J extends W{startUpdate(){return this.rootRef.on("child_added",this.addRow,this),this.rootRef.on("child_removed",this.removeRow,this),this}stopUpdate(){return this.rootRef.off("child_added",this.addRow,this),this.rootRef.off("child_removed",this.removeRow,this),this}addRow(e){var t=e.key,r=e.val();this.setData(t,r),2===this.type?this.emit(this.eventNameMap.addkey0,this.key,t,r):this.emit(this.eventNameMap.addkey1,this.key,t,r)}removeRow(e){var t=e.key;this.removeChild(t),2===this.type?this.emit(this.eventNameMap.removekey0,t):this.emit(this.eventNameMap.removekey1,this.key,t)}get childClass(){return G}get pageKey(){return this.parent.key}}var X=function(){var e=this;return this.initialFlag=!1,this.updater.clear().load().then((function(t){return e.initialFlag=!0,e.emit(e.eventNames.init,t),Promise.resolve(t)}))};class Z{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",se),this.database=firebase.database(),this.table=new z,this.setTableType(c(e,"type",3)),this.setRootPath(c(e,"root","")),this.initialFlag=!1}shutdown(){this.updater.destroy(),this.destroyEventEmitter().stopUpdate()}destroy(){this.shutdown()}setRootPath(e){return this.rootPath=e,this.updater.setRootPath(e),this}setTableType(e){"string"==typeof e&&(e=re[e]),this.tableType=e;var t=ee[e];return this.updater=new t({type:e,eventEmitter:this.getEventEmitter(),eventNames:this.eventNameMap,table:this.table}),this}getRootRef(){return this.database.ref(this.rootPath)}getRef(e,t,r){var s=this.getRootRef();return s=e?s.child(e):s,s=t?s.child(t):s,s=r?s.child(r):s}startUpdate(){return X.call(this),this.updater.startUpdate(),this}stopUpdate(){return this.updater.stopUpdate(),this}clear(){return this.updater.clear(),this}getData(){return this.table.getValue(arguments)}cloneData(){return this.table.cloneValue(arguments)}}var ee={1:G,2:J,3:class extends W{constructor(e){super(e)}startUpdate(){return this.rootRef.on("child_added",this.addPage,this),this.rootRef.on("child_removed",this.removePage,this),this}stopUpdate(){return this.rootRef.off("child_added",this.addPage,this),this.rootRef.off("child_removed",this.removePage,this),this}addPage(e){var t=e.key,r=e.val();this.setData(t,r),this.emit(this.eventNameMap.addkey0,t,r)}removePage(e){var t=e.key;this.removeChild(t),this.emit(this.eventNameMap.removekey0,t)}get childClass(){return J}}},te={setData:function(){var e,t,r,s;switch(arguments.length){case 4:[e,t,r,s]=arguments;break;case 3:[e,t,s]=arguments;break;case 2:[e,s]=arguments;break;default:s=arguments[0]}return this.getRef(e,t,r).set(s)},removeData:function(){var e,t,r;switch(arguments.length){case 3:[e,t,r]=arguments;break;case 2:[e,t]=arguments;break;default:e=arguments[0]}return this.getRef(e,t,r).remove()},incValue:function(){var e,t,r,s;switch(arguments.length){case 4:[e,t,r,s]=arguments;break;case 3:[e,t,s]=arguments;break;case 2:[e,s]=arguments;break;default:s=arguments[0]}return this.getRef(e,t,r).transaction((function(e){return null===e&&(e=0),e+s}))},transaction:function(){var e,t,r,s;switch(arguments.length){case 4:[e,t,r,s]=arguments;break;case 3:[e,t,s]=arguments;break;case 2:[e,s]=arguments;break;default:s=arguments[0]}return this.getRef(e,t,r).transaction(s)},updateData:function(e){return this.getRef().update(e)},removeDataOnDisconnect:function(){var e,t,r;switch(arguments.length){case 3:[e,t,r]=arguments;break;case 2:[e,t]=arguments;break;case 1:e=arguments[0]}return this.getRef(e,t,r).onDisconnect().remove()},setDataOnDisconnect:function(){var e,t,r,s;switch(arguments.length){case 4:[e,t,r,s]=arguments;break;case 3:[e,t,s]=arguments;break;case 2:[e,s]=arguments;break;default:s=arguments[0]}return this.getRef(e,t,r).onDisconnect().set(s)}};Object.assign(Z.prototype,u,te);const re={"1d":1,"2d":2,"3d":3},se={init:"init",update:"update",addkey0:"addkey0",removekey0:"removekey0",changekey0:"changekey0",addkey1:"addkey1",removekey1:"removekey1",changekey1:"changekey1",addkey2:"addkey2",removekey2:"removekey2",changekey2:"changekey2"};var ie=function(e){var t,r=c(e,"tables",void 0);if(void 0===r)return{};for(var s={},i=0,n=r.length;i<n;i++)s[(t=r[i]).key]=ne.call(this,t);return s},ne=function(e){var t=e.key,r=new Z({eventEmitter:this.getEventEmitter(),root:this.getItemTablePath(this.roomID,t),type:c(e,"type",1),eventNames:{init:`tables.${t}.init`,update:`tables.${t}.update`,addkey0:`tables.${t}.addkey0`,removekey0:`tables.${t}.removekey0`,changekey0:`tables.${t}.changekey0`,addkey1:`tables.${t}.addkey1`,removekey1:`tables.${t}.removekey1`,changekey1:`tables.${t}.changekey1`,addkey2:`tables.${t}.addkey2`,removekey2:`tables.${t}.removekey2`,changekey2:`tables.${t}.changekey2`}});return this.on("room.join",(function(){r.startUpdate()})).on("room.leave",(function(){r.clear().stopUpdate()})),r},ae=function(e,t){return void 0===t&&(t=""),`${e}|${t}`},oe=function(e){this.roomID=e.roomID,this.roomName=e.roomName,this.roomType=e.roomType,this.emit("room.join",e)},he=function(e){return this.getRoomAliveRef(e).transaction((function(e){return null===e||void 0}))},ue=function(e){var t=(e=r(ce,e)).roomID,s=e.roomName,i=e.roomType,n=e.door,a=e.join,o=e.filterData,h=this.getRoomRef(t),u=this.getRoomFilterRef(t),c=this.getRoomDataRef(t);this.isRemoveRoomWhenLeft=!e.presisted,this.isRemoveRoomWhenLeft&&(h.onDisconnect().remove(),u.onDisconnect().remove(),c.onDisconnect().remove());var d=ae(n,i),l={},m={filter:d,name:s};o&&(m.data=o),l[`room-filters/${t}`]=m;var v={name:s,filter:d,maxUsers:e.maxUsers,moderators:{}};v.moderators[this.userID]=this.userName,l[`room-data/${t}`]=v;var f=this;return new Promise((function(r,s){if(a){var i=f.userList.setRootPath(f.getUserListPath(t)).setMaxUsers(0).join();return f.userList.setMaxUsers(e.maxUsers),i.then(r,s)}return r()})).then((function(){return f.getRootRef().update(l)})).then((function(){return f.isRoomCreator=!0,a&&oe.call(f,e),Promise.resolve(e)}))},ce={roomID:"",roomName:"",roomType:"",maxUsers:0,presisted:!1,door:"open",join:!0,filterData:void 0},de=function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length);var s=t+Math.floor(Math.random()*r);return void 0===e[s]?null:e[s]},le=function(e,t,r){void 0===r&&(r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");for(var s=void 0===t?e:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)}(e,t),i="",n=0;n<s;n++)i+=de(r);return i},me=function(e,t,r,s){if(s.roomID=le(e,e,t),r<=0)return Promise.reject(s);r--;var i=this;return this.createRoom(s).catch((function(){return me.call(i,e,t,r,s)}))},ve=function(e){if(void 0===c(e,"roomID",void 0))return Promise.reject();this.isRemoveRoomWhenLeft=!1;var t=this;return fe.call(t,e).then((function(r){return t.userList.setRootPath(t.getUserListPath(e.roomID)).setMaxUsers(r.maxUsers).join()})).then((function(){return oe.call(t,e),Promise.resolve(e)}))},fe=function(e){var t=this;return this.getRoomDataRef(e.roomID).once("value").then((function(r){var s=r.val();return null===s?Promise.reject():(e.roomName=s.name,e.roomType=s.filter.split("|")[1],t.isRoomOpened(s)?Promise.resolve(s):Promise.reject())}))},ge=function(e,t,r){if(r===t.length)return Promise.reject();e.roomID=t[r].roomID,r++;var s=this;return this.joinRoom(e).catch((function(){return ge.call(s,e,t,r)}))},Ie={getRootRef(e){var t=this.database.ref(this.rootPath);return e&&(t=t.child(e)),t},getRoomRef(e,t){var r=this.getRootRef("rooms");return void 0!==e&&(r=r.child(e),void 0!==t&&(r=r.child(t))),r},getRoomAliveRef(e){return this.getRoomRef(e,"alive")},getUserListRef(e){return this.getRoomRef(e,"users")},getRoomFilterRef(e){var t=this.getRootRef("room-filters");return void 0!==e&&(t=t.child(e)),t},getRoomDataRef(e){var t=this.getRootRef("room-data");return void 0!==e&&(t=t.child(e)),t},getUserDataRef(e){var t=this.getRootRef("user-data");return void 0!==e&&(t=t.child(e)),t},getRoomDataPath(e,t){var r=`${this.rootPath}/rooms/${e}`;return t&&(r+=`/${t}`),r},getUserListPath(e){return this.getRoomDataPath(e,"users")},getItemTablePath(e,t){return`${this.getRoomDataPath(e,"tables")}/${t}`},getRoomListQuery(e,t){void 0===t&&(t="open");var r=this.getRoomFilterRef();return r=r.orderByChild("filter"),r=void 0===e?r.startAt(t).endAt(`${t}~`):r.equalTo(ae(t,e))}},pe={createRoom:function(e){void 0===e&&(e={}),null==e.roomID&&(e.roomID=this.getRoomRef().push().key);var t=this;return he.call(t,e.roomID).then((function(){return ue.call(t,e)}))},createRandomRoom:function(e){void 0===e&&(e={});var t=c(e,"digits",10),r=c(e,"candidates","0123456789"),s=c(e,"retry",1e3);return me.call(this,t,r,s,e)},joinRoom:function(e){var t=c(e,"leftThenJoin",!0),r=this;return t?this.leaveRoom().then((function(){return ve.call(r,e)})):ve.call(r,e)},joinRandomRoom:function(e){void 0===e&&(e={});var t=c(e,"roomType",""),r=c(e,"door","open"),s=this;return this.getRoomList(t,r).then((function(t){return function(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}}(t),ge.call(s,e,t,0)}))},leaveRoom:function(){if(!this.isInRoom())return Promise.resolve();if(this.leftRoomFlag=!0,this.isRemoveRoomWhenLeft)return this.removeRoom();var e=this.getRoomInfo();return this.userList.leave().then((function(){return Promise.resolve(e)}))},removeRoom:function(e){if(void 0===e&&(e=this.roomID),void 0===e)return Promise.resolve();var t={};t[`room-filter/${e}`]=null,t[`room-data/${e}`]=null,t[`rooms/${e}`]=null;var r=this.getRoomInfo();return this.getRootRef().update(t).then((function(){return Promise.resolve(r)}))},kickUser:function(e){return this.userList.contains(e)?e===this.userID?this.leaveRoom():this.userList.leave(e):Promise.resolve()},isRoomOpened:function(e){if(null==e)return!1;if("closed"===e.filter.split("|")[0])return!1;var t=this.userID;if(e.moderators.hasOwnProperty(t))return!0;switch(e.permission){case"black-list":var r=e["black-list"];return!(r&&r.hasOwnProperty(t));case"white-list":var s=e["white-list"];return s&&s.hasOwnProperty(t);default:return!0}},changeRoomState:function(e,t){1===arguments.length&&(t=e,e=void 0),void 0===e&&(e=this.roomID);var r=this;return this.hasRoom(e).then((function(s){if(!s)return Promise.resolve();var i=ae(t,r.roomType),n={};return n[`room-filters/${e}/filter`]=i,n[`room-data/${e}/filter`]=i,r.getRootRef().update(n)}))},changeFilterData:function(e,t){1===arguments.length&&(t=e,e=void 0),void 0===e&&(e=this.roomID);var r=this;return this.hasRoom(e).then((function(s){return s?r.getRoomFilterRef(e).child("data").update(t):Promise.resolve()}))},changeUserName:function(e){return this.userList.changeUserName(e)},changeRoomName:function(e,t){1===arguments.length&&(t=e,e=void 0),void 0===e&&(e=this.roomID);var r=this;return this.hasRoom(e).then((function(s){if(!s)return Promise.resolve();var i={};return i[`room-filters/${e}/name`]=t,i[`room-data/${e}/name`]=t,r.getRootRef().update(i)}))},openRoom:function(e){return this.setRoomState(e,"open")},closeRoom:function(e){return this.setRoomState(e,"closed")},getUserList:function(e){if(void 0===e)return this.userList.getUsers();var t=this;return new Promise((function(r,s){new C({itemIDKey:"joinAt",mode:"once"}).once("update",(function(e){r(e)})).startUpdate(t.getUserListRef(e))}))},getRoomList:function(e,t){var r=this;return new Promise((function(s,i){r.roomList.once("roomlist.update",(function(e){s(e)})).startUpdate(r.getRoomListQuery(e,t))}))},hasRoom:function(e){return e===this.roomID?Promise.resolve(!0):this.getRoomDataRef(e).once("value").then((function(e){var t=null!==e.val();return Promise.resolve(t)}))}};Object.assign(pe,Ie);class ye{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.database=firebase.database(),this.rootPath=c(e,"root",""),this.userInfo={userID:"",userName:""},this.setUser(c(e,"userID",""),c(e,"userName","")),this.isRoomCreator=!1,this.roomID=void 0,this.roomName=void 0,this.roomType=void 0,this.doorState=void 0,this.leftRoomFlag=!1,this.isRemoveRoomWhenLeft=void 0,this.userList=O.call(this,e),this.roomList=K.call(this,e),this.broadcast=B.call(this,e),this.tables=ie.call(this,e)}shutdown(){var e=this;this.destroyEventEmitter().leaveRoom().then((function(){e.userList.destroy(),e.userList=void 0,e.roomList.destroy(),e.roomList=void 0,e.broadcast.destroy(),e.broadcast=void 0}))}destroy(){this.shutdown()}get userID(){return this.userInfo.userID}set userID(e){this.userInfo.userID=e}get userName(){return this.userInfo.userName}set userName(e){this.userInfo.userName=e}getRoomInfo(e,t){return void 0===e&&(e=this.roomID),void 0===t&&(t=this.roomName),{roomID:e,roomName:t}}setUser(e,t){return m(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}isInRoom(e){return void 0===e?void 0!==this.roomID:this.roomID===e}isFull(){return this.userList.isFull()}isFirstUser(e){return this.userList.isFirstUser(e)}getUsers(){return this.userList.getUsers()}get maxUsers(){return this.userList.maxUsers}getTable(e){return this.tables[e]}}Object.assign(ye.prototype,u,pe),h.register("room",(function(e){return new ye(e)})),R(window,"RexPlugins.Fire.Room",ye);var De=function(e){var t=new T({eventEmitter:this.getEventEmitter(),eventNames:{join:"userlist.join",leave:"userlist.leave",update:"userlist.update",change:"userlist.change",init:"userlist.init",changename:"userlist.changename"},root:this.getUserListPath(),userID:this.userInfo,maxUsers:c(e,"maxUsers",0)});return t.on("userlist.leave",(function(e){e.userID===this.userID&&Re.call(this)}),this),this.on("room.join",(function(){t.startUpdate()})).on("room.leave",(function(){t.stopUpdate().clear()})),t},Re=function(){this.emit("room.leave");var e=this;setTimeout((function(){e.leftRoomFlag=!1}),0)},Pe=function(e){var t=c(e,"broadcast",!0);if(!t)return null;var r=new I({eventEmitter:this.getEventEmitter(),eventNames:{receive:"broadcast.receive"},root:this.rootPath,receiverID:"broadcast",senderID:this.userInfo,history:c(t,"history",!1)});return this.on("room.join",(function(){r.startReceiving()})).on("room.leave",(function(){r.stopReceiving()})).on("userlist.changename",(function(e,t){r.changeUserName(e,t)}),this),r},be=function(e){var t,r=c(e,"tables",void 0);if(void 0===r)return{};for(var s={},i=0,n=r.length;i<n;i++)s[(t=r[i]).key]=ke.call(this,t);return s},ke=function(e){var t=e.key,r=new Z({eventEmitter:this.getEventEmitter(),root:this.getItemTablePath(t),type:c(e,"type",1),eventNames:{init:`tables.${t}.init`,update:`tables.${t}.update`,addkey0:`tables.${t}.addkey0`,removekey0:`tables.${t}.removekey0`,changekey0:`tables.${t}.changekey0`,addkey1:`tables.${t}.addkey1`,removekey1:`tables.${t}.removekey1`,changekey1:`tables.${t}.changekey1`,addkey2:`tables.${t}.addkey2`,removekey2:`tables.${t}.removekey2`,changekey2:`tables.${t}.changekey2`}});return this.on("room.join",(function(){r.startUpdate()})).on("room.leave",(function(){r.clear().stopUpdate()})),r},Ee={getRoomRef(e){var t=this.database.ref(this.rootPath);return e&&(t=t.child(e)),t},getUserListRef(){return this.getRoomRef("users")},getRoomDataPath(e){var t=this.rootPath;return e&&(t+=`/${e}`),t},getUserListPath(){return this.getRoomDataPath("users")},getItemTablePath(e){return`${this.getRoomDataPath("tables")}/${e}`}},Ne={joinRoom:function(){var e=this;return this.userList.join().then((function(){return e.emit("room.join"),Promise.resolve()}))},leaveRoom:function(){return this.isInRoom()?(this.leftRoomFlag=!0,this.userList.leave()):Promise.resolve()},kickUser:function(e){return this.userList.contains(e)?e===this.userID?this.leaveRoom():this.userList.leave(e):Promise.resolve()},changeUserName:function(e){return this.userList.changeUserName(e)},getUserList:function(){return this.userList.getUsers()}};Object.assign(Ne,Ee);class we{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.database=firebase.database(),this.rootPath=c(e,"root",""),this.userInfo={userID:"",userName:""},this.setUser(c(e,"userID",""),c(e,"userName","")),this.leftRoomFlag=!1,this.userList=De.call(this,e),this.broadcast=Pe.call(this,e),this.tables=be.call(this,e)}shutdown(){}destroy(){this.shutdown()}get userID(){return this.userInfo.userID}set userID(e){this.userInfo.userID=e}get userName(){return this.userInfo.userName}set userName(e){this.userInfo.userName=e}setUser(e,t){return m(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}isInRoom(){return this.userList.isInList}isFull(){return this.userList.isFull()}isFirstUser(e){return this.userList.isFirstUser(e)}getUsers(){return this.userList.getUsers()}get maxUsers(){return this.userList.maxUsers}getTable(e){return this.tables[e]}}Object.assign(we.prototype,u,Ne),h.register("singleRoom",(function(e){return new we(e)})),R(window,"RexPlugins.Fire.SingleRoom",we),h.register("itemTable",(function(e){return new Z(e)})),R(window,"RexPlugins.Fire.ItemTable",Z);var xe=function(e){return void 0===e.totalLines&&(e.totalLines=1/0),void 0===e.linesPerPage&&(e.linesPerPage=1e3),e.remainderLines=e.totalLines,Fe(e)},Fe=function(e){var t=e.query;e.startDocRef&&(t=t[e.startMode](e.startDocRef));var r=Math.min(e.remainderLines,e.linesPerPage);return e.remainderLines-=r,t.limit(r).get().then((function(t){var s,i=0===e.remainderLines||t.size<r;return e.forEachPageCallback&&(i|=!!e.forEachPageCallback(t)),i?(e.resolveCallback&&(s=e.resolveCallback()),Promise.resolve(s)):(e.startDocRef=t.docs[t.size-1],e.startMode="startAfter",Fe(e))}))},Ue=function(e,t,r,s,i){void 0===t&&(t=1/0),void 0===r&&(r=0);var n=[],a=0;return xe({query:e,totalLines:r+t,startDocRef:s,startMode:i,forEachPageCallback:function(e){var t,s=e.size,i=r-a;i<=0?t=e.docs:i<s&&(t=e.docs.slice(i,s)),t&&n.push(...t),a+=s},resolveCallback:function(){return n}})},Le=function(){var e=this;return Ue(this.nextQuery,this.itemCount,0,this.baselineDocRef,this.baselineMode).then((function(t){var r=t.length;return e.cacheItems=t,e.pageIndex=0,e.startItemIndex=0,e.endItemIndex=e.startItemIndex+r-1,e.isFullPage=r===e.itemCount,e.prevPageEndDocRef=void 0,e.currPageStartDocRef=t[0],e.currPageEndDocRef=t[r-1],Promise.resolve(e.cacheItems)}))},Ce=function(){var e=this;return Ue(this.nextQuery,this.itemCount,0,this.baselineDocRef,this.baselineMode).then((function(t){var r=t.length;return e.cacheItems=t,e.pageIndex=0,e.startItemIndex=0,e.endItemIndex=e.startItemIndex+r-1,e.isFullPage=r===e.itemCount,Promise.resolve(e.cacheItems)}))},Me=function(){var e=this;return Ue(this.nextQuery,this.itemCount,0,this.currPageEndDocRef,"startAfter").then((function(t){var r=t.length;return e.cacheItems=t,e.pageIndex+=1,e.startItemIndex=e.endItemIndex+1,e.endItemIndex=e.startItemIndex+r-1,e.isFullPage=r===e.itemCount,e.prevPageEndDocRef=e.currPageEndDocRef,e.currPageStartDocRef=t[0],e.currPageEndDocRef=t[r-1],Promise.resolve(e.cacheItems)}))},je=function(){var e=(this.pageIndex+1)*this.itemCount,t=this;return Ue(this.nextQuery,this.itemCount,e,this.baselineDocRef,this.baselineMode).then((function(e){var r=e.length;return t.cacheItems=e,t.pageIndex+=1,t.startItemIndex=t.endItemIndex+1,t.endItemIndex=t.startItemIndex+r-1,t.isFullPage=r===t.itemCount,Promise.resolve(t.cacheItems)}))},Qe=function(){var e=this;return Ue(this.prevQuery,this.itemCount+1,0,this.currPageStartDocRef,"startAfter").then((function(t){var r=t.length-1;return e.cacheItems=t,e.cacheItems.pop(),e.cacheItems.reverse(),e.pageIndex-=1,e.endItemIndex=e.startItemIndex-1,e.startItemIndex=e.endItemIndex-r+1,e.isFullPage=r===e.itemCount,e.prevPageEndDocRef=t[r],e.currPageStartDocRef=t[r-1],e.currPageEndDocRef=t[0],Promise.resolve(e.cacheItems)}))},_e=function(){var e=(this.pageIndex-1)*this.itemCount,t=this;return Ue(this.nextQuery,this.itemCount,e,this.baselineDocRef,this.baselineMode).then((function(e){var r=e.length;return t.cacheItems=e,t.pageIndex-=1,t.endItemIndex=t.startItemIndex-1,t.startItemIndex=t.endItemIndex-r+1,t.isFullPage=r===t.itemCount,Promise.resolve(t.cacheItems)}))},$e=function(){var e=this;return Ue(this.nextQuery,this.itemCount,0,this.prevPageEndDocRef,"startAfter").then((function(t){var r=t.length;return e.cacheItems=t,e.endItemIndex=e.startItemIndex+r-1,e.isFullPage=r===e.itemCount,e.currPageStartDocRef=t[0],e.currPageEndDocRef=t[r-1],Promise.resolve(e.cacheItems)}))},Te=function(){var e=this.pageIndex*this.itemCount,t=this;return Ue(this.nextQuery,this.itemCount,e,this.baselineDocRef,this.baselineMode).then((function(e){var r=e.length;return t.cacheItems=e,t.endItemIndex=t.startItemIndex+r-1,t.isFullPage=r===t.itemCount,Promise.resolve(t.cacheItems)}))};class Ae{constructor(e){this.setItemCount(c(e,"itemCount",100)),this.setQuery(c(e,"query",void 0)),this.setDataMode(c(e,"dataMode",0)),this.setBaselineDoc(c(e,"baselineDoc",void 0),c(e,"baselineMode",void 0)),this.pageIndex=void 0,this.baselineDocRef=void 0,this.baselineMode="startAt",this.startItemIndex=void 0,this.endItemIndex=void 0,this.cacheItems=void 0,this.isFullPage=void 0}setItemCount(e){return this.itemCount=e,this}setQuery(e,t){if(m(e)){var r=e;this.nextQuery=r.next,this.prevQuery=r.previous}else this.nextQuery=e,this.prevQuery=t;return this.pageIndex=void 0,this.isFullPage=void 0,this}setDataMode(e){return"string"==typeof e&&(e=Se[e]),this.dataMode=e,this}setBaselineDoc(e,t){return e?(this.baselineDocRef=e.ref,this.baselineMode=t):this.baselineDocRef=void 0,this}}var Oe={loadFirstPage:function(){return(0===this.dataMode?Le:Ce).call(this)},loadNextPage:function(){return void 0===this.pageIndex?this.loadFirstPage():(0===this.dataMode?Me:je).call(this)},loadPreviousPage:function(){return void 0===this.pageIndex||1===this.pageIndex?this.loadFirstPage():(0===this.dataMode?Qe:_e).call(this)},loadCurrentPage:function(){return void 0===this.pageIndex||0===this.pageIndex?this.loadFirstPage():(0===this.dataMode?$e:Te).call(this)},load:function(e,t){void 0===t&&(t=0);var r=this;return Ue(this.nextQuery,e,t,this.baselineDocRef,this.baselineMode).then((function(s){var i=s.length;return r.cacheItems=s,r.pageIndex=void 0,r.startItemIndex=t,r.endItemIndex=r.startItemIndex+i-1,r.isFullPage=void 0===e||i===e,Promise.resolve(r.cacheItems)}))}};Object.assign(Ae.prototype,Oe);const Se={static:0,dynamic:1};h.register("pageLoader",(function(e){return new Ae(e)})),R(window,"RexPlugins.Fire.PageLoader",Ae);var Ke=function(e){var t=e.data();return t.headerDocID=e.id,t},Be=function(e){var t=this.userID;let r=this.cacheHeaders[e];if(r&&r.userID===t)return Promise.resolve(r);var s=this;return this.getFileQuery(t,e,"header").limit(1).get().then((function(t){let r;if(t.size>0){var i=t.docs[0];r=Ke(i),s.cacheHeaders[e]=r}return Promise.resolve(r)}))};class qe{constructor(e){this.database=firebase.firestore(),this.setRootPath(c(e,"root","")),this.cacheHeaders={},this.userInfo={userID:""},this.setOwner(c(e,"userID",""))}shutdown(){}destroy(){this.shutdown()}get userID(){return this.userInfo.userID}set userID(e){this.userInfo.userID=e}setRootPath(e){return this.rootPath=e,this.rootRef=this.database.collection(e),this}setOwner(e){var t=this.userID;return m(e)?this.userInfo=e:this.userID=e,t!==this.userID&&this.clearCache(),this}clearCache(){return t(this.cacheHeaders),this}getFileQuery(e,t,r){var s=this.rootRef;return s=e?s.where("userID","==",e):s,s=t?s.where("fileID","==",t):s,s=r?s.where("type","==",r):s}}var ze={save:function(e,t,r,s){"boolean"==typeof r&&(s=r,r=void 0),void 0===s&&(s=!1);var i=this.userID;void 0===t&&(t={}),t.userID=i,t.fileID=e,t.type="header",r&&(r.userID=i,r.fileID=e,r.type="content");var n=s?"update":"set",a=this;return Be.call(this,e).then((function(e){var s,i;e?(s=a.rootRef.doc(e.headerDocID),r&&(i=e.contentDocID?a.rootRef.doc(e.contentDocID):a.rootRef.doc())):(s=a.rootRef.doc(),r&&(i=a.rootRef.doc())),t.hasOwnProperty("headerDocID")&&delete t.headerDocID,i&&(t.contentDocID=i.id);var o=a.database.batch();return o[n](s,t),r&&o[n](i,r),o.commit()})).then((function(){return Promise.resolve({userID:i,fileID:e})})).catch((function(t){return Promise.reject({error:t,userID:i,fileID:e})}))},load:function(e){var t=this.userID;return this.getFileQuery(t,e).get().then((function(r){var s,i;return r.forEach((function(e){switch(docData.type){case"header":s=Ke(e);break;case"content":i=e.data()}})),Promise.resolve({userID:t,fileID:e,header:s,content:i})})).catch((function(){return Promise.reject({error:error,userID:t,fileID:e})}))},loadHeaders:function(){var e=this.userID,r=this;return this.getFileQuery(e,void 0,"header").get().then((function(s){var i;return t(r.cacheHeaders),s.forEach((function(e){i=Ke(e),r.cacheHeaders[i.fileID]=i})),Promise.resolve({userID:e,headers:r.cacheHeaders})})).catch((function(){return Promise.reject({error:error,userID:e})}))},delete:function(e){var t=this.userID,r=this;return LoadHeader.call(this,e).then((function(s){if(!s)return Promise.resolve({userID:t,fileID:e});var i=r.database.batch();return i.delete(r.rootRef.doc(s.headerDocID)),s.contentDocID&&i.delete(r.rootRef.doc(s.contentDocID)),i.commit()})).then((function(){return r.cacheHeaders.hasOwnProperty(e)&&delete r.cacheHeaders[e],Promise.resolve({userID:t,fileID:e})})).catch((function(r){return Promise.reject({error:r,userID:t,fileID:e})}))},clear:function(){var e=this.userID,t=this;return this.getFileQuery(e,void 0,"header").get().then((function(e){var r,s=t.database.batch();return e.forEach((function(e){r=DocToHeader(e),s.delete(t.rootRef.doc(r.headerDocID)),r.contentDocID&&s.delete(t.rootRef.doc(r.contentDocID))})),s.commit()})).then((function(){return t.clearCache(),Promise.resolve({userID:e})})).catch((function(t){return Promise.reject({error:t,userID:e})}))}};Object.assign(qe.prototype,ze),h.register("files",(function(e){return new qe(e)})),R(window,"RexPlugins.Fire.Files",qe);var He=function(e,t){var r=this;return this.database.runTransaction((function(s){var i=r.getAliasRef(t);return s.get(i).then((function(r){return r.exists?Promise.reject({id:e,alias:t}):(s.set(i,{id:e}),Promise.resolve({id:e,alias:t}))}))}))},Ve=function(e,t,r,s){var i=le(t,t,r);if(s<=0)return Promise.reject({id:e,alias:i});s--;var n=this;return He.call(n,e,i).catch((function(){setTimeout((function(){return Ve.call(n,e,t,r,s)}),0)}))};class We{constructor(e){this.database=firebase.firestore(),this.setRootPath(c(e,"root",""))}shutdown(){}destroy(){this.shutdown()}setRootPath(e){return this.rootPath=e,this.rootRef=this.database.collection(e),this}getAliasRef(e){return this.rootRef.doc(e)}}var Ye={add:function(e,t){var r=this;return this.getAlias(e).then((function(s){return s.alias?s.alias===t?Promise.resolve({id:e,alias:t}):Promise.reject({id:e,alias:t}):He.call(r,e,t)}))},addRandom:function(e,t){var r=c(t,"digits",10),s=c(t,"candidates","0123456789"),i=c(t,"retry",1e3),n=this;return this.getAlias(e).then((function(t){if(t.alias){var a=le(r,r,s);return t.alias===a?Promise.resolve({id:e,alias:a}):Promise.reject({id:e,alias:a})}return Ve.call(n,e,r,s,i)}))},getId:function(e){return this.getAliasRef(e).get().then((function(t){var r;return t.exists&&(r=t.data().id),Promise.resolve({id:r,alias:e})}))},getAlias:function(e){return this.rootRef.where("id","==",e).limit(1).get().then((function(t){var r;return t.size>0&&(r=t.docs[0].id),Promise.resolve({id:e,alias:r})}))},getRandomAlias:function(e,t){var r=c(t,"digits",10),s=c(t,"candidates","0123456789"),i=c(t,"retry",1e3),n=this;return this.getAlias(e).then((function(t){return t.alias?Promise.resolve(t):Ve.call(n,e,r,s,i)}))},remove:function(e){var t=this;return this.getAlias(e).then((function(e){return t.getAliasRef(e).delete()}))}};Object.assign(We.prototype,Ye),h.register("idAlias",(function(e){return new We(e)})),R(window,"RexPlugins.Fire.IdAlias",We);var Ge=function(e){var t=e?new Date(e):new Date,r=t.getFullYear(),s=t.getMonth()+1,i=t.getDate(),n=new Date(t.getFullYear(),0,1);return{d:`${r}-${s}-${i}`,w:`${r}-${Math.ceil(((t-n)/864e5+n.getDay()+1)/7)}`,m:`${r}-${s}`,y:`${r}`,a:""}},Je={d:"tagD",w:"tagW",m:"tagM",y:"tagY",a:"tagA"},Xe={d:"scoreD",w:"scoreW",m:"scoreM",y:"scoreY",a:"scoreA"},Ze={loadFirstPage(){this.resetPageQuery();var e=this;return this.page.loadFirstPage().then((function(t){return Promise.resolve(et.call(e,t))}))},loadNextPage(){this.resetPageQuery();var e=this;return this.page.loadNextPage().then((function(t){return Promise.resolve(et.call(e,t))}))},loadPreviousPage(){this.resetPageQuery();var e=this;return this.page.loadPreviousPage().then((function(t){return Promise.resolve(et.call(e,t))}))},loadCurrentPage(){this.resetPageQuery();var e=this;return this.page.loadCurrentPage().then((function(t){return Promise.resolve(et.call(e,t))}))},load(e,t){this.resetPageQuery();var r=this;return this.page.load(e,t).then((function(e){return Promise.resolve(et.call(r,e))}))},resetPageQuery(){return this.resetQueryFlag?(this.resetQueryFlag=!1,this.page.setQuery(this.getPageQuery()),this):this}},et=function(e){for(var t,r=[],s=Xe[this.timeFilterType[0]],i=0,n=e.length;i<n;i++){if(t=e[i].data(),!1!==this.timeFilters)for(var a in t.score=t[s],this.timeFilters)delete t[Je[a]],delete t[Xe[a]];r.push(t)}return r},tt=function(e){return Ue(e).then((function(e){if(0===e.length)return Promise.resolve();for(var t,r,s=[],i=0,n=e.length;i<n;i++)void 0===t&&(t=firebase.firestore().batch(),r=0),t.delete(e[i].ref),++r>=500&&(s.push(t.commit()),t=void 0);return t&&s.push(t.commit()),Promise.all(s)}))},rt={deleteUser(e){void 0===e&&(e=this.userID);var t=this.getRecordQuery(void 0,void 0,e,void 0);return tt(t)},deleteBoard(e,t){void 0===e&&(e=this.boardID),void 0===t&&(t=this.tag);var r=this.getRecordQuery(e,t,void 0,void 0);return tt(r)}},st={getRecordQuery(e,t,r,s){var i=this.rootRef;return i=void 0!==e?i.where("boardID","==",e):i,i=void 0!==t?i.where("tag","==",t):i,i=void 0!==r?i.where("userID","==",r):i,void 0!==s&&(i=i.wher