phaser3-rex-plugins
Version:
6 lines • 66.3 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).rexfirebaseplugin=t();}(undefined,(function(){function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(s=i.key,n=void 0,"symbol"==typeof(n=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return ("string"===t?String:Number)(e)}(s,"string"))?n:String(n)),i);}var s,n;}function i(e,t,i){return t&&r(e.prototype,t),i&&r(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&o(e,t);}function n(e){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}function a(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return !1;if(Reflect.construct.sham)return !1;if("function"==typeof Proxy)return !0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return !1}}();return function(){var r,i=n(e);if(t){var s=n(this).constructor;r=Reflect.construct(i,arguments,s);}else r=i.apply(this,arguments);return a(this,r)}}function h(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}var l=function(e){return void 0===e&&(e="7.19.0"),{app:"https://www.gstatic.com/firebasejs/".concat(e,"/firebase-app.js"),database:"https://www.gstatic.com/firebasejs/".concat(e,"/firebase-database.js"),firestore:"https://www.gstatic.com/firebasejs/".concat(e,"/firebase-firestore.js")}},f=function(t){if("object"!==e(t)||null===t)return t;if(Array.isArray(t))t.length=0;else for(var r in t)delete t[r];return t},d=function(e,t){var r=function(e,t){var r=Array.isArray(e);if(void 0===t?t=r?[]:{}:f(t),r){t.length=e.length;for(var i=0,s=e.length;i<s;i++)t[i]=e[i];}else for(var n in e)t[n]=e[n];return t}(e);for(var i in t)r.hasOwnProperty(i)&&(r[i]=t[i]);return r},v=function(e){return new Promise((function(t,r){!function(e,t){for(var r=document.getElementsByTagName("script"),i=0,s=r.length;i<s;i++)if(-1!=r[i].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);}))},m=function(e,t){return void 0===e&&(e=0),new Promise((function(r,i){setTimeout((function(){r(t);}),e);}))},y=function e(t){return g(t)?Promise.resolve():m(10).then((function(){return e(t)}))},g=function(e){var t;for(var r in e)if(e[r]&&(t=p[r])&&!t())return !1;return !0},p={database:function(){return void 0!==firebase.database},firestore:function(){return void 0!==firebase.firestore}},I=function(e,t){return e="string"==typeof e?l(e):d(l(),e),v(e.app).then((function(){var t,r=[];for(var i in e)"app"!==i&&(t=e[i])&&r.push(v(t));return 0===r.length?Promise.resolve():Promise.all(r)})).then((function(){return y(e)})).then((function(){return void 0!==t&&firebase.initializeApp(t),Promise.resolve()}))},D=Phaser.Loader.FILE_POPULATED,k=Phaser.Utils.String.UUID,R=function(e){s(n,Phaser.Loader.File);var r=u(n);function n(e,i){return t(this,n),i.hasOwnProperty("type")||(i.type="await"),i.hasOwnProperty("url")||(i.url=""),i.hasOwnProperty("key")||(i.key=k()),r.call(this,e,i)}return i(n,[{key:"load",value:function(){if(this.state===D)this.loader.nextFile(this,!0);else {var e=this.config,t=e.callback,r=e.scope,i=this.onLoad.bind(this),s=this.onError.bind(this);t?r?t.call(r,i,s):t(i,s):this.onLoad();}}},{key:"onLoad",value:function(){this.loader.nextFile(this,!0);}},{key:"onError",value:function(){this.loader.nextFile(this,!1);}}]),n}(),P=function(e,t){return this.addFile(new R(this,{config:{callback:function(r,i){return I(e,t).then((function(){setTimeout(r,0);})).catch(i)}}})),this},b=function(){function e(){t(this,e);}return i(e,[{key:"initializeApp",value:function(e){return firebase.initializeApp(e),this}}],[{key:"register",value:function(t,r){e.prototype[t]=r;}}]),e}(),E={setEventEmitter:function(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:function(){return this._eventEmitter&&this._privateEE&&this._eventEmitter.shutdown(),this},getEventEmitter:function(){return this._eventEmitter},on:function(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once:function(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off:function(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit:function(e){return this._eventEmitter&&e&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener:function(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener:function(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners:function(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount:function(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners:function(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames:function(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}},w=function(e,t,r){if(e&&"number"!=typeof e){if(e.hasOwnProperty(t))return e[t];if(-1!==t.indexOf(".")){for(var i=t.split("."),s=e,n=r,o=0;o<i.length;o++){if(!s.hasOwnProperty(i[o])){n=r;break}n=s[i[o]],s=s[i[o]];}return n}return r}return r},x=function(t){if("object"!==e(t)||t.nodeType||t===t.window)return !1;try{if(t.constructor&&!{}.hasOwnProperty.call(t.constructor.prototype,"isPrototypeOf"))return !1}catch(e){return !1}return !0},N={startReceiving:function(){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:function(){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));}},U=function(){function e(r){t(this,e),this.maxLength=w(r,"maxLength",-1),this.records=[];}return i(e,[{key:"add",value:function(e){return 0===this.maxLength||(this.records.push(e),this.maxLength>0&&this.records.length>this.maxLength&&this.records.shift()),this}},{key:"clear",value:function(){return this.records.length=0,this}},{key:"changeUserName",value:function(e,t){return 0===this.maxLength||this.records.forEach((function(r){r.senderID===e&&(r.senderName=t);})),this}}]),e}(),L=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.eventNameMap=w(r,"eventNames",j),this.database=firebase.database(),this.setRootPath(w(r,"root","")),this.skipFirst=!0,this.stamp=!1,this.userInfo={userID:"",userName:void 0},this.setSender(w(r,"senderID",""),w(r,"senderName","")),this.setReceiver(w(r,"receiverID","")),this.isReceiving=!1;var n=w(r,"history",0);!0===n?n=-1:!1===n&&(n=0),this.history=new U({maxLength:n});}return i(e,[{key:"shutdown",value:function(){this.stopReceiving().destroyEventEmitter();}},{key:"destroy",value:function(){this.shutdown();}},{key:"userID",get:function(){return this.userInfo.userID},set:function(e){this.userInfo.userID=e;}},{key:"userName",get:function(){return this.userInfo.userName},set:function(e){this.userInfo.userName=e;}},{key:"setRootPath",value:function(e){return this.rootPath=e,this.sendToRef=void 0,this.receiverRef=void 0,this}},{key:"setSender",value:function(e,t){return x(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}},{key:"setReceiver",value:function(e){return this.receiverID=e,this}},{key:"changeUserName",value:function(e,t){return e===this.userID&&(this.userName=t),this.history.changeUserName(e,t),this}},{key:"getHistory",value:function(){return this.history.records}},{key:"clearHistory",value:function(){return this.history.clear(),this}}]),e}(),C={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(L.prototype,E,N,C);var j={receive:"receive"},M=function(e){return null==e||""===e||0===e.length},_=function(t,r,i,s){if(void 0===s&&(s="."),"object"===e(t)){if(M(r)){if(null==i)return;"object"===e(i)&&(t=i);}else {"string"==typeof r&&(r=r.split(s));var n=r.pop(),o=function(t,r,i){var s=t;if(M(r));else {var n;"string"==typeof r&&(r=r.split("."));for(var o=0,a=r.length;o<a;o++){var u;null!=s[n=r[o]]&&"object"===e(s[n])||(u=o===a-1?void 0===i?{}:i:{},s[n]=u),s=s[n];}}return s}(t,r);o[n]=i;}return t}};b.register("broadcast",(function(e){return new L(e)})),_(window,"RexPlugins.Fire.Broadcast",L);var A={clear:function(){return this.items.length=0,f(this.itemID2Index),this},getItems:function(){return this.items},hasItem:function(e){return this.itemID2Index.hasOwnProperty(e)},getItemIndexFromItemID:function(e){return null==e?null:this.itemID2Index[e]},getItemFromItemID:function(e){if(null==e)return null;var t=this.getItemIndexFromItemID(e);return null==t?null:this.items[t]},forEach:function(e,t){return this.items.forEach(e,t),this},updateItemID2Index:function(){var e;f(this.itemID2Index);for(var t=0,r=this.items.length;t<r;t++)e=this.items[t][this.keyItemID],this.itemID2Index[e]=t;return this}},Q=function(e,t){var r=B.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.add,r),this.emit(this.eventNameMap.update,this.items);},T=function(e,t){var r=K.call(this,e);this.updateItemID2Index();var i=B.call(this,e,t);this.updateItemID2Index(),this.emit(this.eventNameMap.change,i,r),this.emit(this.eventNameMap.update,this.items);},O=function(e){var t=K.call(this,e);this.updateItemID2Index(),this.emit(this.eventNameMap.remove,t),this.emit(this.eventNameMap.update,this.items);},S=function(e){this.clear(),e.forEach(function(e){B.call(this,e,null,!0);}.bind(this)),this.updateItemID2Index(),this.emit(this.eventNameMap.update,this.items);},B=function(e,t,r){var i,s=this.getItemCallback,n=this.getItemCallbackScope;if(i=n?s.call(n,e):s(e),r)return this.items.push(i),i;if(null==t)this.items.unshift(i);else {var o=this.itemID2Index[t];o===this.items.length-1?this.items.push(i):this.items.splice(o+1,0,i);}return i},K=function(e){var t=this.itemID2Index[e.key],r=function(e,t){if(!(t>=e.length)){for(var r=e.length-1,i=e[t],s=t;s<r;s++)e[s]=e[s+1];return e.length=r,i}}(this.items,t);return r},q={start:function(e){return this.isUpdating=!1,e.once("value",S,this),this},stop:function(){return this}},z={start:function(e){return e.on("child_added",Q,this),e.on("child_removed",O,this),e.on("child_moved",T,this),e.on("child_changed",T,this),this},stop:function(){return this.query.off("child_added",Q,this),this.query.off("child_removed",O,this),this.query.off("child_moved",T,this),this.query.off("child_changed",T,this),this}},H={start:function(e){return e.on("value",S,this),this},stop:function(){return this.query.off("value",S,this),this}},V=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.eventNameMap=w(r,"eventNames",Y),this.isUpdating=!1,this.items=[],this.itemID2Index={},this.setItemIDKey(w(r,"itemIDKey","__itemID__")),this.setMode(w(r,"mode",1)),this.setGetitemCallback(w(r,"getItemCallback",W),w(r,"getItemCallbackScope",this)),this.setQuery(w(r,"query",void 0));}return i(e,[{key:"shutdown",value:function(){this.stopUpdate().clear();}},{key:"destroy",value:function(){this.shutdown();}},{key:"setItemIDKey",value:function(e){return this.keyItemID=e,this}},{key:"setMode",value:function(e){return "string"==typeof e&&(e=J[e]),this.mode=e,this.updater=G[e],this}},{key:"setGetitemCallback",value:function(e,t){return this.getItemCallback=e,this.getItemCallbackScope=t,this}},{key:"setQuery",value:function(e){return this.query=e,this}},{key:"startUpdate",value:function(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}},{key:"stopUpdate",value:function(){return this.query&&this.isUpdating?(this.isUpdating=!1,this.updater.stop.call(this),this):this}}]),e}(),W=function(e){var t=e.val();return t[this.keyItemID]=e.key,t};
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2018 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/Object.assign(V.prototype,E,A);var Y={update:"update",add:"add",remove:"remove",change:"change"},G={0:q,1:z,2:H},J={once:0,child:1,all:2},X=function(e,t){var r=!1;return e.forEach((function(e){if(e.val().userID===t)return r=!0,!0})),r},Z=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.database=firebase.database(),this.setRootPath(w(r,"root","")),this.userInfo={userID:"",userName:""},this.setUser(w(r,"userID",""),w(r,"userName","")),this.setMaxUsers(w(r,"maxUsers",0)),this.userList=new V({eventEmitter:this.getEventEmitter(),itemIDKey:"joinAt",eventNames:{add:w(r,"eventNames.join","join"),remove:w(r,"eventNames.leave","leave"),update:w(r,"eventNames.update","update"),change:w(r,"eventNames.change","change"),init:w(r,"eventNames.init","init"),changename:w(r,"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,i=e.userName,s=t.userName;i!==s&&this.emit(this.userList.eventNames.changename,r,i,s);}),this);}return i(e,[{key:"shutdown",value:function(){this.stopUpdate().destroyEventEmitter().leave(),this.userList.shutdown();}},{key:"destroy",value:function(){this.shutdown();}},{key:"userID",get:function(){return this.userInfo.userID},set:function(e){this.userInfo.userID=e;}},{key:"userName",get:function(){return this.userInfo.userName},set:function(e){this.userInfo.userName=e;}},{key:"setRootPath",value:function(e){return this.rootPath=e,this}},{key:"rootRef",get:function(){return this.database.ref(this.rootPath)}},{key:"setUser",value:function(e,t){return x(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}},{key:"setMaxUsers",value:function(e){return this.maxUsers=e,this}},{key:"clear",value:function(){return this.userList.clear(),this}},{key:"forEach",value:function(e,t){return this.userList.forEach(e,t),this}},{key:"isFull",value:function(){return 0!==this.maxUsers&&this.userList.getItems().length>=this.maxUsers}},{key:"isFirstUser",value:function(e){void 0===e&&(e=this.userID);var t=this.usersList.getItems()[0];return t&&t.userID===e}},{key:"getUser",value:function(e){if(void 0===e&&(e=this.userID),!this.contains(e))return null;var t=this.userID2ItemID[e];return this.userList.getItemFromItemID(t)}},{key:"getUsers",value:function(){return this.userList.getItems()}},{key:"getUserRef",value:function(e){if(void 0===e&&(e=this.userID),!this.contains(e))return null;var t=this.userID2ItemID[e];return this.rootRef.child(t)}},{key:"contains",value:function(e){return void 0===e&&(e=this.userID),this.userID2ItemID.hasOwnProperty(e)}},{key:"startUpdate",value:function(){var e=this.database.ref(this.rootPath);return this.maxUsers>0&&(e=e.limitToFirst(this.maxUsers)),this.userList.startUpdate(e),this}},{key:"stopUpdate",value:function(){return this.userList.stopUpdate(),this}}]),e}(),$={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},i=this.maxUsers,s=this.database.ref(this.rootPath),n=s.push();return n.onDisconnect().remove().then((function(){return n.set(r)})).then((function(){return m(0)})).then((function(){return 0===i?(self.isInList=!0,Promise.resolve()):s.limitToFirst(i).once("value").then((function(t){return X(t,e)?(self.isInList=!0,Promise.resolve()):(self.isInList=!1,n.remove().then((function(){return n.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 i=t.getUserRef();i?e(i):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(Z.prototype,E,$),b.register("onlineUserList",(function(e){return new Z(e)})),_(window,"RexPlugins.Fire.OnlineUserList",Z);var ee=function(e){var t=new Z({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&&te.call(this);}),this),this.on("room.join",(function(){t.startUpdate();})).on("room.leave",(function(){t.stopUpdate().clear();})),t},te=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);},re=function(e){return new V({eventEmitter:this.getEventEmitter(),root:this.getRoomFilterRef(),itemIDKey:"roomID",eventNames:{update:"roomlist.update",add:"roomlist.add",remove:"roomlist.remove",change:"roomlist.change"},mode:"once"})},ie=function(e){var t=w(e,"broadcast",!0);if(!t)return null;var r=new L({eventEmitter:this.getEventEmitter(),eventNames:{receive:"broadcast.receive"},receiverID:"boradcast",senderID:this.userInfo,history:w(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},se=function t(r){var i,s,n;if(null==r||"object"!==e(r))return r;if(i=Array.isArray(r)?[]:{},x(r))for(n in r)s=r[n],i[n]=t(s);else i=r;return i},ne=function(){function e(r){t(this,e),void 0===r&&(r={}),this.data=r,this.refPath="";}return i(e,[{key:"getFullPath",value:function(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="".concat(t.join(".")).concat(e.substring(1));}else e=e.substring(2);else e.startsWith(".")&&(e=""!==this.refPath?"".concat(this.refPath).concat(e):e.substring(1));return e}},{key:"setRefPath",value:function(e){return void 0===e&&(e=""),this.refPath=this.getFullPath(e),this}},{key:"setValue",value:function(e,t){return void 0===e?this.clear():void 0===t?this.data=e:_(this.data,this.getFullPath(e),t),this}},{key:"getValue",value:function(e){return void 0===e?this.data:("string"==typeof e&&(e=this.getFullPath(e).split(".")),ae(this.data,e))}},{key:"cloneValue",value:function(e){return se(this.getValue(e))}},{key:"removeKey",value:function(e){if(void 0===e)this.clear();else {"string"==typeof e&&(e=this.getFullPath(e).split("."));var t=e.pop(),r=ae(this.data,e);oe(r)&&delete r[t];}return this}},{key:"hasKey",value:function(e){"string"==typeof e&&(e=this.getFullPath(e).split("."));var t=e.pop(),r=ae(this.data,e);return !!oe(r)&&r.hasOwnProperty(t)}},{key:"clear",value:function(){return f(this.data),this}},{key:"clone",value:function(t){var r=new e(t?this.cloneValue():this.data);return r.setRefPath(this.refPath),r}}]),e}(),oe=function(t){return null!=t&&"object"===e(t)},ae=function(e,t){if(""===t[0])return e;for(var r=e,i=0,s=t.length;i<s;i++){if(!oe(r))return;r=r[t[i]];}return r},ue=function(){function e(r){t(this,e),this.setEventEmitter(r.eventEmitter,r.EventEmitterClass),this.parent=r.parent,this.key=r.key,this.parent?this.fullKeyPath=he(this.parent.fullKeyPath,this.key):this.fullKeyPath="",this.type=r.type,this.eventNameMap=r.eventNames,this.table=r.table,this.database=firebase.database(),this.setRootPath(),this.children={};}return i(e,[{key:"shutdown",value:function(){this.stopUpdate().clear().destroyEventEmitter();}},{key:"destroy",value:function(){this.shutdown();}},{key:"setRootPath",value:function(t){if(void 0===t){var r=this.parent?this.parent.rootPath:"";t="".concat(r,"/").concat(this.key);}var i;for(var s in this.rootPath=t,this.children)(i=this.children[s])instanceof e&&i.setRootPath();return this}},{key:"rootRef",get:function(){return this.database.ref(this.rootPath)}},{key:"load",value:function(){var e=this;return this.rootRef.once("value").then((function(t){var r=t.val()||{};return e.table.setValue(r),Promise.resolve(r)}))}},{key:"setData",value:function(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}},{key:"clear",value:function(){for(var e in this.table.removeKey(this.fullKeyPath),this.children)this.removeChild(e);return this}},{key:"childClass",get:function(){}},{key:"setChildData",value:function(e,t){var r=he(this.fullKeyPath,e);if(this.table.setValue(r,t),this.children.hasOwnProperty(e))this.children[e].setData(t);else if(this.childClass){var i=new this.childClass({parent:this,key:e,type:this.type,eventEmitter:this.getEventEmitter(),eventNames:this.eventNameMap,table:this.table});i.startUpdate(),this.children[e]=i;}return this}},{key:"removeChild",value:function(e){return this.children.hasOwnProperty(e)&&(this.children[e].destroy(),delete this.children[e]),this}},{key:"startUpdate",value:function(){}},{key:"stopUpdate",value:function(){}}]),e}(),he=function(e,t){return null==e||""===e?t:null==t||""===t?e:"".concat(e,".").concat(t)};Object.assign(ue.prototype,E);var ce=function(e){s(n,e);var r=u(n);function n(){return t(this,n),r.apply(this,arguments)}return i(n,[{key:"startUpdate",value:function(){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}},{key:"stopUpdate",value:function(){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}},{key:"addCol",value:function(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);}},{key:"removeCol",value:function(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);}},{key:"changeColValue",value:function(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);}},{key:"pageKey",get:function(){return this.parent.key}}]),n}(ue),le=function(e){s(n,e);var r=u(n);function n(){return t(this,n),r.apply(this,arguments)}return i(n,[{key:"startUpdate",value:function(){return this.rootRef.on("child_added",this.addRow,this),this.rootRef.on("child_removed",this.removeRow,this),this}},{key:"stopUpdate",value:function(){return this.rootRef.off("child_added",this.addRow,this),this.rootRef.off("child_removed",this.removeRow,this),this}},{key:"addRow",value:function(e){var t=e.key,r=e.val();if(this.setData(t,r),2===this.type)this.emit(this.eventNameMap.addkey0,this.key,t,r);else this.emit(this.eventNameMap.addkey1,this.key,t,r);}},{key:"removeRow",value:function(e){var t=e.key;if(this.removeChild(t),2===this.type)this.emit(this.eventNameMap.removekey0,t);else this.emit(this.eventNameMap.removekey1,this.key,t);}},{key:"childClass",get:function(){return ce}},{key:"pageKey",get:function(){return this.parent.key}}]),n}(ue),fe=function(e){s(n,e);var r=u(n);function n(e){return t(this,n),r.call(this,e)}return i(n,[{key:"startUpdate",value:function(){return this.rootRef.on("child_added",this.addPage,this),this.rootRef.on("child_removed",this.removePage,this),this}},{key:"stopUpdate",value:function(){return this.rootRef.off("child_added",this.addPage,this),this.rootRef.off("child_removed",this.removePage,this),this}},{key:"addPage",value:function(e){var t=e.key,r=e.val();this.setData(t,r),this.emit(this.eventNameMap.addkey0,t,r);}},{key:"removePage",value:function(e){var t=e.key;this.removeChild(t),this.emit(this.eventNameMap.removekey0,t);}},{key:"childClass",get:function(){return le}}]),n}(ue),de=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)}))},ve=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.eventNameMap=w(r,"eventNames",pe),this.database=firebase.database(),this.table=new ne,this.setTableType(w(r,"type",3)),this.setRootPath(w(r,"root","")),this.initialFlag=!1;}return i(e,[{key:"shutdown",value:function(){this.updater.destroy(),this.destroyEventEmitter().stopUpdate();}},{key:"destroy",value:function(){this.shutdown();}},{key:"setRootPath",value:function(e){return this.rootPath=e,this.updater.setRootPath(e),this}},{key:"setTableType",value:function(e){"string"==typeof e&&(e=ge[e]),this.tableType=e;var t=me[e];return this.updater=new t({type:e,eventEmitter:this.getEventEmitter(),eventNames:this.eventNameMap,table:this.table}),this}},{key:"getRootRef",value:function(){return this.database.ref(this.rootPath)}},{key:"getRef",value:function(e,t,r){var i=this.getRootRef();return i=e?i.child(e):i,i=t?i.child(t):i,i=r?i.child(r):i}},{key:"startUpdate",value:function(){return de.call(this),this.updater.startUpdate(),this}},{key:"stopUpdate",value:function(){return this.updater.stopUpdate(),this}},{key:"clear",value:function(){return this.updater.clear(),this}},{key:"getData",value:function(){return this.table.getValue(arguments)}},{key:"cloneData",value:function(){return this.table.cloneValue(arguments)}}]),e}(),me={1:ce,2:le,3:fe},ye={setData:function(){var e,t,r,i;switch(arguments.length){case 4:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1],r=s[2],i=s[3];break;case 3:var n=Array.prototype.slice.call(arguments);e=n[0],t=n[1],i=n[2];break;case 2:var o=Array.prototype.slice.call(arguments);e=o[0],i=o[1];break;default:i=arguments[0];}return this.getRef(e,t,r).set(i)},removeData:function(){var e,t,r;switch(arguments.length){case 3:var i=Array.prototype.slice.call(arguments);e=i[0],t=i[1],r=i[2];break;case 2:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1];break;default:e=arguments[0];}return this.getRef(e,t,r).remove()},incValue:function(){var e,t,r,i;switch(arguments.length){case 4:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1],r=s[2],i=s[3];break;case 3:var n=Array.prototype.slice.call(arguments);e=n[0],t=n[1],i=n[2];break;case 2:var o=Array.prototype.slice.call(arguments);e=o[0],i=o[1];break;default:i=arguments[0];}return this.getRef(e,t,r).transaction((function(e){return null===e&&(e=0),e+i}))},transaction:function(){var e,t,r,i;switch(arguments.length){case 4:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1],r=s[2],i=s[3];break;case 3:var n=Array.prototype.slice.call(arguments);e=n[0],t=n[1],i=n[2];break;case 2:var o=Array.prototype.slice.call(arguments);e=o[0],i=o[1];break;default:i=arguments[0];}return this.getRef(e,t,r).transaction(i)},updateData:function(e){return this.getRef().update(e)},removeDataOnDisconnect:function(){var e,t,r;switch(arguments.length){case 3:var i=Array.prototype.slice.call(arguments);e=i[0],t=i[1],r=i[2];break;case 2:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1];break;case 1:e=arguments[0];}return this.getRef(e,t,r).onDisconnect().remove()},setDataOnDisconnect:function(){var e,t,r,i;switch(arguments.length){case 4:var s=Array.prototype.slice.call(arguments);e=s[0],t=s[1],r=s[2],i=s[3];break;case 3:var n=Array.prototype.slice.call(arguments);e=n[0],t=n[1],i=n[2];break;case 2:var o=Array.prototype.slice.call(arguments);e=o[0],i=o[1];break;default:i=arguments[0];}return this.getRef(e,t,r).onDisconnect().set(i)}};Object.assign(ve.prototype,E,ye);var ge={"1d":1,"2d":2,"3d":3},pe={init:"init",update:"update",addkey0:"addkey0",removekey0:"removekey0",changekey0:"changekey0",addkey1:"addkey1",removekey1:"removekey1",changekey1:"changekey1",addkey2:"addkey2",removekey2:"removekey2",changekey2:"changekey2"},Ie=function(e){var t,r=w(e,"tables",void 0);if(void 0===r)return {};for(var i={},s=0,n=r.length;s<n;s++)i[(t=r[s]).key]=De.call(this,t);return i},De=function(e){var t=e.key,r=new ve({eventEmitter:this.getEventEmitter(),root:this.getItemTablePath(this.roomID,t),type:w(e,"type",1),eventNames:{init:"tables.".concat(t,".init"),update:"tables.".concat(t,".update"),addkey0:"tables.".concat(t,".addkey0"),removekey0:"tables.".concat(t,".removekey0"),changekey0:"tables.".concat(t,".changekey0"),addkey1:"tables.".concat(t,".addkey1"),removekey1:"tables.".concat(t,".removekey1"),changekey1:"tables.".concat(t,".changekey1"),addkey2:"tables.".concat(t,".addkey2"),removekey2:"tables.".concat(t,".removekey2"),changekey2:"tables.".concat(t,".changekey2")}});return this.on("room.join",(function(){r.startUpdate();})).on("room.leave",(function(){r.clear().stopUpdate();})),r},ke=function(e,t){return void 0===t&&(t=""),"".concat(e,"|").concat(t)},Re=function(e){this.roomID=e.roomID,this.roomName=e.roomName,this.roomType=e.roomType,this.emit("room.join",e);},Pe=function(e){return this.getRoomAliveRef(e).transaction((function(e){return null===e||void 0}))},be=function(e){var t=(e=d(Ee,e)).roomID,r=e.roomName,i=e.roomType,s=e.door,n=e.join,o=e.filterData,a=this.getRoomRef(t),u=this.getRoomFilterRef(t),h=this.getRoomDataRef(t);this.isRemoveRoomWhenLeft=!e.presisted,this.isRemoveRoomWhenLeft&&(a.onDisconnect().remove(),u.onDisconnect().remove(),h.onDisconnect().remove());var c=ke(s,i),l={},f={filter:c,name:r};o&&(f.data=o),l["room-filters/".concat(t)]=f;var v={name:r,filter:c,maxUsers:e.maxUsers,moderators:{}};v.moderators[this.userID]=this.userName,l["room-data/".concat(t)]=v;var m=this;return new Promise((function(r,i){if(n){var s=m.userList.setRootPath(m.getUserListPath(t)).setMaxUsers(0).join();return m.userList.setMaxUsers(e.maxUsers),s.then(r,i)}return r()})).then((function(){return m.getRootRef().update(l)})).then((function(){return m.isRoomCreator=!0,n&&Re.call(m,e),Promise.resolve(e)}))},Ee={roomID:"",roomName:"",roomType:"",maxUsers:0,presisted:!1,door:"open",join:!0,filterData:void 0},we=function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length);var i=t+Math.floor(Math.random()*r);return void 0===e[i]?null:e[i]},xe=function(e,t,r){void 0===r&&(r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");for(var i=void 0===t?e:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)}(e,t),s="",n=0;n<i;n++)s+=we(r);return s},Ne=function e(t,r,i,s){if(s.roomID=xe(t,t,r),i<=0)return Promise.reject(s);i--;var n=this;return this.createRoom(s).catch((function(){return e.call(n,t,r,i,s)}))},Fe=function(e){if(void 0===w(e,"roomID",void 0))return Promise.reject();this.isRemoveRoomWhenLeft=!1;var t=this;return Ue.call(t,e).then((function(r){return t.userList.setRootPath(t.getUserListPath(e.roomID)).setMaxUsers(r.maxUsers).join()})).then((function(){return Re.call(t,e),Promise.resolve(e)}))},Ue=function(e){var t=this;return this.getRoomDataRef(e.roomID).once("value").then((function(r){var i=r.val();return null===i?Promise.reject():(e.roomName=i.name,e.roomType=i.filter.split("|")[1],t.isRoomOpened(i)?Promise.resolve(i):Promise.reject())}))},Le=function e(t,r,i){if(i===r.length)return Promise.reject();t.roomID=r[i].roomID,i++;var s=this;return this.joinRoom(t).catch((function(){return e.call(s,t,r,i)}))},Ce={getRootRef:function(e){var t=this.database.ref(this.rootPath);return e&&(t=t.child(e)),t},getRoomRef:function(e,t){var r=this.getRootRef("rooms");return void 0!==e&&(r=r.child(e),void 0!==t&&(r=r.child(t))),r},getRoomAliveRef:function(e){return this.getRoomRef(e,"alive")},getUserListRef:function(e){return this.getRoomRef(e,"users")},getRoomFilterRef:function(e){var t=this.getRootRef("room-filters");return void 0!==e&&(t=t.child(e)),t},getRoomDataRef:function(e){var t=this.getRootRef("room-data");return void 0!==e&&(t=t.child(e)),t},getUserDataRef:function(e){var t=this.getRootRef("user-data");return void 0!==e&&(t=t.child(e)),t},getRoomDataPath:function(e,t){var r="".concat(this.rootPath,"/rooms/").concat(e);return t&&(r+="/".concat(t)),r},getUserListPath:function(e){return this.getRoomDataPath(e,"users")},getItemTablePath:function(e,t){return "".concat(this.getRoomDataPath(e,"tables"),"/").concat(t)},getRoomListQuery:function(e,t){void 0===t&&(t="open");var r=this.getRoomFilterRef();return r=r.orderByChild("filter"),r=void 0===e?r.startAt(t).endAt("".concat(t,"~")):r.equalTo(ke(t,e))}},je={createRoom:function(e){void 0===e&&(e={}),null==e.roomID&&(e.roomID=this.getRoomRef().push().key);var t=this;return Pe.call(t,e.roomID).then((function(){return be.call(t,e)}))},createRandomRoom:function(e){void 0===e&&(e={});var t=w(e,"digits",10),r=w(e,"candidates","0123456789"),i=w(e,"retry",1e3);return Ne.call(this,t,r,i,e)},joinRoom:function(e){var t=w(e,"leftThenJoin",!0),r=this;return t?this.leaveRoom().then((function(){return Fe.call(r,e)})):Fe.call(r,e)},joinRandomRoom:function(e){void 0===e&&(e={});var t=w(e,"roomType",""),r=w(e,"door","open"),i=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)),i=e[t];e[t]=e[r],e[r]=i;}}(t),Le.call(i,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/".concat(e)]=null,t["room-data/".concat(e)]=null,t["rooms/".concat(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 i=e["white-list"];return i&&i.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(i){if(!i)return Promise.resolve();var s=ke(t,r.roomType),n={};return n["room-filters/".concat(e,"/filter")]=s,n["room-data/".concat(e,"/filter")]=s,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(i){return i?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(i){if(!i)return Promise.resolve();var s={};return s["room-filters/".concat(e,"/name")]=t,s["room-data/".concat(e,"/name")]=t,r.getRootRef().update(s)}))},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,i){new V({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(i,s){r.roomList.once("roomlist.update",(function(e){i(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(je,Ce);var Me=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.database=firebase.database(),this.rootPath=w(r,"root",""),this.userInfo={userID:"",userName:""},this.setUser(w(r,"userID",""),w(r,"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=ee.call(this,r),this.roomList=re.call(this,r),this.broadcast=ie.call(this,r),this.tables=Ie.call(this,r);}return i(e,[{key:"shutdown",value:function(){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;}));}},{key:"destroy",value:function(){this.shutdown();}},{key:"userID",get:function(){return this.userInfo.userID},set:function(e){this.userInfo.userID=e;}},{key:"userName",get:function(){return this.userInfo.userName},set:function(e){this.userInfo.userName=e;}},{key:"getRoomInfo",value:function(e,t){return void 0===e&&(e=this.roomID),void 0===t&&(t=this.roomName),{roomID:e,roomName:t}}},{key:"setUser",value:function(e,t){return x(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}},{key:"isInRoom",value:function(e){return void 0===e?void 0!==this.roomID:this.roomID===e}},{key:"isFull",value:function(){return this.userList.isFull()}},{key:"isFirstUser",value:function(e){return this.userList.isFirstUser(e)}},{key:"getUsers",value:function(){return this.userList.getUsers()}},{key:"maxUsers",get:function(){return this.userList.maxUsers}},{key:"getTable",value:function(e){return this.tables[e]}}]),e}();Object.assign(Me.prototype,E,je),b.register("room",(function(e){return new Me(e)})),_(window,"RexPlugins.Fire.Room",Me);var _e=function(e){var t=new Z({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:w(e,"maxUsers",0)});return t.on("userlist.leave",(function(e){e.userID===this.userID&&Ae.call(this);}),this),this.on("room.join",(function(){t.startUpdate();})).on("room.leave",(function(){t.stopUpdate().clear();})),t},Ae=function(){this.emit("room.leave");var e=this;setTimeout((function(){e.leftRoomFlag=!1;}),0);},Qe=function(e){var t=w(e,"broadcast",!0);if(!t)return null;var r=new L({eventEmitter:this.getEventEmitter(),eventNames:{receive:"broadcast.receive"},root:this.rootPath,receiverID:"broadcast",senderID:this.userInfo,history:w(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},Te=function(e){var t,r=w(e,"tables",void 0);if(void 0===r)return {};for(var i={},s=0,n=r.length;s<n;s++)i[(t=r[s]).key]=Oe.call(this,t);return i},Oe=function(e){var t=e.key,r=new ve({eventEmitter:this.getEventEmitter(),root:this.getItemTablePath(t),type:w(e,"type",1),eventNames:{init:"tables.".concat(t,".init"),update:"tables.".concat(t,".update"),addkey0:"tables.".concat(t,".addkey0"),removekey0:"tables.".concat(t,".removekey0"),changekey0:"tables.".concat(t,".changekey0"),addkey1:"tables.".concat(t,".addkey1"),removekey1:"tables.".concat(t,".removekey1"),changekey1:"tables.".concat(t,".changekey1"),addkey2:"tables.".concat(t,".addkey2"),removekey2:"tables.".concat(t,".removekey2"),changekey2:"tables.".concat(t,".changekey2")}});return this.on("room.join",(function(){r.startUpdate();})).on("room.leave",(function(){r.clear().stopUpdate();})),r},Se={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(Se,{getRoomRef:function(e){var t=this.database.ref(this.rootPath);return e&&(t=t.child(e)),t},getUserListRef:function(){return this.getRoomRef("users")},getRoomDataPath:function(e){var t=this.rootPath;return e&&(t+="/".concat(e)),t},getUserListPath:function(){return this.getRoomDataPath("users")},getItemTablePath:function(e){return "".concat(this.getRoomDataPath("tables"),"/").concat(e)}});var Be=function(){function e(r){t(this,e);var i=w(r,"eventEmitter",void 0),s=w(r,"EventEmitterClass",void 0);this.setEventEmitter(i,s),this.database=firebase.database(),this.rootPath=w(r,"root",""),this.userInfo={userID:"",userName:""},this.setUser(w(r,"userID",""),w(r,"userName","")),this.leftRoomFlag=!1,this.userList=_e.call(this,r),this.broadcast=Qe.call(this,r),this.tables=Te.call(this,r);}return i(e,[{key:"shutdown",value:function(){}},{key:"destroy",value:function(){this.shutdown();}},{key:"userID",get:function(){return this.userInfo.userID},set:function(e){this.userInfo.userID=e;}},{key:"userName",get:function(){return this.userInfo.userName},set:function(e){this.userInfo.userName=e;}},{key:"setUser",value:function(e,t){return x(e)?this.userInfo=e:(this.userID=e,this.userName=t),this}},{key:"isInRoom",value:function(){return this.userList.isInList}},{key:"isFull",value:function(){return this.userList.isFull()}},{key:"isFirstUser",value:function(e){return this.userList.isFirstUser(e)}},{key:"getUsers",value:function(){return this.userList.getUsers()}},{key:"maxUsers",get:function(){return this.userList.maxUsers}},{key:"getTable",value:function(e){return this.tables[e]}}]),e}();Object.assign(Be.prototype,E,Se),b.register("singleRoom",(function(e){return new Be(e)})),_(window,"RexPlugins.Fire.SingleRoom",Be),b.register("itemTable",(function(e){return new ve(e)})),_(window,"RexPlugins.Fire.ItemTable",ve);var Ke=function(e){return void 0===e.totalLines&&(e.totalLines=1/0),void 0===e.linesPerPage&&(e.linesPerPage=1e3),e.remainderLines=e.totalLines,qe(e)},qe=function e(t){var r=t.query;t.startDocRef&&(r=r[t.startMode](t.startDocRef));var i=Math.min(t.remainderLines,t.linesPerPage);return t.remainderLines-=i,r.limit(i).get().then((function(r){var s,n=0===t.remainderLines||r.size<i;return t.forEachPageCallback&&(n|=!!t.forEachPageCallback(r)),n?(t.resolveCallback&&(s=t.resolveCallback()),Promise.resolve(s)):(t.startDocRef=r.docs[r.size-1],t.startMode="startAfter",e(t))}))},ze=function(e,t,r,i,s){void 0===t&&(t=1/0),void 0===r&&(r=0);var n=[],o=0;return Ke({query:e,totalLines:r+t,startDocRef:i,startMode:s,forEachPageCallback:function(e){var t,i=e.size,s=r-o;s<=0?t=e.docs:s<i&&(t=e.docs.slice(s,i)),t&&n.push.apply(n,h(t)),o+=i;},resolveCallback:function(){return n}})},He=function(){var e=this;return ze(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)}))},Ve=function(){var e=this;return ze(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)}))},We=function(){var e=this;return ze(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)}))},Ye=function(){var e=(this.pageIndex+1)*this.itemCount,t=this;return ze(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)}))},Ge=function(){var e=this;return ze(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 ze(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)}))},Xe=function(){var e=this;return ze(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)}))},Ze=function(){var e=this.pageIndex*this.itemCount,t=this;return ze(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)}))},$e=function(){function e(r){t(this,e),this.setItemCount(w(r,"itemCount",100)),this.setQuery(w(r,"query",void 0)),this.setDataMode(w(r,"dataMode",0)),this.setBaselineDoc(w(r,"baselineDoc",void 0),w(r,"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;}return i(e,[{key:"setItemCount",value:function(e){return this.itemCount=e,this}},{key:"setQuery",value:function(e,t){if(x(e)){var r=e;this.nextQuery=r.next,this.prevQuery=r.previous;}else this.nextQuery=e,this.prevQuery=t;return this.page