UNPKG

phaser4-rex-plugins

Version:
6 lines 56.4 kB
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){if(!e||"number"==typeof e)return r;if("string"==typeof t){if(e.hasOwnProperty(t))return e[t];if(-1===t.indexOf("."))return r;t=t.split(".")}for(var s=t,i=e,n=r,a=0;a<s.length;a++){if(t=s[a],!i.hasOwnProperty(t)){n=r;break}i=n=i[t]}return n},d=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},l={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",m,this),this.receiverRef.onDisconnect().remove()),this},stopReceiving(){return this.isReceiving?(this.isReceiving=!1,this.receiverRef.off("value",m,this),this.receiverRef.remove(),this.receiverRef.onDisconnect().cancel(),this):this}},m=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 v{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 f{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",I),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 v({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 d(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 g={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(f.prototype,u,l,g);const I={receive:"receive"};var p=function(e){return null==e||""===e||0===e.length},y=function(e,t,r,s){if(void 0===s&&(s="."),"object"==typeof e){if(p(t)){if(null==r)return;"object"==typeof r&&(e=r)}else{"string"==typeof t&&(t=t.split(s));var i=t.pop(),n=function(e,t,r){var s=e;if(p(t));else{var i;"string"==typeof t&&(t=t.split("."));for(var n=0,a=t.length;n<a;n++){var o;null!=s[i=t[n]]&&"object"==typeof s[i]||(o=n===a-1?void 0===r?{}:r:{},s[i]=o),s=s[i]}}return s}(e,t);n[i]=r}return e}};h.register("broadcast",(function(e){return new f(e)})),y(window,"RexPlugins.Fire.Broadcast",f);var D={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}},R=function(e,t){var r=E.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.add,r),this.emit(this.eventNameMap.update,this.items)},P=function(e,t){var r=w.call(this,e);this.updateItemID2Index();var s=E.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.change,s,r),this.emit(this.eventNameMap.update,this.items)},b=function(e){var t=w.call(this,e);this.updateItemID2Index(),this.emit(this.eventNameMap.remove,t),this.emit(this.eventNameMap.update,this.items)},k=function(e){this.clear(),e.forEach(function(e){E.call(this,e,null,!0)}.bind(this)),this.updateItemID2Index(),this.emit(this.eventNameMap.update,this.items)},E=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},w=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},N={start(e){return this.isUpdating=!1,e.once("value",k,this),this},stop(){return this}},x={start(e){return e.on("child_added",R,this),e.on("child_removed",b,this),e.on("child_moved",P,this),e.on("child_changed",P,this),this},stop(){return this.query.off("child_added",R,this),this.query.off("child_removed",b,this),this.query.off("child_moved",P,this),this.query.off("child_changed",P,this),this}},F={start(e){return e.on("value",k,this),this},stop(){return this.query.off("value",k,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 U{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",C),this.isUpdating=!1,this.items=[],this.itemID2Index={},this.setItemIDKey(c(e,"itemIDKey","__itemID__")),this.setMode(c(e,"mode",1)),this.setGetitemCallback(c(e,"getItemCallback",L),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=j[e]),this.mode=e,this.updater=M[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 L=function(e){var t=e.val();return t[this.keyItemID]=e.key,t};Object.assign(U.prototype,u,D);const C={update:"update",add:"add",remove:"remove",change:"change"},M={0:N,1:x,2:F},j={once:0,child:1,all:2};var Q=function(e,t){var r=!1;return e.forEach((function(e){if(e.val().userID===t)return r=!0,!0})),r};class _{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 U({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 d(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 $={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 Q(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(_.prototype,u,$),h.register("onlineUserList",(function(e){return new _(e)})),y(window,"RexPlugins.Fire.OnlineUserList",_);var T=function(e){var t=new _({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&&O.call(this)}),this),this.on("room.join",(function(){t.startUpdate()})).on("room.leave",(function(){t.stopUpdate().clear()})),t},O=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)},A=function(e){return new U({eventEmitter:this.getEventEmitter(),root:this.getRoomFilterRef(),itemIDKey:"roomID",eventNames:{update:"roomlist.update",add:"roomlist.add",remove:"roomlist.remove",change:"roomlist.change"},mode:"once"})},S=function(e){var t=c(e,"broadcast",!0);if(!t)return null;var r=new f({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 K(e){if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map((e=>K(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]=K(e[r]));return t}class B{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:y(this.data,this.getFullPath(e),t),this}getValue(e){return void 0===e?this.data:("string"==typeof e&&(e=this.getFullPath(e).split(".")),z(this.data,e))}cloneValue(e){return K(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=z(this.data,e);q(r)&&delete r[t]}return this}hasKey(e){"string"==typeof e&&(e=this.getFullPath(e).split("."));var t=e.pop(),r=z(this.data,e);return!!q(r)&&r.hasOwnProperty(t)}clear(){return t(this.data),this}clone(e){var t=e?this.cloneValue():this.data,r=new B(t);return r.setRefPath(this.refPath),r}}var q=function(e){return null!=e&&"object"==typeof e},z=function(e,t){if(""===t[0])return e;for(var r=e,s=0,i=t.length;s<i;s++){if(!q(r))return;r=r[t[s]]}return r};class H{constructor(e){this.setEventEmitter(e.eventEmitter,e.EventEmitterClass),this.parent=e.parent,this.key=e.key,this.parent?this.fullKeyPath=V(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 H&&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=V(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 V=function(e,t){return null==e||""===e?t:null==t||""===t?e:`${e}.${t}`};Object.assign(H.prototype,u);class W extends H{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 Y extends H{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 W}get pageKey(){return this.parent.key}}var G=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 J{constructor(e){var t=c(e,"eventEmitter",void 0),r=c(e,"EventEmitterClass",void 0);this.setEventEmitter(t,r),this.eventNameMap=c(e,"eventNames",te),this.database=firebase.database(),this.table=new B,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=ee[e]),this.tableType=e;var t=X[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 G.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 X={1:W,2:Y,3:class extends H{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 Y}}},Z={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(J.prototype,u,Z);const ee={"1d":1,"2d":2,"3d":3},te={init:"init",update:"update",addkey0:"addkey0",removekey0:"removekey0",changekey0:"changekey0",addkey1:"addkey1",removekey1:"removekey1",changekey1:"changekey1",addkey2:"addkey2",removekey2:"removekey2",changekey2:"changekey2"};var re=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]=se.call(this,t);return s},se=function(e){var t=e.key,r=new J({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},ie=function(e,t){return void 0===t&&(t=""),`${e}|${t}`},ne=function(e){this.roomID=e.roomID,this.roomName=e.roomName,this.roomType=e.roomType,this.emit("room.join",e)},ae=function(e){return this.getRoomAliveRef(e).transaction((function(e){return null===e||void 0}))},oe=function(e){var t=(e=r(he,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=ie(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&&ne.call(f,e),Promise.resolve(e)}))},he={roomID:"",roomName:"",roomType:"",maxUsers:0,presisted:!1,door:"open",join:!0,filterData:void 0},ue=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]},ce=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+=ue(r);return i},de=function(e,t,r,s){if(s.roomID=ce(e,e,t),r<=0)return Promise.reject(s);r--;var i=this;return this.createRoom(s).catch((function(){return de.call(i,e,t,r,s)}))},le=function(e){if(void 0===c(e,"roomID",void 0))return Promise.reject();this.isRemoveRoomWhenLeft=!1;var t=this;return me.call(t,e).then((function(r){return t.userList.setRootPath(t.getUserListPath(e.roomID)).setMaxUsers(r.maxUsers).join()})).then((function(){return ne.call(t,e),Promise.resolve(e)}))},me=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())}))},ve=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 ve.call(s,e,t,r)}))},fe={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(ie(t,e))}},ge={createRoom:function(e){void 0===e&&(e={}),null==e.roomID&&(e.roomID=this.getRoomRef().push().key);var t=this;return ae.call(t,e.roomID).then((function(){return oe.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 de.call(this,t,r,s,e)},joinRoom:function(e){var t=c(e,"leftThenJoin",!0),r=this;return t?this.leaveRoom().then((function(){return le.call(r,e)})):le.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),ve.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=ie(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 U({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(ge,fe);class Ie{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=T.call(this,e),this.roomList=A.call(this,e),this.broadcast=S.call(this,e),this.tables=re.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 d(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(Ie.prototype,u,ge),h.register("room",(function(e){return new Ie(e)})),y(window,"RexPlugins.Fire.Room",Ie);var pe=function(e){var t=new _({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&&ye.call(this)}),this),this.on("room.join",(function(){t.startUpdate()})).on("room.leave",(function(){t.stopUpdate().clear()})),t},ye=function(){this.emit("room.leave");var e=this;setTimeout((function(){e.leftRoomFlag=!1}),0)},De=function(e){var t=c(e,"broadcast",!0);if(!t)return null;var r=new f({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},Re=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]=Pe.call(this,t);return s},Pe=function(e){var t=e.key,r=new J({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},be={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}`}},ke={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(ke,be);class Ee{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=pe.call(this,e),this.broadcast=De.call(this,e),this.tables=Re.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 d(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(Ee.prototype,u,ke),h.register("singleRoom",(function(e){return new Ee(e)})),y(window,"RexPlugins.Fire.SingleRoom",Ee),h.register("itemTable",(function(e){return new J(e)})),y(window,"RexPlugins.Fire.ItemTable",J);var we=function(e){return void 0===e.totalLines&&(e.totalLines=1/0),void 0===e.linesPerPage&&(e.linesPerPage=1e3),e.remainderLines=e.totalLines,Ne(e)},Ne=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",Ne(e))}))},xe=function(e,t,r,s,i){void 0===t&&(t=1/0),void 0===r&&(r=0);var n=[],a=0;return we({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}})},Fe=function(){var e=this;return xe(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)}))},Ue=function(){var e=this;return xe(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)}))},Le=function(){var e=this;return xe(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)}))},Ce=function(){var e=(this.pageIndex+1)*this.itemCount,t=this;return xe(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)}))},Me=function(){var e=this;return xe(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)}))},je=function(){var e=(this.pageIndex-1)*this.itemCount,t=this;return xe(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)}))},Qe=function(){var e=this;return xe(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)}))},_e=function(){var e=this.pageIndex*this.itemCount,t=this;return xe(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 $e{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(d(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=Oe[e]),this.dataMode=e,this}setBaselineDoc(e,t){return e?(this.baselineDocRef=e.ref,this.baselineMode=t):this.baselineDocRef=void 0,this}}var Te={loadFirstPage:function(){return(0===this.dataMode?Fe:Ue).call(this)},loadNextPage:function(){return void 0===this.pageIndex?this.loadFirstPage():(0===this.dataMode?Le:Ce).call(this)},loadPreviousPage:function(){return void 0===this.pageIndex||1===this.pageIndex?this.loadFirstPage():(0===this.dataMode?Me:je).call(this)},loadCurrentPage:function(){return void 0===this.pageIndex||0===this.pageIndex?this.loadFirstPage():(0===this.dataMode?Qe:_e).call(this)},load:function(e,t){void 0===t&&(t=0);var r=this;return xe(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($e.prototype,Te);const Oe={static:0,dynamic:1};h.register("pageLoader",(function(e){return new $e(e)})),y(window,"RexPlugins.Fire.PageLoader",$e);var Ae=function(e){var t=e.data();return t.headerDocID=e.id,t},Se=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=Ae(i),s.cacheHeaders[e]=r}return Promise.resolve(r)}))};class Ke{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 d(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 Be={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 Se.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=Ae(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=Ae(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(Ke.prototype,Be),h.register("files",(function(e){return new Ke(e)})),y(window,"RexPlugins.Fire.Files",Ke);var qe=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}))}))}))},ze=function(e,t,r,s){var i=ce(t,t,r);if(s<=0)return Promise.reject({id:e,alias:i});s--;var n=this;return qe.call(n,e,i).catch((function(){setTimeout((function(){return ze.call(n,e,t,r,s)}),0)}))};class He{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 Ve={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}):qe.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=ce(r,r,s);return t.alias===a?Promise.resolve({id:e,alias:a}):Promise.reject({id:e,alias:a})}return ze.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):ze.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(He.prototype,Ve),h.register("idAlias",(function(e){return new He(e)})),y(window,"RexPlugins.Fire.IdAlias",He);var We=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:""}},Ye={d:"tagD",w:"tagW",m:"tagM",y:"tagY",a:"tagA"},Ge={d:"scoreD",w:"scoreW",m:"scoreM",y:"scoreY",a:"scoreA"},Je={loadFirstPage(){this.resetPageQuery();var e=this;return this.page.loadFirstPage().then((function(t){return Promise.resolve(Xe.call(e,t))}))},loadNextPage(){this.resetPageQuery();var e=this;return this.page.loadNextPage().then((function(t){return Promise.resolve(Xe.call(e,t))}))},loadPreviousPage(){this.resetPageQuery();var e=this;return this.page.loadPreviousPage().then((function(t){return Promise.resolve(Xe.call(e,t))}))},loadCurrentPage(){this.resetPageQuery();var e=this;return this.page.loadCurrentPage().then((function(t){return Promise.resolve(Xe.call(e,t))}))},load(e,t){this.resetPageQuery();var r=this;return this.page.load(e,t).then((function(e){return Promise.resolve(Xe.call(r,e))}))},resetPageQuery(){return this.resetQueryFlag?(this.resetQueryFlag=!1,this.page.setQuery(this.getPageQuery()),this):this}},Xe=function(e){for(var t,r=[],s=Ge[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[Ye[a]],delete t[Ge[a]];r.push(t)}return r},Ze=function(e){return xe(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)}))},et={deleteUser(e){void 0===e&&(e=this.userID);var t=this.getRecordQuery(void 0,void 0,e,void 0);return Ze(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 Ze(r)}},tt={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.where(s[0],"==",s[1])),i},getMyRecordQuery(e){return void 0===e&&(e=this.userID),this.getRecordQuery(this.boardID,this.tag,e,void 0).limit(1)},getPageQuery(){var e,t;if(!1!==this.timeFilters){var r=this.timeFilterType[0];e=[Ye[r],We()[r]],t=Ge[r]}else e=void 0,t="score";var s=this.getRecordQuery(this.boardID,this.tag,void 0,e);return{next