=e.length)break;s=e[A++]}else{if((A=e.next()).done)break;s=A.value}var n=s;if(n&&n!=app.session.user)return n}}return null},pickTextColorBasedOnBgColorSimple:function(a,e,t){var A="#"===a.charAt(0)?a.substring(1,7):a;return.299*parseInt(A.substring(0,2),16)+.587*parseInt(A.substring(2,4),16)+.114*parseInt(A.substring(4,6),16)>186?t:e}});var Qa=t(28),Da=t.n(Qa);function Ma(a,e,t){return e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}var Sa=function(){function a(a){Ma(this,"loadingSend",!1),Ma(this,"scroll",{autoScroll:!0,oldScroll:0}),Ma(this,"loading",!1),Ma(this,"loadingQueries",{}),Ma(this,"input",{messageLength:0,rows:1,content:R()()}),Ma(this,"messagesFetched",!1),Ma(this,"chatStorage",{key:null,draft:null}),a.model&&(this.initChatStorage(a.model),this.input.content(this.getChatStorageValue("draft")))}var e=a.prototype;return e.initChatStorage=function(a){this.chatStorage.key="neonchat.viewport"+a.id();var e,t=JSON.parse(localStorage.getItem(this.chatStorage.key));t&&(this.chatStorage.draft=null!=(e=t.draft)?e:"")},e.getChatStorageValue=function(a){return this.chatStorage[a]},e.setChatStorageValue=function(a,e){var t,A=null!=(t=JSON.parse(localStorage.getItem(this.chatStorage.key)))?t:{};A[a]=e,localStorage.setItem(this.chatStorage.key,JSON.stringify(A)),this.chatStorage[a]=e},e.onChatMessageClicked=function(a,e){switch(a){case"dropdownEditStart":this.messageEdit(e,!0);break;case"dropdownResend":this.messageResend(e);break;case"insertMention":this.insertMention(e)}},e.getChatInput=function(){return document.querySelector(".NeonChatFrame #chat-input")},e.messageSend=function(){var a=this.input.content();if(a&&a.trim().length>0&&!this.loadingSend)if(this.input.writingPreview)this.input.writingPreview=!1,this.messagePost(this.input.previewModel),app.chat.insertChatMessage(A(this.input.previewModel,{})),this.inputClear();else if(this.messageEditing){var e=this.messageEditing;e.content.trim()!==e.oldContent.trim()&&(e.oldContent=e.content,app.chat.editChatMessage(e,!0,e.content)),this.messageEditEnd(),this.inputClear()}},e.messageEdit=function(a){this.input.writingPreview&&this.input.instance.inputPreviewEnd(),this.messageEditing&&this.messageEditEnd(),a.isEditing=!0,a.oldContent=a.message(),this.messageEditing=a;var e=this.getChatInput();e.value=this.input.content(a.oldContent),e.focus(),app.chat.input.resizeInput(),m.redraw()},e.messageEditEnd=function(){var a=this.messageEditing;a&&(a.isEditing=!1,a.content=a.oldContent,this.inputClear(),m.redraw(),this.messageEditing=null)},e.messageResend=function(a){this.messagePost(a)},e.messagePost=function(a){var e=this;return this.loadingSend=!0,m.redraw(),app.chat.postChatMessage(a).then((function(a){e.loadingSend=!1,m.redraw()}),(function(a){e.loadingSend=!1,m.redraw()}))},e.inputClear=function(){this.input.messageLength=0,this.input.rows=1,this.input.content(null),m.redraw()},e.insertMention=function(a){var e=a.user();app.session.user&&(this.input.content((this.input.content()||"")+" @"+e.username()+" "),this.getChatInput().focus())},a}(),Na=new Audio;Na.src="data:audio/ogg;base64,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",Na.volume=.5;var xa=new Audio;xa.src="data:audio/ogg;base64,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",xa.volume=.5;var Fa=function(){function a(){var a,e,t,A,s,n,o;this.q=R()(""),this.chats=[],this.chatmessages=[],this.chatsLoading=!0,this.curChat=null,this.totalHiddenCount=0;var r=null!=(a=JSON.parse(localStorage.getItem("neonchat")))?a:{};this.frameState={beingShown:null!=(e=r.beingShown)?e:app.forum.attribute("xelson-chat.settings.display.minimize"),beingShownChatsList:null!=(t=r.beingShownChatsList)?t:0,isMuted:null!=(A=r.isMuted)&&A,notify:null!=(s=r.notify)&&s,transform:null!=(n=r.transform)?n:{x:0,y:400},isActive:!0,selectedChat:null!=(o=r.selectedChat)?o:0},this.permissions={post:app.forum.attribute("xelson-chat.permissions.chat"),edit:app.forum.attribute("xelson-chat.permissions.edit"),delete:app.forum.attribute("xelson-chat.permissions.delete"),create:{channel:app.forum.attribute("xelson-chat.permissions.create.channel"),chat:app.forum.attribute("xelson-chat.permissions.create")},moderate:{delete:app.forum.attribute("xelson-chat.permissions.moderate.delete"),vision:app.forum.attribute("xelson-chat.permissions.moderate.vision")}},this.viewportStates={},app.session.user&&app.pusher&&app.pusher.then(this.listenSocketChannels.bind(this))}var e=a.prototype;return e.getViewportState=function(a){return this.viewportStates[a.id()]},e.listenSocketChannels=function(a){var e=a.channels;e.main.bind("neonchat.events",this.handleSocketEvent.bind(this)),e.user&&e.user.bind("neonchat.events",this.handleSocketEvent.bind(this))},e.handleSocketEvent=function(a){var e=a.response.message;e&&(e=app.store.pushPayload(e));var t=a.response.chat;if(t&&(t=app.store.pushPayload(t)),!e||1!=e.chat().type()||!e.chat().removed_at())switch(a.event.id){case"message.post":app.session.user&&e.user()==app.session.user||(this.insertChatMessage(e,!0),m.redraw());break;case"message.edit":var A=e.data.attributes.actions;if(app.session.user&&A.invoker==app.session.user.id())return;void 0!==A.msg?app.session.user&&e.user()==app.session.user||this.editChatMessage(e,!1,A.msg):void 0!==A.hide&&(app.session.user&&A.invoker==app.session.user.id()||(A.hide?this.hideChatMessage(e,!1,e.deleted_by()):this.restoreChatMessage(e,!1)));break;case"message.delete":app.session.user&&e.deleted_by()==app.session.user||this.deleteChatMessage(e,!1,e.deleted_by());break;case"chat.create":app.session.user&&t.creator()==app.session.user||(this.addChat(t,!0),m.redraw());break;case"chat.edit":this.editChat(t,!0);var s=a.response.eventmsg_range;if(s.length&&this.apiFetchChatMessages(t,s,{notify:!0,withFlash:!0,disableLoader:!0}),app.session.user&&a.response.roles_updated_for&&a.response.roles_updated_for.includes(app.session.user.id()))switch(app.session.user.chat_pivot(t.id()).role()){case 0:app.alerts.show({type:"error"},app.translator.trans("xelson-chat.forum.chat.edit_modal.moderator.lost",{chatname:m("b",null,t.title())}));break;case 1:app.alerts.show({type:"success"},app.translator.trans("xelson-chat.forum.chat.edit_modal.moderator.got",{chatname:m("b",null,t.title())}))}m.redraw();break;case"chat.delete":app.session.user&&t.creator()==app.session.user||(this.deleteChat(t),m.redraw())}},e.getFrameState=function(a){return this.frameState[a]},e.saveFrameState=function(a,e){var t,A=null!=(t=JSON.parse(localStorage.getItem("neonchat")))?t:{};A[a]=e,localStorage.setItem("neonchat",JSON.stringify(A)),this.frameState[a]=e},e.getPermissions=function(){return this.permissions},e.getChats=function(){var a=this;return this.chats.filter((function(e){return a.q()&&e.matches(a.q().toLowerCase())||!a.q()&&!e.removed_at()}))},e.getChatsSortedByLastUpdate=function(){return this.getChats().sort((function(a,e){var t,A;return e.last_message()&&a.last_message()?(null==(t=e.last_message())?void 0:t.created_at())-(null==(A=a.last_message())?void 0:A.created_at()):0}))},e.addChat=function(a,e){void 0===e&&(e=!1),this.chats.push(a),this.viewportStates[a.id()]=new Sa({model:a}),a.id()==this.getFrameState("selectedChat")&&this.onChatChanged(a),e&&(a.isNeedToFlash=!0)},e.editChat=function(a,e){void 0===e&&(e=!1),e&&(a.isNeedToFlash=!0)},e.apiReadChat=function(a,e){var t;this.readingTimeout&&clearTimeout(this.readingTimeout),e instanceof Date?t=e.toISOString():e instanceof wa&&(t=e.created_at().toISOString()),this.readingTimeout=setTimeout((function(){return a.save({actions:{reading:t}})}),1e3)},e.deleteChat=function(a){this.chats=this.chats.filter((function(e){return e!=a})),this.getCurrentChat()==a&&this.setCurrentChat(null)},e.isChatPM=function(a){return 0==a.type()&&a.users().length<=2},e.isExistsPMChat=function(a,e){return this.getChats().some((function(t){var A=t.users();return 0===t.type()&&2===A.length&&A.some((function(e){return e==a}))&&A.some((function(a){return a==e}))}))},e.onChatChanged=function(a,e){void 0===e&&(e={}),e.redraw=!1,a!=this.getCurrentChat()&&(this.setCurrentChat(a),m.redraw.sync())},e.comporatorAscButZerosDesc=function(a,e){return 0==a?1:0==e?-1:a-e},e.getChatMessages=function(a){var e=this,t=this.chatmessages.sort((function(a,t){return e.comporatorAscButZerosDesc(a.id(),t.id())}));return a?t.filter(a):t},e.apiFetchChatMessages=function(a,e,t){var A=this;void 0===t&&(t={});var s=this.getViewportState(a),n=this;if(!s.loading&&!s.loadingQueries[e])return s.loading=!0,s.loadingQueries[e]=!0,app.store.find("chatmessages",{chat_id:a.id(),query:e}).then((function(a){a.length&&(a.map((function(a){t.withFlash&&(a.isNeedToFlash=!0),n.insertChatMessage(a)})),t.notify&&A.messageNotify(a[0]),s.loading=!1,s.loadingQueries[e]=!1,m.redraw())}))},e.isChatMessageExists=function(a){return this.chatmessages.find((function(e){return e.id()==a.id()}))},e.insertEventChatMessage=function(a,e,t){void 0===t&&(t=!1),a.pushAttributes({message:JSON.stringify(e)}),insertChatMessage(a,t)},e.insertChatMessage=function(a,e){if(void 0===e&&(e=!1),this.isChatMessageExists(a))return null;if(this.chatmessages.push(a),e){this.messageNotify(a),a.isNeedToFlash=!0;var t=a.chat();t.isNeedToFlash=!0,t.pushAttributes({unreaded:t.unreaded()+1})}var A=this.getChatMessages((function(e){return e.chat()==a.chat()}));(e||a.chat().removed_at())&&a.id()&&A[A.length-1]==a&&(a.chat().pushData({relationships:{last_message:a}}),this.getViewportState(a.chat()).newPushedPosts=!0)},e.renderChatMessage=function(a,e){var t=a instanceof k.a?document.querySelector('.NeonChatFrame .message-wrapper[data-id="'+a.id()+'"] .message'):a;t&&(s9e.TextFormatter.preview(e,t),$(t).find(".UserMention.UserMention--deleted").each((function(){var a=app.store.getBy("users","username",this.innerText.substring(1));this&&a&&(this.classList.remove("UserMention--deleted"),m.render(this,m(u.a,{href:app.route.user(a)},this.innerText)))})),Object(ca.throttle)(100,(function(){$(".NeonChatFrame script").each((function(){self.executedScripts||(self.executedScripts={});var a=$(this).attr("src");if(!self.executedScripts[a]){var e=document.createElement("script");e.src=a,document.head.appendChild(e),self.executedScripts[a]=!0}}))}))())},e.onChatMessageClicked=function(a,e){switch(a){case"dropdownHide":this.hideChatMessage(e,!0);break;case"dropdownRestore":this.restoreChatMessage(e,!0);break;case"dropdownDelete":this.deleteChatMessage(e,!0)}},e.postChatMessage=function(a){return a.save({message:a.content,created_at:new Date,chat_id:a.chat().id()}).then((function(e){a.isTimedOut=!1,a.isNeedToFlash=!0,a.isEditing=!1,a.chat().pushData({relationships:{last_message:a}})}),(function(e){a.isTimedOut=!0}))},e.editChatMessage=function(a,e,t){void 0===e&&(e=!1),a.content=t,a.isNeedToFlash=!0,a.pushAttributes({message:t,edited_at:new Date}),e&&a.save({actions:{msg:t},edited_at:new Date,message:t}),m.redraw()},e.deleteChatMessage=function(a,e,t){void 0===e&&(e=!1),void 0===t&&(t=app.session.user),a.isDeletedForever=!0,a.deleted_by()||a.pushData({relationships:{deleted_by:t}});var A=this.getChatMessages((function(e){return e.chat()==a.chat()&&!e.isDeletedForever}));A.length&&a.chat().pushData({relationships:{last_message:A[A.length-1]}}),this.chatmessages=this.chatmessages.filter((function(e){return e!=a})),e&&a.delete(),m.redraw()},e.totalHidden=function(){return this.totalHiddenCount},e.hideChatMessage=function(a,e,t){void 0===e&&(e=!1),void 0===t&&(t=app.session.user),a.pushData({relationships:{deleted_by:t}}),e&&a.save({actions:{hide:!0},relationships:{deleted_by:app.session.user}}),this.totalHiddenCount++,m.redraw()},e.restoreChatMessage=function(a,e){void 0===e&&(e=!1),this.isChatMessageExists(a)?(a.pushAttributes({deleted_by:0}),a.isNeedToFlash=!0,delete a.data.relationships.deleted_by):(this.insertChatMessage(a),a.isNeedToFlash=!0),e&&a.save({actions:{hide:!1},deleted_by:0}),m.redraw()},e.setCurrentChat=function(a){this.curChat=a,this.saveFrameState("selectedChat",a?a.id():null)},e.getCurrentChat=function(){return this.curChat},e.apiFetchChats=function(){var a=this;return app.store.find("chats").then((function(e){e.map((function(e){return a.addChat(e)})),a.chatsLoading=!1,m.redraw()}))},e.messageNotify=function(a){app.session.user&&a.user().id()==app.session.user.id()||this.notifyTry(a)},e.notifyTry=function(a){"Notification"in window&&(this.messageIsMention(a)&&this.notifySend(a),this.notifySound(a))},e.messageIsMention=function(a){return app.session.user&&a.message().indexOf("@"+app.session.user.username())>=0},e.notifySend=function(a){var e=a.user().avatarUrl();e||(e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPZSURBVHhe7Zs9aNVQGIZvioODQwdHCxUqdHBQtNihg4NLQdCigg6CoKKiNS4dnKRDcXBpEaHSggWFLg4WBBcHBwdLCzo4FBQs2NHBoYODcH2fnOQ2iUnvT27uvcnpA29Ozh3afG++85OTE6darVZyxXEP6XhSOiUNS4NSv1+G2ZR+++WGtCqtV6pzWypzIx8DHHdUx3PSRWmInzLwXXotrciMT94vbaR9Bjgud/WadEviTucBmfFcWpIZZEtmshtgAn8guRLnnYDg56TZrEZkM8Bxb+j4WDro1TvPL+mhTFg01eZpzQDHpV0vSKe9evf5IN2UEfQXTdHnl43juJd1XJN6JXjgWtb8a2uKxjPAcffp+ESivfcys9KUsuGvqe5OYwaY4JclhrUiwLB5pRET6htQvOAD3kiX6pmwex9Q3ODhvLTsx5BKvU6QNl/E4AO4dmJIJb0JmB6Vu18GrqopvPLPIyQbYMZ5hrpOzezyZls6njRPSGsCTHLKEjwckF6Y0yj/G2Cmt700yWkXY4rtnn9eI9oEzIPNN6lbc/u84dnhiJpC7QEqngHM8soaPBBbZCa7kwHm7v+QytT2k+DuHw6yIJwBLGaUPXggxtvmNGoAKzm2cN0vfQPMGl5ey1i9yJBiHuMkyAAWMG3jAofAgCLP91uFhyWNApX7rNv/pGIhA2QALy1sZRQDeGNjKycwwKbeP84wBsTf0dnEIAbYMPtLo38vA/wTa9kzwC+tBQPYkWErmxiQ6f16wdneywAdmn6nXiI2MIDdWLayigHr5txK1vsq1Tn6ABv7gU1iJwPgrV/ahBdzYMCKX9qEF3P4xQjLYiyP2cCW0n+AkyAD4Jlf2kAt1rAB85INs8I/ErF67Bhg3pUtmUqpmQ/eC0I4A2BaKnMWEBsx1ogaYJyZMZVSMhO++xDPAGCnZRlnh18kYouQtkmKpfLP0n6vXnzo+EZ097+a6g5JGUBT4MOESVMpBZNJwUOyAWD24Le8D7+HWPRjSSTdAMMdiY3HRYX5PjGkktwHhHFc9ti9k7wNBQXiozSuu88myVTqZQBNgT8wLhXpiZFrrRs81DcAzB+akIrQJ3CNE40ED/WbQByzk/Sp1GtDJEMdvX1TN6l5A8Bxj+r4Ujrm1bsPkxx2hCcOdbvRWBOIY/7RiDQldfPZgf/NNSROchqhtQwIY3aYPpLYfNipZhE80k4r8Ew3ILsBAcYITLgr5bWyxIfULGZEHmmz0D4DwjjuGR3Ze3hWyrr/gBVrhjU+nn7v/dJG8jEgjONiQPzzeSZXcWMIlKGLMvz5fI5L9pXKP+lVHvxHrr8zAAAAAElFTkSuQmCC"),this.getFrameState("notify")&&document.hidden&&new Notification(a.chat().title(),{body:a.user().username()+": "+a.message(),icon:e,silent:!0,timestamp:new Date})},e.notifySound=function(a){if(!this.getFrameState("isMuted")){var e=this.messageIsMention(a)?Na:xa;e.currentTime=0,e.play()}},e.flashItem=function(a){a.addClass("flash").one("animationend webkitAnimationEnd",(function(){return a.removeClass("flash")}))},a}();t(29);var Ta=document.createElement("div");Ta.setAttribute("id","chat"),document.body.append(Ta),app.initializers.add("xelson-chat",(function(a){function e(t,A,s,n){return e.hasOne=function(e,t,A){return function(){var s=this.data.attributes[e]&&this.data.attributes[e][t]&&this.data.attributes[e][t][A];if(s)return a.store.getById(s.data.type,s.data.id)}},function(){var a=this.data.attributes[t]&&this.data.attributes[t][A]&&this.data.attributes[t][A][s];return n?n(a):a}}a.store.models.chats=ya,a.store.models.chatmessages=wa,A(Da.a.prototype,{chat_pivot:function(a){return{role:e("chat_pivot",a,"role").bind(this),removed_by:e("chat_pivot",a,"removed_by").bind(this),readed_at:e("chat_pivot",a,"readed_at",k.a.transformDate).bind(this),removed_at:e("chat_pivot",a,"removed_at",k.a.transformDate).bind(this),joined_at:e("chat_pivot",a,"joined_at",k.a.transformDate).bind(this)}}}),Object(s.extend)(o.a.prototype,"mount",(function(){a.forum.attribute("xelson-chat.permissions.enabled")&&(a.chat=new Fa,m.mount(document.getElementById("chat"),Ia),"Notification"in window&&a.chat.getFrameState("notify")&&Notification.requestPermission(),a.pusher||a.alerts.show({type:"error"},a.translator.trans("xelson-chat.forum.pusher_not_found")),a.chat.apiFetchChats())}))}))}]);
//# sourceMappingURL=forum.js.map
\ No newline at end of file
diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map
index 89cc1f3..1487f51 100644
--- a/js/dist/forum.js.map
+++ b/js/dist/forum.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://module.exports/webpack/bootstrap","webpack://module.exports/./forum.js","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://module.exports/./src/forum/addChatPage.js","webpack://module.exports/./src/forum/components/ChatAvatar.js","webpack://module.exports/./src/forum/components/ChatCreateModal.js","webpack://module.exports/./src/forum/components/ChatEditModal.js","webpack://module.exports/./src/forum/components/ChatEventMessage.js","webpack://module.exports/./src/forum/components/ChatFrame.js","webpack://module.exports/./src/forum/components/ChatHeader.js","webpack://module.exports/./src/forum/components/ChatInput.js","webpack://module.exports/./src/forum/components/ChatList.js","webpack://module.exports/./src/forum/components/ChatMessage.js","webpack://module.exports/./src/forum/components/ChatModal.js","webpack://module.exports/./src/forum/components/ChatPage.js","webpack://module.exports/./src/forum/components/ChatPreview.js","webpack://module.exports/./src/forum/components/ChatSearchUser.js","webpack://module.exports/./src/forum/components/ChatViewport.js","webpack://module.exports/./src/forum/components/ChatWelcome.js","webpack://module.exports/./src/forum/components/UsersSearchResults.js","webpack://module.exports/./src/forum/index.js","webpack://module.exports/./src/forum/models/Chat.js","webpack://module.exports/./src/forum/models/Message.js","webpack://module.exports/./src/forum/resources.js","webpack://module.exports/./src/forum/states/ChatState.js","webpack://module.exports/./src/forum/states/ViewportState.js","webpack://module.exports/./src/forum/utils/timedRedraw.js","webpack://module.exports/external \"flarum.core.compat['Application']\"","webpack://module.exports/external \"flarum.core.compat['Component']\"","webpack://module.exports/external \"flarum.core.compat['Model']\"","webpack://module.exports/external \"flarum.core.compat['common/components/Page']\"","webpack://module.exports/external \"flarum.core.compat['components/Button']\"","webpack://module.exports/external \"flarum.core.compat['components/Dropdown']\"","webpack://module.exports/external \"flarum.core.compat['components/IndexPage']\"","webpack://module.exports/external \"flarum.core.compat['components/Link']\"","webpack://module.exports/external \"flarum.core.compat['components/LinkButton']\"","webpack://module.exports/external \"flarum.core.compat['components/LoadingIndicator']\"","webpack://module.exports/external \"flarum.core.compat['components/Modal']\"","webpack://module.exports/external \"flarum.core.compat['components/Search']\"","webpack://module.exports/external \"flarum.core.compat['components/Separator']\"","webpack://module.exports/external \"flarum.core.compat['extend']\"","webpack://module.exports/external \"flarum.core.compat['helpers/avatar']\"","webpack://module.exports/external \"flarum.core.compat['helpers/fullTime']\"","webpack://module.exports/external \"flarum.core.compat['helpers/highlight']\"","webpack://module.exports/external \"flarum.core.compat['helpers/icon']\"","webpack://module.exports/external \"flarum.core.compat['helpers/listItems']\"","webpack://module.exports/external \"flarum.core.compat['helpers/username']\"","webpack://module.exports/external \"flarum.core.compat['models/Group']\"","webpack://module.exports/external \"flarum.core.compat['models/User']\"","webpack://module.exports/external \"flarum.core.compat['utils/ItemList']\"","webpack://module.exports/external \"flarum.core.compat['utils/Stream']\"","webpack://module.exports/external \"flarum.core.compat['utils/SubtreeRetainer']\"","webpack://module.exports/external \"flarum.core.compat['utils/classList']\"","webpack://module.exports/external \"flarum.core.compat['utils/computed']\"","webpack://module.exports/external \"flarum.core.compat['utils/extractText']\"","webpack://module.exports/external \"flarum.core.compat['utils/humanTime']\"","webpack://module.exports/external \"flarum.core.compat['utils/throttleDebounce']\""],"names":["addChatPage","app","routes","chat","path","component","ChatPage","extend","IndexPage","prototype","items","screen","add","route","translator","trans","ChatAvatar","oninit","vnode","model","attrs","componentAvatarPM","classList","avatar","image","avatarUrl","color","textColor","icon","firstLetter","title","toUpperCase","componentAvatarChannel","view","type","string","i","length","isLetter","c","toLowerCase","Component","ChatCreateModal","isChannel","onsubmit","store","createRecord","save","getInput","relationships","users","getSelectedUsers","session","user","then","addChat","onChatChanged","m","redraw","hide","componentFormInputColor","componentFormColor","desc","stream","placeholder","componentFormInputIcon","componentFormIcon","a","componentFormChat","usersSelected","componentFormInput","componentFormUsersSelect","componentFormChannel","isCanCreateChat","alertText","isCanCreateChannel","content","getPermissions","create","channel","bind","ChatModal","ChatEditModal","Stream","deleteChatTitleInput","deleteState","initialUsers","filter","mdl","chat_pivot","id","removed_at","setSelectedUsers","edited","isLocalModerator","isModer","isLocalLeaved","includes","added","map","Model","getIdentifier","e","removed","Object","keys","k","role","isCreator","creator","groups","some","g","Group","ADMINISTRATOR_ID","userMentionClassname","editable","moder","userMentionDropdownOnclick","button","splice","indexOf","componentUserMentionDropdown","userMentionContent","displayName","isChatPM","userMentionOnClick","$","target","find","trigger","componentFormInputTitle","componentChatInfo","componentUsersMentions","componentFormPM","componentForm","componentFormButtons","buttons","push","isCanEditChannel","isCanEditChat","onleave","removed_by","componentDeleteChat","ondelete","isValidTitleCopy","deleteChat","ChatEventMessage","message","split","every","parsedContent","JSON","parse","componentUserMention","componentUserMentionsByIds","ids","getById","componentEventText","creatorname","chatname","username","usernames","componentOld","componentNew","column","old","editorname","remove","invitednames","kickednames","extractText","fullTime","created_at","humanTime","ChatMessage","ChatFrame","document","addEventListener","chatMoveListener","oncreate","calcHeight","getFrameState","y","current","matches","style","right","x","height","chatHeaderOnMouseDown","chatsLoading","getCurrentChat","composedPath","el","contains","chatMoveStart","stopPropagation","preventDefault","event","chatMoving","chatMoveEnd","mouseMoveEvent","chatMoveProcess","moveLast","clientX","clientY","body","removeEventListener","saveFrameState","parseInt","element","offsetHeight","move","nextPos","window","innerWidth","querySelector","offsetWidth","clientHeight","innerHeight","ChatHeader","ondragstart","onmousedown","showChatListStream","modal","show","windowButtonItems","toArray","ItemList","toggleSound","toggleNotifications","inFrame","toggleChat","showing","Notification","requestPermission","ChatInput","state","input","messageCharLimit","forum","attribute","updatePlaceholder","inputState","lineHeight","getComputedStyle","getPropertyValue","inputProcess","updateLimit","onbeforeupdate","inputPlaceholder","post","inputPressEnter","inputSaveDraft","rows","saveDraft","apply","messageEditing","messageEditEnd","inputPressButton","limiter","charsTyped","messageLength","innerText","className","text","lastDraft","throttle","setChatStorageValue","value","trim","resizeInput","Math","min","scrollHeight","inputValue","writingPreview","inputPreviewStart","inputPreviewEnd","previewModel","oninput","keyCode","shiftKey","messageSend","pushData","attributes","isEditing","isNeedToFlash","classes","inPage","join","q","toggleChatsList","getChatsSortedByLastUpdate","getChatsListPanel","getChatsList","chatLists","labels","initLabels","subtree","SubtreeRetainer","freshness","isDeletedForever","isTimedOut","modelEvent","name","viewportState","getViewportState","onChatMessageClicked","needsRebuild","label","condition","editDropDown","editDropDownTimedOut","is_censored","onContentWrapperCreated","onContentWrapperUpdated","hidden","deleted_by","editing","deleted","isVisible","labelBind","edited_at","ago","edit","moderate","totalHidden","messageWrapper","dom","pollInterval","setInterval","renderMessage","onremove","clearInterval","onupdate","flashItem","oldContent","renderChatMessage","search","neonchat","iconState","lastInput","isChatExists","isExistsPMChat","componentAlert","componentUsersSelect","u","options","formInputOnUpdate","inputIconHasFocus","dropdownIconMatches","inputIcon","fa5IconsList","sort","b","random","slice","highlight","css","backgroundColor","Modal","bodyClass","listOpen","navItems","sidebarItems","has","listItems","clickHandler","chatList","on","documentElement","getBoundingClientRect","top","console","log","off","Page","ChatPreview","position","active","componentPreview","unreaded","componentMessageTime","lastMessage","last_message","time","Date","now","getTime","nl","n","getHours","getMinutes","componentTextPreview","componentTextEmpty","componentPreviewChannel","formatTextPreview","startsWith","formatResult","senderName","sender","censored","ChatSearchUser","sourceItems","UsersSearchSource","updateMaxHeight","currentSearch","getInitialSearch","getValue","setValue","searching","sources","open","hasFocus","loading","loadingSources","clear","source","Search","ChatViewport","chatModel","loadChat","oldScroll","scroll","reloadMessages","setTimeout","getChatWrapper","scrollTop","wrapperOnCreate","wrapperOnBeforeUpdate","wrapperOnUpdate","wrapperOnRemove","componentLoader","componentsChatMessages","concat","componentChatMessage","nearBottom","scrollToBottom","isFastScrollAvailable","componentScroller","getChatMessages","fastScroll","watch","chatWrapper","newPushedPosts","fastMessagesFetch","max","chatmessages","apiFetchChatMessages","r","timedRedraw","pushAttributes","apiReadChat","boundScrollListener","wrapperOnScroll","passive","vnodeNew","autoScroll","scrollAfterUpdate","autoScrollTimeout","clearTimeout","checkUnreaded","lastFastScrollStatus","currentHeight","atBottom","scrolling","topMessage","first_message","toISOString","bottomMessage","wrapper","list","readed_at","isReaded","msg","offsetTop","scrollToAnchor","anchor","Message","stop","animate","force","notAtBottom","fewMessages","pixelsFromBottom","messagesFetched","query","abs","ChatWelcome","getChats","UsersSearchResults","props","results","page","limit","isUserSelected","userClick","usersList","all","resultsFind","arr","lastIndexOf","localeCompare","moreText","more_results","LoadingIndicator","size","resultsSelected","values","children","undefined","createElement","setAttribute","append","initializers","models","chats","Chat","pivot","attr","transform","hasOne","relationship","data","User","chat_id","transformDate","joined_at","Application","ChatState","mount","getElementById","pusher","alerts","apiFetchChats","_title","_color","hasMany","v","pm_user","computed","updated","getPMUser","pickTextColorBasedOnBgColorSimple","bgColor","lightColor","darkColor","charAt","substring","is_readed","ip_address","base64AudioNotificationRef","base64AudioNotification","base64PlaceholderAvatarImage","refAudio","Audio","src","resources","volume","audio","curChat","totalHiddenCount","neonchatState","localStorage","getItem","frameState","beingShown","beingShownChatsList","isMuted","notify","isActive","selectedChat","permissions","vision","viewportStates","listenSocketChannels","socket","channels","main","handleSocketEvent","response","pushPayload","insertChatMessage","actions","invoker","editChatMessage","hideChatMessage","restoreChatMessage","deleteChatMessage","editChat","range","eventmsg_range","withFlash","disableLoader","roles_updated_for","key","setItem","stringify","outside","ViewportState","readingTimeout","timestamp","reading","setCurrentChat","user1","user2","sync","comporatorAscButZerosDesc","viewport","self","loadingQueries","messageNotify","isChatMessageExists","insertEventChatMessage","s9e","TextFormatter","preview","each","getBy","render","executeScriptsTimeout","executedScripts","scriptURL","scriptTag","head","appendChild","eventName","postChatMessage","notifyTry","messageIsMention","notifySend","notifySound","silent","sound","currentTime","play","$item","addClass","one","removeClass","params","draft","initChatStorage","getChatStorageValue","chatStorage","parsedData","cachedState","messageEdit","messageResend","insertMention","getChatInput","loadingSend","messagePost","inputClear","instance","inputElement","focus","redrawTimeout","timeout","callback"],"mappings":"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AI,CAACF,aAAL,EAAoB;AAChBA,iBAAa,GAAGxO,UAAU,CAAC,YAAM;AAC7BlX,OAAC,CAACC,MAAF;AACA,UAAI2lB,QAAJ,EAAcA,QAAQ;AACtBF,mBAAa,GAAG,IAAhB;AACH,KAJyB,EAIvBC,OAJuB,CAA1B;AAKH;AACJ,C;;;;;;;;;;;ACVD,mD;;;;;;;;;;;ACAA,iD;;;;;;;;;;;ACAA,6C;;;;;;;;;;;ACAA,8D;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,4D;;;;;;;;;;;ACAA,uD;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,mE;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,4D;;;;;;;;;;;ACAA,8C;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,mD;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,uD;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,uD;;;;;;;;;;;ACAA,8D","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import { extend } from 'flarum/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport LinkButton from 'flarum/components/LinkButton';\nimport ChatPage from './components/ChatPage';\n\nexport default function addChatPage() {\n app.routes.chat = { path: '/chat', component: ChatPage };\n\n extend(IndexPage.prototype, 'navItems', function (items) {\n if (app.screen() !== 'phone') return;\n\n items.add(\n 'chat',\n \n {app.translator.trans('xelson-chat.forum.index.chat_link')}\n ,\n -10\n );\n });\n}\n","import Component from 'flarum/Component';\nimport classList from 'flarum/utils/classList';\n\nexport default class ChatAvatar extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n }\n\n componentAvatarPM() {\n return (\n \n {this.model.icon() ? (\n \n ) : this.model.avatarUrl() ? null : (\n this.firstLetter(this.model.title()).toUpperCase()\n )}\n
\n );\n }\n\n componentAvatarChannel() {\n return (\n \n {this.model.icon() ? (\n \n ) : this.model.avatarUrl() ? null : (\n this.firstLetter(this.model.title()).toUpperCase()\n )}\n
\n );\n }\n\n view(vnode) {\n return this.model.type() == 1 ? this.componentAvatarChannel() : this.componentAvatarPM();\n }\n\n firstLetter(string) {\n for (let i = 0; i < string.length; i++) {\n if (this.isLetter(string[i])) return string[i];\n }\n return string[0];\n }\n\n isLetter(c) {\n return c.toLowerCase() != c.toUpperCase();\n }\n}\n","import Button from 'flarum/components/Button';\nimport classList from 'flarum/utils/classList';\n\nimport ChatSearchUser from './ChatSearchUser';\nimport ChatModal from './ChatModal';\nimport Stream from 'flarum/utils/Stream';\n\nexport default class ChatCreateModal extends ChatModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.isChannel = false;\n }\n\n title() {\n return app.translator.trans('xelson-chat.forum.chat.list.add_modal.title');\n }\n\n onsubmit() {\n app.store\n .createRecord('chats')\n .save({\n title: this.getInput().title(),\n isChannel: this.isChannel,\n icon: this.getInput().icon(),\n color: this.getInput().color(),\n relationships: { users: [...this.getSelectedUsers(), app.session.user] },\n })\n .then((model) => {\n app.chat.addChat(model);\n app.chat.onChatChanged(model);\n m.redraw();\n });\n this.hide();\n }\n\n componentFormInputColor() {\n return this.componentFormColor({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.validator'),\n stream: this.getInput().color,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.label'),\n });\n }\n\n componentFormInputIcon() {\n return this.componentFormIcon({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.icon.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.icon.validator', {\n a: ,\n }),\n stream: this.getInput().icon,\n placeholder: 'fas fa-bolt',\n });\n }\n\n componentFormChat() {\n return [\n this.usersSelected.length > 1\n ? [\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.chat'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.chat'),\n }),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n ]\n : null,\n this.componentFormUsersSelect(),\n ];\n }\n\n componentFormChannel() {\n return [\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.channel'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.channel'),\n }),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n ];\n }\n\n isCanCreateChat() {\n if (this.getSelectedUsers().length > 1 && !this.getInput().title().length) return false;\n if (!this.getSelectedUsers().length) return false;\n if (this.alertText()) return false;\n\n return true;\n }\n\n isCanCreateChannel() {\n return this.getInput().title().length;\n }\n\n content() {\n return (\n \n );\n }\n}\n","import Button from 'flarum/components/Button';\nimport Dropdown from 'flarum/components/Dropdown';\nimport classList from 'flarum/utils/classList';\nimport Model from 'flarum/Model';\nimport Group from 'flarum/models/Group';\n\nimport ChatModal from './ChatModal';\nimport Stream from 'flarum/utils/Stream';\n\nexport default class ChatEditModal extends ChatModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.getInput().title = Stream(this.model.title());\n this.getInput().color = Stream(this.model.color());\n this.getInput().icon = Stream(this.model.icon());\n\n this.deleteChatTitleInput = Stream('');\n this.deleteState = 0;\n\n this.initialUsers = this.model.users().filter((mdl) => !mdl.chat_pivot(this.model.id()).removed_at());\n this.setSelectedUsers(this.model.users().filter((mdl) => !mdl.chat_pivot(this.model.id()).removed_at()));\n this.edited = {};\n\n this.isLocalModerator = this.isModer(app.session.user);\n this.isLocalLeaved = !this.initialUsers.includes(app.session.user);\n }\n\n title() {\n return app.translator.trans('xelson-chat.forum.chat.edit_modal.title');\n }\n\n onsubmit() {\n let added = this.getSelectedUsers()\n .map((mdl) => (!this.initialUsers.includes(mdl) ? Model.getIdentifier(mdl) : null))\n .filter((e) => e);\n let removed = this.initialUsers.map((mdl) => (!this.getSelectedUsers().includes(mdl) ? Model.getIdentifier(mdl) : null)).filter((e) => e);\n let edited = Object.keys(this.edited).map((k) => (this.edited[k] = { id: k, ...this.edited[k] }));\n\n this.model.save({\n title: this.getInput().title(),\n color: this.getInput().color(),\n icon: this.getInput().icon(),\n users: { added, removed, edited },\n relationships: { users: this.getSelectedUsers() },\n });\n\n this.hide();\n }\n\n alertText() {\n return null;\n }\n\n isModer(user) {\n if (!user) return false;\n if (this.edited[user.id()]?.role ?? user.chat_pivot(this.model.id()).role()) return true;\n if (this.isCreator(user)) return true;\n\n return false;\n }\n\n isCreator(user) {\n return (\n user.chat_pivot(this.model.id()).role() == 2 ||\n (!this.model.creator() && user.groups() && user.groups().some((g) => g.id() == Group.ADMINISTRATOR_ID))\n );\n }\n\n userMentionClassname(user) {\n return classList({ editable: true, moder: this.isModer(user), creator: this.isCreator(user) });\n }\n\n userMentionDropdownOnclick(user, button) {\n switch (button) {\n case 'moder': {\n if (this.isModer(user)) this.edited[user.id()] = { role: 0 };\n else this.edited[user.id()] = { role: 1 };\n\n break;\n }\n case 'kick': {\n this.getSelectedUsers().splice(this.getSelectedUsers().indexOf(user), 1);\n break;\n }\n }\n }\n\n componentUserMentionDropdown(user) {\n return (\n \n \n {app.translator.trans('xelson-chat.forum.chat.moder')}\n \n = this.isLocalModerator && user != app.session.user}\n >\n {app.translator.trans(`xelson-chat.forum.chat.${user == app.session.user ? 'leave' : 'kick'}`)}\n \n \n );\n }\n\n userMentionContent(user) {\n return ['@' + user.displayName(), this.isLocalModerator && !app.chat.isChatPM(this.model) ? this.componentUserMentionDropdown(user) : null];\n }\n\n userMentionOnClick(user, e) {\n this.$(e.target).find('.Dropdown').trigger('shown.bs.dropdown');\n }\n\n componentFormInputIcon() {\n return this.componentFormIcon({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.icon.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.icon.validator', {\n a: ,\n }),\n stream: this.getInput().icon,\n placeholder: 'fas fa-bolt',\n });\n }\n\n componentFormInputTitle() {\n return this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.label'),\n });\n }\n\n componentFormInputColor() {\n return this.componentFormColor({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.validator'),\n stream: this.getInput().color,\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.label'),\n });\n }\n\n componentChatInfo() {\n return [\n \n {this.model.title()} \n ,\n this.componentUsersMentions(),\n ];\n }\n\n componentFormPM() {\n return this.componentChatInfo();\n }\n\n componentFormChannel() {\n return this.isLocalModerator\n ? [\n this.componentFormInputTitle(),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n this.componentFormUsersSelect('xelson-chat.forum.chat.edit_modal.form.users.edit'),\n ]\n : this.componentChatInfo();\n }\n\n componentFormChat() {\n return this.isLocalModerator\n ? [this.componentFormInputTitle(), this.componentFormInputColor(), this.componentFormInputIcon(), this.componentFormUsersSelect()]\n : this.componentChatInfo();\n }\n\n componentForm() {\n if (this.model.type()) return this.componentFormChannel();\n if (app.chat.isChatPM(this.model)) return this.componentFormPM();\n\n return this.componentFormChat();\n }\n\n componentFormButtons() {\n let buttons = [];\n\n if (this.isLocalModerator && !app.chat.isChatPM(this.model))\n buttons.push(\n \n {app.translator.trans('xelson-chat.forum.chat.edit_modal.save_button')}\n \n );\n\n buttons.push(\n \n {app.translator.trans(`xelson-chat.forum.chat.edit_modal.form.${this.isLocalLeaved ? 'return' : 'leave'}`)}\n \n );\n\n if (!app.chat.isChatPM(this.model) && app.chat.getPermissions().create.channel) buttons.push(this.componentDeleteChat());\n\n return buttons;\n }\n\n onleave() {\n if (!this.isLocalLeaved) {\n this.model\n .save({\n users: { removed: [Model.getIdentifier(app.session.user)] },\n relationships: { users: this.getSelectedUsers() },\n })\n .then((e) => m.redraw());\n } else {\n this.getSelectedUsers().push(app.session.user);\n\n this.model\n .save({\n users: { added: [Model.getIdentifier(app.session.user)] },\n relationships: { users: this.getSelectedUsers() },\n })\n .then((e) => m.redraw());\n }\n\n this.hide();\n }\n\n isCanEditChannel() {\n return this.getInput().title().length;\n }\n\n isCanEditChat() {\n if (this.alertText()) return false;\n\n return true;\n }\n\n componentDeleteChat() {\n return [\n this.deleteState == 1\n ? [\n ,\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.title'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.desc'),\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.placeholder'),\n stream: this.deleteChatTitleInput,\n }),\n ]\n : null,\n \n {app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.button')}\n ,\n ];\n }\n\n isValidTitleCopy() {\n return this.deleteChatTitleInput() == this.model.title();\n }\n\n ondelete() {\n switch (this.deleteState) {\n case 0: {\n this.deleteState = 1;\n break;\n }\n case 1: {\n if (this.isValidTitleCopy()) {\n app.chat.deleteChat(this.model);\n this.model.delete();\n\n this.hide();\n }\n break;\n }\n }\n }\n\n content() {\n return (\n \n );\n }\n}\n","import ChatMessage from './ChatMessage';\nimport Link from 'flarum/components/Link';\nimport extractText from 'flarum/utils/extractText';\nimport humanTime from 'flarum/utils/humanTime';\nimport fullTime from 'flarum/helpers/fullTime';\n\nexport default class ChatEventMessage extends ChatMessage {\n oninit(vnode) {\n super.oninit(vnode);\n\n if (\n this.model\n .message()\n .split('')\n .every((c) => c === '*')\n )\n this.parsedContent = { id: 'chatCensored' };\n else this.parsedContent = JSON.parse(this.model.message());\n }\n\n componentUserMention(user) {\n return (\n \n {user.displayName()} \n \n );\n }\n\n componentUserMentionsByIds(ids) {\n return ids.map((id) => this.componentUserMention(app.store.getById('users', id)));\n }\n\n componentEventText() {\n switch (this.parsedContent.id) {\n case 'chatCensored': {\n return (\n \n {this.model.message()}\n
\n );\n }\n case 'chatCreated': {\n if (!this.model.chat()) return;\n\n if (this.model.chat().type() == 1) {\n return app.translator.trans(`xelson-chat.forum.chat.message.events.channel.created`, {\n creatorname: this.componentUserMention(this.model.user()),\n chatname: {this.model.chat().title()} ,\n });\n } else {\n if (this.model.chat().type() == 0 && this.model.chat().users().length <= 2) {\n return app.translator.trans(`xelson-chat.forum.chat.message.events.pm.created`, {\n creatorname: this.componentUserMention(this.model.chat().creator()),\n username: this.parsedContent.users.length\n ? this.componentUserMention(app.store.getById('users', this.parsedContent.users[0]))\n : null,\n });\n }\n\n return app.translator.trans(`xelson-chat.forum.chat.message.events.chat.created`, {\n creatorname: this.componentUserMention(this.model.user()),\n chatname: {this.model.chat().title()} ,\n usernames: this.componentUserMentionsByIds(this.parsedContent.users),\n username: this.parsedContent.users.length\n ? this.componentUserMention(app.store.getById('users', this.parsedContent.users[0]))\n : null,\n });\n }\n }\n case 'chatEdited': {\n let componentOld, componentNew;\n switch (this.parsedContent.column) {\n case 'title':\n componentOld = {this.parsedContent.old} ;\n componentNew = {this.parsedContent.new} ;\n break;\n\n case 'color':\n componentOld = ;\n componentNew = ;\n break;\n\n case 'icon':\n componentOld = this.parsedContent.old ? : [nothing] ;\n componentNew = ;\n break;\n }\n\n return app.translator.trans(`xelson-chat.forum.chat.message.events.${this.parsedContent.column}.edited`, {\n editorname: this.componentUserMention(this.model.user()),\n old: componentOld,\n new: componentNew,\n });\n }\n case 'chatAddRemoveUser': {\n if (this.parsedContent.add.length && this.parsedContent.remove.length) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.invited_kicked', {\n editorname: this.componentUserMention(this.model.user()),\n invitednames: this.componentUserMentionsByIds(this.parsedContent.add),\n kickednames: this.componentUserMentionsByIds(this.parsedContent.remove),\n });\n } else if (this.parsedContent.add.length) {\n if (this.parsedContent.add[0] == this.model.user().id()) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.self.entered', {\n username: this.componentUserMention(this.model.user()),\n });\n } else {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.invited', {\n editorname: this.componentUserMention(this.model.user()),\n usernames: this.componentUserMentionsByIds(this.parsedContent.add),\n });\n }\n } else if (this.parsedContent.remove.length) {\n if (this.parsedContent.remove[0] == this.model.user().id()) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.self.leaved', {\n username: this.componentUserMention(this.model.user()),\n });\n } else {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.kicked', {\n editorname: this.componentUserMention(this.model.user()),\n usernames: this.componentUserMentionsByIds(this.parsedContent.remove),\n });\n }\n }\n }\n }\n }\n\n content() {\n return (\n \n );\n }\n}\n","import Component from 'flarum/Component';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport ChatHeader from './ChatHeader';\nimport ChatList from './ChatList';\nimport ChatPage from './ChatPage';\nimport ChatViewport from './ChatViewport';\n\nexport default class ChatFrame extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n document.addEventListener('mousedown', this.chatMoveListener.bind(this, 'mousedown'));\n document.addEventListener('mouseup', this.chatMoveListener.bind(this, 'mouseup'));\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n }\n\n calcHeight() {\n if (!app.chat.getFrameState('beingShown')) {\n return '30px';\n } else if (app.screen() !== 'phone') {\n return app.chat.getFrameState('transform').y + 'px';\n } else {\n return '70vh';\n }\n }\n\n view(vnode) {\n if (app.current.matches(ChatPage)) return;\n\n const style = { right: app.chat.getFrameState('transform').x + 'px', height: this.calcHeight() };\n\n return (\n \n
\n
\n\n
\n false} onmousedown={this.chatHeaderOnMouseDown.bind(this)} inFrame={true}> \n {app.chat.chatsLoading ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n }\n\n chatHeaderOnMouseDown(e) {\n if (e.button !== 0) return;\n\n var path = e.path || (e.composedPath && e.composedPath());\n if (path) {\n for (let i = 0, el; i < path.length; i++) {\n el = path[i];\n if (el.classList && el.classList.contains('icon')) return;\n }\n }\n\n if (!this.chatMoveStart(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n chatMoveListener(event, e) {\n switch (event) {\n case 'mouseup': {\n if (this.chatMoving) this.chatMoveEnd(e);\n break;\n }\n }\n }\n\n chatMoveStart(e) {\n if (!app.chat.getFrameState('beingShown')) return;\n this.chatMoving = true;\n this.mouseMoveEvent = this.chatMoveProcess.bind(this);\n this.moveLast = { x: e.clientX, y: e.clientY };\n\n document.addEventListener('mousemove', this.mouseMoveEvent);\n document.body.classList.add('moving');\n\n return false;\n }\n\n chatMoveEnd(e) {\n this.chatMoving = false;\n document.removeEventListener('mousemove', this.mouseMoveEvent);\n document.body.classList.remove('moving');\n\n if (!app.current.matches(ChatPage)) {\n app.chat.saveFrameState('transform', { x: parseInt(this.element.style.right), y: this.element.offsetHeight || 400 });\n }\n }\n\n chatMoveProcess(e) {\n let move = { x: e.clientX - this.moveLast.x, y: e.clientY - this.moveLast.y };\n let right = parseInt(this.element.style.right) || 0;\n let nextPos = { x: right - move.x, y: this.element.offsetHeight - move.y };\n\n if ((nextPos.x < window.innerWidth - this.element.querySelector('#chat').offsetWidth && move.x < 0) || (nextPos.x > 0 && move.x > 0))\n this.element.style.right = nextPos.x + 'px';\n\n if (this.element.querySelector('.ChatHeader').clientHeight < nextPos.y && nextPos.y < window.innerHeight - 100) {\n this.element.style.height = nextPos.y + 'px';\n }\n\n this.moveLast = { x: e.clientX, y: e.clientY };\n }\n}\n","import Component from 'flarum/Component';\nimport Link from 'flarum/components/Link';\nimport ItemList from 'flarum/utils/ItemList';\n\nimport ChatEditModal from './ChatEditModal';\n\nexport default class ChatHeader extends Component {\n view(vnode) {\n const attrs = {};\n\n if (this.attrs.ondragstart) attrs.ondragstart = this.attrs.ondragstart;\n if (this.attrs.ondragstart) attrs.onmousedown = this.attrs.onmousedown;\n\n return (\n \n {this.attrs.showChatListStream ? (\n
{\n this.attrs.showChatListStream(!this.attrs.showChatListStream());\n e.stopPropagation();\n }}\n >\n \n
\n ) : (\n ''\n )}\n
\n {app.chat.getCurrentChat()\n ? [\n app.chat.getCurrentChat().icon() ? (\n \n ) : null,\n app.chat.getCurrentChat().title(),\n ]\n : app.translator.trans('xelson-chat.forum.toolbar.title')}\n \n {!app.chat.getCurrentChat() || !app.session.user ? null : (\n
app.modal.show(ChatEditModal, { model: app.chat.getCurrentChat() })}\n >\n \n
\n )}\n
{this.windowButtonItems().toArray()}
\n
\n );\n }\n\n windowButtonItems() {\n const items = new ItemList();\n\n items.add(\n 'sound',\n \n \n
\n );\n\n items.add(\n 'notifications',\n \n \n
\n );\n\n if (this.attrs.inFrame) {\n items.add(\n 'minimize',\n \n \n
\n );\n }\n\n /*\n if (this.attrs.inFrame && app.screen() === 'phone') {\n items.add(\n 'fullscreen',\n \n \n \n );\n }\n */\n\n return items;\n }\n\n toggleChat(e) {\n const showing = !app.chat.getFrameState('beingShown');\n\n app.chat.saveFrameState('beingShown', showing);\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n toggleSound(e) {\n app.chat.saveFrameState('isMuted', !app.chat.getFrameState('isMuted'));\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n toggleNotifications(e) {\n app.chat.saveFrameState('notify', !app.chat.getFrameState('notify'));\n if ('Notification' in window && app.chat.getFrameState('notify')) Notification.requestPermission();\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport ChatEditModal from './ChatEditModal';\nimport {throttle} from 'flarum/utils/throttleDebounce';\n\nexport default class ChatInput extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n this.state = this.attrs.state;\n\n app.chat.input = this;\n\n this.messageCharLimit = app.forum.attribute('xelson-chat.settings.charlimit') ?? 512;\n\n this.updatePlaceholder();\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n let inputState = this.state.input;\n let input = this.$('#chat-input')[0];\n input.lineHeight = parseInt(window.getComputedStyle(input).getPropertyValue('line-height'));\n inputState.element = input;\n\n if(inputState.content().length) {\n this.inputProcess({target: input});\n }\n\n this.updateLimit();\n }\n\n onbeforeupdate(vnode, old) {\n super.onbeforeupdate(vnode, old);\n\n if (this.model !== this.attrs.model) {\n this.model = this.attrs.model;\n this.state = this.attrs.state;\n }\n this.updatePlaceholder();\n }\n\n updatePlaceholder() {\n if (!app.session.user) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.unauthenticated');\n else if (!app.chat.getPermissions().post) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.chatdenied');\n else if (this.model.removed_at()) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.removed');\n else this.inputPlaceholder = app.translator.trans('xelson-chat.forum.chat.placeholder');\n }\n\n view() {\n return (\n \n );\n }\n\n updateLimit() {\n const limiter = this.element.querySelector('#chat-limiter');\n if (!limiter) return;\n\n let charsTyped = this.messageCharLimit - (this.state.input.messageLength || 0);\n limiter.innerText = charsTyped + '/' + this.messageCharLimit;\n limiter.className = charsTyped < 100 ? 'reaching-limit' : '';\n }\n\n saveDraft(text = this.state.input.content())\n {\n (this.state.input.lastDraft != text) && throttle(300, () => {\n this.state.setChatStorageValue('draft', text);\n })();\n this.state.input.lastDraft = text;\n }\n\n inputSaveDraft(e) {\n if (e) e.redraw = false;\n\n let input = e.target;\n this.saveDraft(input.value.trim());\n }\n\n resizeInput()\n {\n let input = this.state.input.element;\n\n input.rows = 1;\n this.state.input.rows = Math.min(input.scrollHeight / input.lineHeight, app.screen() === 'phone' ? 2 : 5);\n input.rows = this.state.input.rows;\n }\n\n inputProcess(e) {\n if (e) e.redraw = false;\n\n let input = e.target;\n this.state.input.content(input.value);\n let inputValue = input.value.trim();\n this.state.input.messageLength = inputValue.length;\n this.updateLimit();\n\n this.resizeInput();\n\n if (this.state.input.messageLength) {\n if (!this.state.input.writingPreview && !this.state.messageEditing) this.inputPreviewStart(inputValue);\n } else {\n if (this.state.input.writingPreview && !inputValue.length) this.inputPreviewEnd();\n }\n\n if (this.state.messageEditing) this.state.messageEditing.content = inputValue;\n else if (this.state.input.writingPreview) this.state.input.previewModel.content = inputValue;\n\n if (this.attrs.oninput) this.attrs.oninput(e);\n }\n\n inputPressEnter(e) {\n e.redraw = false;\n if (e.keyCode == 13 && !e.shiftKey) {\n this.state.messageSend();\n return false;\n }\n return true;\n }\n\n inputPressButton() {\n this.state.messageSend();\n }\n\n inputPreviewStart(content) {\n if (!this.state.input.writingPreview) {\n this.state.input.writingPreview = true;\n\n this.state.input.previewModel = app.store.createRecord('chatmessages');\n this.state.input.previewModel.pushData({\n id: 0,\n attributes: { message: ' ', created_at: 0 },\n relationships: { user: app.session.user, chat: this.model },\n });\n Object.assign(this.state.input.previewModel, { isEditing: true, isNeedToFlash: true, content });\n } else this.state.input.previewModel.isNeedToFlash = true;\n\n m.redraw();\n }\n\n inputPreviewEnd() {\n this.state.input.writingPreview = false;\n\n m.redraw();\n }\n}\n","import Component from 'flarum/Component';\nimport ChatCreateModal from './ChatCreateModal';\nimport ChatPreview from './ChatPreview';\n\nexport default class ChatFrame extends Component {\n view(vnode) {\n const classes = ['ChatList'];\n if (app.chat.getFrameState('beingShownChatsList') || this.attrs.inPage) classes.push('toggled');\n return (\n \n
\n
\n \n
\n {this.attrs.inPage ? (\n ''\n ) : (\n
\n \n
\n )}\n
\n
\n {app.chat.getChatsSortedByLastUpdate().map((model) => (\n
\n \n
\n ))}\n {app.session.user && app.chat.getPermissions().create.chat ? (\n
app.modal.show(ChatCreateModal)}>
\n ) : null}\n
\n
\n );\n }\n\n content() {\n return app.chat.getChatsSortedByLastUpdate().map((model) => (\n \n \n
\n ));\n }\n\n getChatsListPanel() {\n return document.querySelector('.ChatList');\n }\n\n getChatsList() {\n return document.querySelector('.ChatList .list');\n }\n\n toggleChatsList(e) {\n var chatLists = this.getChatsListPanel();\n var showing = true;\n\n if (chatLists.classList.contains('toggled')) {\n chatLists.classList.remove('toggled');\n showing = false;\n } else chatLists.classList.add('toggled');\n\n app.chat.saveFrameState('beingShownChatsList', showing);\n }\n}\n","import Component from 'flarum/Component';\nimport avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\nimport fullTime from 'flarum/helpers/fullTime';\nimport classList from 'flarum/utils/classList';\nimport humanTime from 'flarum/utils/humanTime';\nimport extractText from 'flarum/utils/extractText';\nimport ItemList from 'flarum/utils/ItemList';\nimport SubtreeRetainer from 'flarum/utils/SubtreeRetainer';\n\nimport Dropdown from 'flarum/components/Dropdown';\nimport Button from 'flarum/components/Button';\nimport Separator from 'flarum/components/Separator';\nimport Link from 'flarum/components/Link';\n\nexport default class ChatMessage extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.labels = [];\n this.model = this.attrs.model;\n if (!this.model.content) this.model.content = this.model.message();\n\n this.initLabels();\n\n this.subtree = new SubtreeRetainer(\n () => this.model.freshness,\n () => this.model.user().freshness,\n () => app.chat.getCurrentChat(),\n\n // Reactive attrs\n () => this.model.content,\n () => this.model.isDeletedForever,\n () => this.model.isTimedOut,\n () => this.model.isEditing,\n () => this.model.isNeedToFlash\n );\n }\n\n modelEvent(name) {\n const viewportState = app.chat.getViewportState(this.model.chat());\n viewportState.onChatMessageClicked(name, this.model);\n app.chat.onChatMessageClicked(name, this.model);\n }\n\n onbeforeupdate(vnode) {\n super.onbeforeupdate(vnode);\n this.model = this.attrs.model;\n\n return this.subtree.needsRebuild();\n }\n\n content() {\n return (\n \n {this.model.user() ? (\n
\n
{avatar(this.model.user(), { className: 'avatar' })} \n \n ) : (\n
\n {avatar(this.model.user(), { className: 'avatar' })} \n
\n )}\n
\n
\n
\n {this.model.is_censored() ? (\n
\n {this.model.content}\n
\n ) : (\n
\n {this.model.content}\n
\n )}\n
\n
\n
\n );\n }\n\n view(vnode) {\n return (\n \n {this.model ? this.content() : null}\n
\n );\n }\n\n initLabels() {\n this.labelBind(\n () => this.model.edited_at(),\n () => (\n \n \n
\n )\n );\n\n this.labelBind(\n () => this.model.deleted_by(),\n () => (\n \n {' '}\n \n {`(${app.translator.trans('xelson-chat.forum.chat.message.deleted' + (this.model.isDeletedForever ? '_forever' : ''))}`}{' '}\n {username(this.model.deleted_by())}\n {')'}\n \n
\n )\n );\n\n this.labelBind(\n () => this.model.isTimedOut,\n () => (\n \n \n
\n )\n );\n }\n\n labelBind(condition, component) {\n this.labels.push({ condition: condition, component: component });\n }\n\n editDropDown() {\n const items = new ItemList();\n\n if (app.chat.getPermissions().edit && this.model.user() && this.model.user() == app.session.user) {\n items.add(\n 'dropdownEditStart',\n \n {app.translator.trans('core.forum.post_controls.edit_button')}\n \n );\n }\n\n items.add('separator', );\n\n if (this.model.chat().role() || (app.chat.getPermissions().delete && this.model.user() == app.session.user)) {\n if (this.model.deleted_by()) {\n items.add(\n 'dropdownRestore',\n \n {app.translator.trans('core.forum.post_controls.restore_button')}\n \n );\n } else {\n items.add(\n 'dropdownHide',\n \n {app.translator.trans('core.forum.post_controls.delete_button')}\n \n );\n }\n }\n\n if (this.model.chat().role() && (this.model.deleted_by() || app.chat.totalHidden() >= 3)) {\n items.add(\n 'dropdownDelete',\n \n {app.translator.trans('core.forum.post_controls.delete_forever_button')}\n \n );\n }\n\n return Object.keys(items.items).length <= 1 ? null : (\n \n \n {items.toArray()}\n \n
\n );\n }\n\n editDropDownTimedOut() {\n return (\n \n \n \n {app.translator.trans('xelson-chat.forum.chat.message.actions.hide')}\n \n \n {app.translator.trans('xelson-chat.forum.chat.message.actions.resend')}\n \n \n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n this.messageWrapper = vnode.dom;\n\n this.pollInterval = setInterval(() => {\n this.renderMessage();\n }, 100);\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n clearInterval(this.pollInterval);\n }\n\n onContentWrapperUpdated(vnode) {\n super.onupdate(vnode);\n this.renderMessage(vnode.dom);\n }\n\n onContentWrapperCreated(vnode) {\n super.oncreate(vnode);\n this.renderMessage(vnode.dom);\n }\n\n renderMessage() {\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(this.messageWrapper));\n this.model.isNeedToFlash = false;\n }\n\n if (this.model.content !== this.oldContent) {\n this.oldContent = this.model.content;\n app.chat.renderChatMessage(this.model, this.model.content);\n }\n }\n\n isVisible() {\n if (this.model.chat() != app.chat.getCurrentChat()) return false;\n\n if (this.model.isDeletedForever) return false;\n\n if (this.model.deleted_by() && !(this.model.chat().role() || this.model.user() == app.session.user)) return false;\n\n return true;\n }\n}\n","import Modal from 'flarum/components/Modal';\nimport ChatSearchUser from './ChatSearchUser';\nimport Stream from 'flarum/utils/Stream';\nimport classList from 'flarum/utils/classList';\nimport { fa5IconsList } from '../resources';\nimport highlight from 'flarum/helpers/highlight';\n\nexport default class ChatModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n\n app.search.neonchat = { usersSelected: [] };\n this.usersSelected = app.search.neonchat.usersSelected;\n\n this.input = {\n title: Stream(''),\n color: Stream(''),\n icon: Stream(''),\n iconState: {\n matches: [],\n lastInput: null,\n },\n };\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n app.search.neonchat = null;\n }\n\n getInput() {\n return this.input;\n }\n\n setSelectedUsers(users) {\n app.search.neonchat.usersSelected = users;\n this.usersSelected = app.search.neonchat.usersSelected;\n }\n\n getSelectedUsers() {\n return this.usersSelected;\n }\n\n className() {\n return 'ChatModal Modal--small';\n }\n\n isChatExists() {\n return this.getSelectedUsers().length === 1 && app.chat.isExistsPMChat(app.session.user, this.getSelectedUsers()[0]);\n }\n\n alertText() {\n if (this.isChatExists()) return app.translator.trans('xelson-chat.forum.chat.list.add_modal.alerts.exists');\n\n return null;\n }\n\n componentAlert() {\n return !this.alertText() ? null : {this.alertText()}
;\n }\n\n componentFormUsersSelect(label = 'xelson-chat.forum.chat.list.add_modal.form.users') {\n return [{app.translator.trans(label)} , this.componentUsersSelect()];\n }\n\n userMentionContent(user) {\n return '@' + user.displayName();\n }\n\n userMentionClassname(user) {\n return 'deletable';\n }\n\n userMentionOnClick(event, user) {\n return this.getSelectedUsers().splice(this.getSelectedUsers().indexOf(user), 1);\n }\n\n componentUsersMentions() {\n return (\n \n {this.getSelectedUsers().map((u) => (\n
\n {this.userMentionContent(u)}\n
\n ))}\n
\n );\n }\n\n componentUsersSelect() {\n return [\n this.componentAlert(),\n this.componentUsersMentions(),\n \n \n
,\n ];\n }\n\n componentFormIcon(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ?
{options.desc} : null}\n
\n (this.inputIconHasFocus = true)}\n onclick={() => (this.inputIconHasFocus = true)}\n onkeypress={(e) => (this.inputIconHasFocus = !(e.keyCode == 13))}\n />\n \n \n \n {this.inputIconHasFocus ? this.dropdownIconMatches(this.input.icon()) : null}\n
\n
,\n ];\n }\n\n componentFormColor(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ?
{options.desc} : null}\n
\n \n \n
\n
,\n ];\n }\n\n dropdownIconMatches(search) {\n let inputIcon = this.input.icon();\n let iconState = this.input.iconState;\n\n if (inputIcon !== iconState.lastInput) {\n iconState.matches = fa5IconsList.filter((icon) => icon.includes(inputIcon));\n if (iconState.matches.length > 5) iconState.matches = iconState.matches.sort((a, b) => 0.5 - Math.random());\n\n iconState.lastInput = inputIcon;\n }\n\n return inputIcon.length && iconState.matches.length > 0 && !(iconState.matches.length == 1 && iconState.matches[0] === inputIcon) ? (\n \n Font Awesome 5 \n {iconState.matches.slice(-5).map((icon) => (\n this.input.icon(icon)}>\n \n \n \n {highlight(icon, inputIcon)} \n \n ))}\n \n ) : null;\n }\n\n formInputOnUpdate(vnode) {\n $('.Chat-FullColor').css({ color: this.input.color(), backgroundColor: this.input.color() });\n }\n\n componentFormInput(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ? {options.desc} : null}\n \n
,\n ];\n }\n}\n","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/components/IndexPage';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport listItems from 'flarum/helpers/listItems';\nimport Stream from 'flarum/utils/Stream';\nimport ChatHeader from './ChatHeader';\nimport ChatList from './ChatList';\nimport ChatViewport from './ChatViewport';\n\nexport default class ChatPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.bodyClass = 'App--chat';\n this.listOpen = Stream(false);\n }\n\n view() {\n const navItems = IndexPage.prototype.sidebarItems();\n\n if (navItems.has('forumStatisticsWidget')) navItems.remove('forumStatisticsWidget');\n\n return (\n \n
\n {listItems(navItems.toArray())} \n \n
\n {app.chat.chatsLoading ?
:
}\n {this.listOpen() ? (\n
\n \n
\n ) : (\n ''\n )}\n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.clickHandler = (e) => {\n const chatList = this.$('.ChatList')[0];\n\n if (this.listOpen() && !(chatList && chatList.contains(e.target))) {\n this.listOpen(false);\n m.redraw();\n }\n };\n\n $(window).on('click', this.clickHandler);\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n if (this.listOpen()) {\n this.element.querySelector('.ChatPage--list').style.height =\n document.documentElement.clientHeight - this.element.querySelector('.ChatPage--list').getBoundingClientRect().top + 'px';\n\n console.log(\n this.element.querySelector('.ChatPage--list'),\n this.element.querySelector('.ChatPage--list').style.height,\n document.documentElement.clientHeight - this.element.querySelector('.ChatPage--list').getBoundingClientRect().top\n );\n }\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n $(window).off('click', this.clickHandler);\n }\n}\n","import humanTime from 'flarum/utils/humanTime';\nimport Component from 'flarum/Component';\nimport classList from 'flarum/utils/classList';\nimport extractText from 'flarum/utils/extractText';\nimport SubtreeRetainer from 'flarum/utils/SubtreeRetainer';\n\nimport ChatAvatar from './ChatAvatar';\n\nexport default class ChatPreview extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n\n this.subtree = new SubtreeRetainer(\n () => this.model.freshness,\n () => app.chat.getCurrentChat(),\n\n // Reactive attrs\n () => this.model.isNeedToFlash\n );\n }\n\n onbeforeupdate(vnode) {\n super.onbeforeupdate(vnode);\n this.model = this.attrs.model;\n\n return this.subtree.needsRebuild();\n }\n\n view(vnode) {\n return (\n \n
{this.componentPreview()}
\n {this.model.unreaded() ?
{this.model.unreaded()}
: null}\n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(vnode.dom));\n this.model.isNeedToFlash = false;\n }\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(vnode.dom));\n this.model.isNeedToFlash = false;\n }\n }\n\n componentMessageTime() {\n let lastMessage = this.model.last_message();\n let time = new Date(lastMessage.created_at());\n if (Date.now() - time.getTime() < 60 * 60 * 12 * 1000) {\n let nl = (n) => (n < 10 ? '0' : '') + n;\n return nl(time.getHours()) + ':' + nl(time.getMinutes());\n }\n\n return humanTime(lastMessage.created_at());\n }\n\n componentPreview() {\n return [\n ,\n \n
\n {this.model.icon() ? : null}\n {this.model.title()}\n
\n {this.model.last_message() ? this.componentTextPreview() : this.componentTextEmpty()}\n
,\n this.model.last_message() ? (\n \n {(this.humanTime = this.componentMessageTime())}\n
\n ) : null,\n ];\n }\n\n componentPreviewChannel() {\n return [\n ,\n \n
\n {this.model.title()}\n
\n {this.componentTextPreview()}\n
,\n \n {(this.humanTime = this.componentMessageTime())}\n
,\n ];\n }\n\n formatTextPreview(text) {\n let type;\n if (text.startsWith('```')) {\n text = app.translator.trans('xelson-chat.forum.chat.message.type.code');\n type = 'media';\n } else if (text.startsWith('http://') || text.startsWith('https://')) {\n text = app.translator.trans('xelson-chat.forum.chat.message.type.url');\n type = 'media';\n }\n return { text, type };\n }\n\n componentTextPreview() {\n let lastMessage = this.model.last_message();\n if (lastMessage.type() != 0) {\n return (\n \n {app.translator.trans('xelson-chat.forum.chat.message.type.event')} \n
\n );\n }\n\n let formatResult = this.formatTextPreview(lastMessage.message());\n let senderName,\n users = this.model.users(),\n sender = lastMessage.user();\n if (app.session.user) {\n if (app.session.user == sender) senderName = `${app.translator.trans('xelson-chat.forum.chat.message.you')}: `;\n else if (users.length > 2 || this.model.type()) senderName = sender.displayName() + ': ';\n }\n\n return (\n \n {senderName} \n {formatResult.text} \n
\n );\n }\n\n componentTextEmpty() {\n return (\n \n {app.translator.trans('xelson-chat.forum.chat.list.preview.empty')} \n
\n );\n }\n}\n","import Search from 'flarum/components/Search';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport ItemList from 'flarum/utils/ItemList';\nimport classList from 'flarum/utils/classList';\nimport icon from 'flarum/helpers/icon';\nimport UsersSearchSource from './UsersSearchResults';\n\nexport default class ChatSearchUser extends Search {\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n sourceItems() {\n const items = new ItemList();\n this.state = this.attrs.state ?? {};\n if (app.forum.attribute('canSearchUsers')) items.add('users', new UsersSearchSource({ state: app.search.neonchat }));\n\n return items;\n }\n\n updateMaxHeight() {}\n\n view(vnode) {\n const currentSearch = this.state.getInitialSearch();\n\n if (!this.state.getValue()?.length) {\n this.state.setValue(currentSearch || '');\n }\n\n app.current.searching = () => this.state.getValue();\n\n if (!this.sources) {\n this.sources = this.sourceItems().toArray();\n }\n\n if (!this.sources.length) return
;\n\n return (\n \n
\n this.state.setValue(e.target.value)}\n onfocus={() => (this.hasFocus = true)}\n />\n {this.loadingSources ? (\n \n ) : currentSearch ? (\n \n {icon('fas fa-times-circle')}\n \n ) : (\n ''\n )}\n
\n {this.state.getValue() && this.hasFocus ? (\n
\n {this.sources.map((source) => source.view(this.state.getValue()))}\n \n ) : null}\n
\n );\n }\n}\n","import Component from 'flarum/Component';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\n\nimport ChatInput from './ChatInput';\nimport ChatMessage from './ChatMessage';\nimport ChatEventMessage from './ChatEventMessage';\nimport ChatWelcome from './ChatWelcome';\nimport Message from '../models/Message';\nimport timedRedraw from '../utils/timedRedraw';\nimport ChatPage from './ChatPage';\n\nexport default class ChatViewport extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.chatModel;\n if (this.model) {\n this.state = app.chat.getViewportState(this.model);\n }\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n this.loadChat();\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n // this.attrs is broken in onupdate hook\n const model = vnode.attrs.chatModel;\n\n if (model !== this.model) {\n this.model = model;\n if (this.model) {\n this.state = app.chat.getViewportState(this.model);\n this.loadChat();\n }\n }\n }\n\n loadChat() {\n const oldScroll = this.state.scroll.oldScroll;\n\n this.reloadMessages();\n m.redraw();\n\n setTimeout(() => {\n const element = this.element;\n\n this.getChatWrapper().scrollTop = element.scrollHeight - element.clientHeight - oldScroll;\n }, 200);\n }\n\n view(vnode) {\n if (this.model) {\n return (\n \n
\n {this.componentLoader(this.state.scroll.loading)}\n {this.componentsChatMessages(this.model).concat(\n this.state.input.writingPreview ? this.componentChatMessage(this.state.input.previewModel) : []\n )}\n
\n
{\n if (this.nearBottom() && !this.state.messageEditing) {\n this.scrollToBottom();\n }\n }}\n > \n {this.isFastScrollAvailable() ? this.componentScroller() : null}\n
\n );\n }\n\n return (\n \n ;\n
\n );\n }\n\n componentChatMessage(model) {\n return model.type() ? : ;\n }\n\n componentsChatMessages(chat) {\n return app.chat.getChatMessages().map((model) => this.componentChatMessage(model));\n }\n\n componentScroller() {\n return (\n \n \n
\n );\n }\n\n componentLoader(watch) {\n return watch ? (\n \n \n \n ) : null;\n }\n getChatWrapper() {\n return app.screen() === 'phone' && app.current.matches(ChatPage)\n ? document.documentElement\n : document.querySelector('.ChatViewport .wrapper');\n }\n\n isFastScrollAvailable() {\n let chatWrapper = this.getChatWrapper();\n return (\n (this.state.newPushedPosts ||\n this.model.unreaded() >= 30 ||\n (chatWrapper && chatWrapper.scrollHeight > 2000 && chatWrapper.scrollTop < chatWrapper.scrollHeight - 2000)) &&\n !this.nearBottom()\n );\n }\n\n fastScroll(e) {\n if (this.model.unreaded() >= 30) this.fastMessagesFetch(e);\n else {\n let chatWrapper = this.getChatWrapper();\n chatWrapper.scrollTop = Math.max(chatWrapper.scrollTop, chatWrapper.scrollHeight - 3000);\n this.scrollToBottom();\n }\n }\n\n fastMessagesFetch(e) {\n e.redraw = false;\n app.chat.chatmessages = [];\n\n app.chat.apiFetchChatMessages(this.model).then((r) => {\n this.scrollToBottom();\n timedRedraw(300);\n\n this.model.pushAttributes({ unreaded: 0 });\n let message = app.chat.getChatMessages((mdl) => mdl.chat() == this.model).slice(-1)[0];\n app.chat.apiReadChat(this.model, message);\n });\n }\n\n wrapperOnCreate(vnode) {\n super.oncreate(vnode);\n this.wrapperOnUpdate(vnode);\n\n (app.current.matches(ChatPage) ? window : vnode.dom).addEventListener(\n 'scroll',\n (this.boundScrollListener = this.wrapperOnScroll.bind(this)),\n { passive: true }\n );\n }\n\n wrapperOnBeforeUpdate(vnode, vnodeNew) {\n super.onbeforeupdate(vnode, vnodeNew);\n if (!this.state.autoScroll && this.nearBottom() && this.state.newPushedPosts) {\n this.scrollAfterUpdate = true;\n }\n }\n\n wrapperOnUpdate(vnode) {\n super.onupdate(vnode);\n let el = vnode.dom;\n if (this.model && this.state.scroll.autoScroll) {\n if (this.autoScrollTimeout) clearTimeout(this.autoScrollTimeout);\n this.autoScrollTimeout = setTimeout(this.scrollToBottom.bind(this, true), 100);\n }\n if (el.scrollTop <= 0) el.scrollTop = 1;\n this.checkUnreaded();\n\n if (this.scrollAfterUpdate) {\n this.scrollAfterUpdate = false;\n this.scrollToBottom();\n }\n }\n\n wrapperOnRemove(vnode) {\n super.onremove(vnode);\n vnode.dom.removeEventListener('scroll', this.boundScrollListener);\n }\n\n wrapperOnScroll(e) {\n const el = app.current.matches(ChatPage) ? document.documentElement : this.element;\n\n this.state.scroll.oldScroll = el.scrollHeight - el.clientHeight - el.scrollTop;\n\n this.checkUnreaded();\n\n if (this.lastFastScrollStatus != this.isFastScrollAvailable()) {\n this.lastFastScrollStatus = this.isFastScrollAvailable();\n m.redraw();\n }\n\n let currentHeight = el.scrollHeight;\n\n if (this.atBottom()) {\n this.state.newPushedPosts = false;\n }\n\n if (this.state.scroll.autoScroll || this.state.loading || this.scrolling) return;\n\n if (!this.state.messageEditing && el.scrollTop >= 0) {\n if (el.scrollTop <= 500) {\n let topMessage = app.chat.getChatMessages((model) => model.chat() == this.model)[0];\n if (topMessage && topMessage != this.model.first_message()) {\n app.chat.apiFetchChatMessages(this.model, topMessage.created_at().toISOString());\n }\n } else if (el.scrollTop + el.offsetHeight >= currentHeight - 500) {\n let bottomMessage = app.chat.getChatMessages((model) => model.chat() == this.model).slice(-1)[0];\n if (bottomMessage && bottomMessage != this.model.last_message()) {\n app.chat.apiFetchChatMessages(this.model, bottomMessage.created_at().toISOString());\n }\n }\n }\n }\n\n checkUnreaded() {\n let wrapper = this.getChatWrapper();\n if (wrapper && this.model.unreaded()) {\n let list = app.chat.getChatMessages((mdl) => mdl.chat() == this.model && mdl.created_at() >= this.model.readed_at() && !mdl.isReaded);\n\n for (const message of list) {\n let msg = document.querySelector(`.message-wrapper[data-id=\"${message.id()}\"`);\n if (msg && wrapper.scrollTop + wrapper.offsetHeight >= msg.offsetTop) {\n message.isReaded = true;\n\n if (this.state.scroll.autoScroll && app.chat.getCurrentChat() == this.model) {\n app.chat.apiReadChat(this.model, new Date());\n this.model.pushAttributes({ unreaded: 0 });\n } else {\n app.chat.apiReadChat(this.model, message);\n this.model.pushAttributes({ unreaded: this.model.unreaded() - 1 });\n }\n\n m.redraw();\n }\n }\n }\n }\n\n scrollToAnchor(anchor) {\n let element;\n if (anchor instanceof Message) element = $(`.message-wrapper[data-id=\"${anchor.id()}\"`)[0];\n else element = anchor;\n\n let chatWrapper = this.getChatWrapper();\n if (chatWrapper && element)\n $(chatWrapper)\n .stop()\n .animate({ scrollTop: element.offsetTop - element.offsetHeight }, 500);\n else setTimeout(scroll, 100);\n }\n\n scrollToBottom(force = false) {\n this.scrolling = true;\n let chatWrapper = this.getChatWrapper();\n if (chatWrapper) {\n const notAtBottom = !force && this.atBottom();\n const fewMessages =\n app.current.matches(ChatPage) &&\n document.querySelector('.ChatViewport .wrapper').scrollHeight + 200 < document.documentElement.clientHeight;\n if (notAtBottom || fewMessages) return;\n\n const time = this.pixelsFromBottom() < 80 ? 0 : 250;\n\n $(chatWrapper)\n .stop()\n .animate({ scrollTop: chatWrapper.scrollHeight }, time, 'swing', () => {\n this.state.scroll.autoScroll = false;\n this.scrolling = false;\n });\n }\n }\n\n reloadMessages() {\n if (!this.state.messagesFetched) {\n let query;\n if (this.model.unreaded()) {\n query = this.model.readed_at()?.toISOString() ?? new Date(0).toISOString();\n this.state.scroll.autoScroll = false;\n }\n\n app.chat.apiFetchChatMessages(this.model, query).then(() => {\n if (this.model.unreaded()) {\n let anchor = app.chat.getChatMessages((mdl) => mdl.chat() == this.model && mdl.created_at() > this.model.readed_at())[0];\n this.scrollToAnchor(anchor);\n } else this.state.scroll.autoScroll = true;\n\n m.redraw();\n });\n\n this.state.messagesFetched = true;\n }\n }\n\n nearBottom() {\n return this.pixelsFromBottom() <= 500;\n }\n\n atBottom() {\n return this.pixelsFromBottom() <= 5;\n }\n\n pixelsFromBottom() {\n const element = app.current.matches(ChatPage) ? document.documentElement : this.element;\n return Math.abs(element.scrollHeight - element.scrollTop - element.clientHeight);\n }\n}\n","import Component from 'flarum/Component';\n\nexport default class ChatWelcome extends Component {\n view(vnode) {\n return (\n \n
\n {app.chat.getChats().length ? (\n
\n
{app.translator.trans('xelson-chat.forum.chat.welcome.header')} \n {app.translator.trans('xelson-chat.forum.chat.welcome.subheader')} \n \n ) : null}\n
\n
\n );\n }\n}\n","import avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\nimport highlight from 'flarum/helpers/highlight';\n\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\n\nexport default class UsersSearchResults {\n constructor(props) {\n this.results = {};\n this.searching = false;\n\n if (!props.state.usersSelected) props.state.usersSelected = [];\n this.usersSelected = props.state.usersSelected;\n }\n\n search(query) {\n this.searching = true;\n\n return app.store\n .find('users', {\n filter: { q: query },\n page: { limit: 5 },\n })\n .then((results) => {\n this.results[query] = results;\n this.searching = false;\n m.redraw();\n });\n }\n\n isUserSelected(user) {\n return this.usersSelected.some((u) => user.id() == u.id());\n }\n\n userClick(user) {\n if (!this.isUserSelected(user)) this.usersSelected.push(user);\n else this.usersSelected.splice(this.usersSelected.indexOf(user), 1);\n }\n\n view(query) {\n query = query.toLowerCase();\n\n const usersList = (this.results[query] || [])\n .concat(\n app.store.all('users').filter((user) => [user.username(), user.displayName()].some((value) => value.toLowerCase().includes(query)))\n )\n .filter((user) => user !== app.session.user);\n\n let resultsFind = usersList\n .filter((e, i, arr) => arr.lastIndexOf(e) === i)\n .sort((a, b) => a.displayName().localeCompare(b.displayName()))\n .filter((user) => !this.isUserSelected(user));\n\n let moreText;\n if (resultsFind.length > 5) {\n moreText = (\n \n {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.more_results', { more_results: resultsFind.length - 5 })}\n
\n );\n\n resultsFind = resultsFind.slice(-5);\n }\n\n if (!resultsFind.length) {\n if (!this.searching)\n return {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.failed')} ;\n else LoadingIndicator.component({ size: 'tiny', className: 'Button Button--icon Button--link' });\n }\n\n const resultsSelected = Object.values(this.usersSelected).slice(-5);\n\n return [\n {app.translator.trans('core.forum.search.users_heading')} ,\n resultsFind.map((user) => {\n const name = username(user);\n const id = user.id();\n const children = [highlight(name.text, query)];\n\n return (\n \n \n {avatar(user)}\n {{ ...name, text: undefined, children }}\n \n \n );\n }),\n moreText,\n resultsSelected.length ? (\n {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.invited')} \n ) : null,\n resultsSelected.map((user) => {\n const name = username(user);\n const children = [highlight(name.text, query)];\n\n return (\n \n \n {avatar(user)}\n {{ ...name, text: undefined, children }}\n \n \n );\n }),\n ];\n }\n}\n","import { extend } from 'flarum/extend';\nimport Application from 'flarum/Application';\nimport ChatFrame from './components/ChatFrame';\n\nimport Chat from './models/Chat';\nimport Message from './models/Message';\nimport User from 'flarum/models/User';\nimport Model from 'flarum/Model';\nimport ChatState from './states/ChatState';\nimport addChatPage from './addChatPage';\n\nconst chat = document.createElement('div');\nchat.setAttribute('id', 'chat');\n\ndocument.body.append(chat);\n\napp.initializers.add('xelson-chat', (app) => {\n app.store.models.chats = Chat;\n app.store.models.chatmessages = Message;\n\n function pivot(name, id, attr, transform) {\n pivot.hasOne = function (name, id, attr) {\n return function () {\n const relationship = this.data.attributes[name] && this.data.attributes[name][id] && this.data.attributes[name][id][attr];\n if (relationship) return app.store.getById(relationship.data.type, relationship.data.id);\n };\n };\n\n return function () {\n const value = this.data.attributes[name] && this.data.attributes[name][id] && this.data.attributes[name][id][attr];\n return transform ? transform(value) : value;\n };\n }\n\n Object.assign(User.prototype, {\n chat_pivot(chat_id) {\n return {\n role: pivot('chat_pivot', chat_id, 'role').bind(this),\n removed_by: pivot('chat_pivot', chat_id, 'removed_by').bind(this),\n readed_at: pivot('chat_pivot', chat_id, 'readed_at', Model.transformDate).bind(this),\n removed_at: pivot('chat_pivot', chat_id, 'removed_at', Model.transformDate).bind(this),\n joined_at: pivot('chat_pivot', chat_id, 'joined_at', Model.transformDate).bind(this),\n };\n },\n });\n\n extend(Application.prototype, 'mount', function () {\n if (!app.forum.attribute('xelson-chat.permissions.enabled')) return;\n\n app.chat = new ChatState();\n\n m.mount(document.getElementById('chat'), ChatFrame);\n\n if ('Notification' in window && app.chat.getFrameState('notify')) Notification.requestPermission();\n\n if (!app.pusher) {\n app.alerts.show(\n { type: 'error' },\n app.translator.trans('xelson-chat.forum.pusher_not_found')\n );\n }\n\n app.chat.apiFetchChats();\n });\n\n //addChatPage();\n});\n","import Model from 'flarum/Model';\nimport computed from 'flarum/utils/computed';\n\nexport default class Chat extends Model {}\n\nObject.assign(Chat.prototype, {\n _title: Model.attribute('title'),\n _color: Model.attribute('color'),\n type: Model.attribute('type'),\n created_at: Model.attribute('created_at', Model.transformDate),\n creator: Model.hasOne('creator'),\n users: Model.hasMany('users'),\n first_message: Model.hasOne('first_message'),\n last_message: Model.hasOne('last_message'),\n icon: Model.attribute('icon'),\n\n role: Model.attribute('role'),\n unreaded: Model.attribute('unreaded', (v) => Math.max(v, 0)),\n readed_at: Model.attribute('readed_at', Model.transformDate),\n removed_at: Model.attribute('removed_at', Model.transformDate),\n joined_at: Model.attribute('joined_at', Model.transformDate),\n removed_by: Model.attribute('removed_by'),\n\n pm_user: computed('freshness', function (updated) {\n return this.getPMUser();\n }),\n\n title: computed('pm_user', '_title', function (pm_user, _title) {\n return pm_user ? pm_user.displayName() : _title;\n }),\n\n color: computed('pm_user', '_color', function (pm_user, _color) {\n return pm_user ? pm_user.color() : _color;\n }),\n\n avatarUrl: computed('pm_user', function (pm_user) {\n return pm_user ? pm_user.avatarUrl() : null;\n }),\n\n textColor: computed('color', function (color) {\n return this.pickTextColorBasedOnBgColorSimple(color, '#FFF', '#000');\n }),\n\n matches(q) {\n return (\n this.title().toLowerCase().includes(q) ||\n this.users().some((user) => {\n return user.displayName().toLowerCase().includes(q);\n })\n );\n },\n\n getPMUser() {\n let users = this.users();\n if (app.session.user && this.type() == 0 && users.length && users.length < 3) {\n for (const user of users) {\n if (user && user != app.session.user) return user;\n }\n }\n return null;\n },\n\n pickTextColorBasedOnBgColorSimple(bgColor, lightColor, darkColor) {\n var color = bgColor.charAt(0) === '#' ? bgColor.substring(1, 7) : bgColor;\n var r = parseInt(color.substring(0, 2), 16);\n var g = parseInt(color.substring(2, 4), 16);\n var b = parseInt(color.substring(4, 6), 16);\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? darkColor : lightColor;\n },\n});\n","import Model from 'flarum/Model';\n\nexport default class Message extends Model {}\n\nObject.assign(Message.prototype, {\n message: Model.attribute('message'),\n user: Model.hasOne('user'),\n deleted_by: Model.hasOne('deleted_by'),\n chat: Model.hasOne('chat'),\n created_at: Model.attribute('created_at', Model.transformDate),\n edited_at: Model.attribute('edited_at', Model.transformDate),\n type: Model.attribute('type'),\n is_readed: Model.attribute('is_readed'),\n ip_address: Model.attribute('ip_address'),\n is_censored: Model.attribute('is_censored'),\n});\n","export const base64AudioNotificationRef =\n 'data:audio/ogg;base64,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';\n\nexport const base64AudioNotification =\n 'data:audio/ogg;base64,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';\n\nexport const base64PlaceholderAvatarImage =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPZSURBVHhe7Zs9aNVQGIZvioODQwdHCxUqdHBQtNihg4NLQdCigg6CoKKiNS4dnKRDcXBpEaHSggWFLg4WBBcHBwdLCzo4FBQs2NHBoYODcH2fnOQ2iUnvT27uvcnpA29Ozh3afG++85OTE6darVZyxXEP6XhSOiUNS4NSv1+G2ZR+++WGtCqtV6pzWypzIx8DHHdUx3PSRWmInzLwXXotrciMT94vbaR9Bjgud/WadEviTucBmfFcWpIZZEtmshtgAn8guRLnnYDg56TZrEZkM8Bxb+j4WDro1TvPL+mhTFg01eZpzQDHpV0vSKe9evf5IN2UEfQXTdHnl43juJd1XJN6JXjgWtb8a2uKxjPAcffp+ESivfcys9KUsuGvqe5OYwaY4JclhrUiwLB5pRET6htQvOAD3kiX6pmwex9Q3ODhvLTsx5BKvU6QNl/E4AO4dmJIJb0JmB6Vu18GrqopvPLPIyQbYMZ5hrpOzezyZls6njRPSGsCTHLKEjwckF6Y0yj/G2Cmt700yWkXY4rtnn9eI9oEzIPNN6lbc/u84dnhiJpC7QEqngHM8soaPBBbZCa7kwHm7v+QytT2k+DuHw6yIJwBLGaUPXggxtvmNGoAKzm2cN0vfQPMGl5ey1i9yJBiHuMkyAAWMG3jAofAgCLP91uFhyWNApX7rNv/pGIhA2QALy1sZRQDeGNjKycwwKbeP84wBsTf0dnEIAbYMPtLo38vA/wTa9kzwC+tBQPYkWErmxiQ6f16wdneywAdmn6nXiI2MIDdWLayigHr5txK1vsq1Tn6ABv7gU1iJwPgrV/ahBdzYMCKX9qEF3P4xQjLYiyP2cCW0n+AkyAD4Jlf2kAt1rAB85INs8I/ErF67Bhg3pUtmUqpmQ/eC0I4A2BaKnMWEBsx1ogaYJyZMZVSMhO++xDPAGCnZRlnh18kYouQtkmKpfLP0n6vXnzo+EZ097+a6g5JGUBT4MOESVMpBZNJwUOyAWD24Le8D7+HWPRjSSTdAMMdiY3HRYX5PjGkktwHhHFc9ti9k7wNBQXiozSuu88myVTqZQBNgT8wLhXpiZFrrRs81DcAzB+akIrQJ3CNE40ED/WbQByzk/Sp1GtDJEMdvX1TN6l5A8Bxj+r4Ujrm1bsPkxx2hCcOdbvRWBOIY/7RiDQldfPZgf/NNSROchqhtQwIY3aYPpLYfNipZhE80k4r8Ew3ILsBAcYITLgr5bWyxIfULGZEHmmz0D4DwjjuGR3Ze3hWyrr/gBVrhjU+nn7v/dJG8jEgjONiQPzzeSZXcWMIlKGLMvz5fI5L9pXKP+lVHvxHrr8zAAAAAElFTkSuQmCC';\n\nexport const fa5IconsList = [ 'fas fa-ad','fas fa-address-book','fas fa-address-card','fas fa-adjust','fas fa-air-freshener','fas fa-align-center','fas fa-align-justify','fas fa-align-left','fas fa-align-right','fas fa-allergies','fas fa-ambulance','fas fa-american-sign-language-interpreting','fas fa-anchor','fas fa-angle-double-down','fas fa-angle-double-left','fas fa-angle-double-right','fas fa-angle-double-up','fas fa-angle-down','fas fa-angle-left','fas fa-angle-right','fas fa-angle-up','fas fa-angry','fas fa-ankh','fas fa-apple-alt','fas fa-archive','fas fa-archway','fas fa-arrow-alt-circle-down','fas fa-arrow-alt-circle-left','fas fa-arrow-alt-circle-right','fas fa-arrow-alt-circle-up','fas fa-arrow-circle-down','fas fa-arrow-circle-left','fas fa-arrow-circle-right','fas fa-arrow-circle-up','fas fa-arrow-down','fas fa-arrow-left','fas fa-arrow-right','fas fa-arrow-up','fas fa-arrows-alt','fas fa-arrows-alt-h','fas fa-arrows-alt-v','fas fa-assistive-listening-systems','fas fa-asterisk','fas fa-at','fas fa-atlas','fas fa-atom','fas fa-audio-description','fas fa-award','fas fa-baby','fas fa-baby-carriage','fas fa-backspace','fas fa-backward','fas fa-bacon','fas fa-bahai','fas fa-balance-scale','fas fa-balance-scale-left','fas fa-balance-scale-right','fas fa-ban','fas fa-band-aid','fas fa-barcode','fas fa-bars','fas fa-baseball-ball','fas fa-basketball-ball','fas fa-bath','fas fa-battery-empty','fas fa-battery-full','fas fa-battery-half','fas fa-battery-quarter','fas fa-battery-three-quarters','fas fa-bed','fas fa-beer','fas fa-bell','fas fa-bell-slash','fas fa-bezier-curve','fas fa-bible','fas fa-bicycle','fas fa-biking','fas fa-binoculars','fas fa-biohazard','fas fa-birthday-cake','fas fa-blender','fas fa-blender-phone','fas fa-blind','fas fa-blog','fas fa-bold','fas fa-bolt','fas fa-bomb','fas fa-bone','fas fa-bong','fas fa-book','fas fa-book-dead','fas fa-book-medical','fas fa-book-open','fas fa-book-reader','fas fa-bookmark','fas fa-border-all','fas fa-border-none','fas fa-border-style','fas fa-bowling-ball','fas fa-box','fas fa-box-open','fas fa-boxes','fas fa-braille','fas fa-brain','fas fa-bread-slice','fas fa-briefcase','fas fa-briefcase-medical','fas fa-broadcast-tower','fas fa-broom','fas fa-brush','fas fa-bug','fas fa-building','fas fa-bullhorn','fas fa-bullseye','fas fa-burn','fas fa-bus','fas fa-bus-alt','fas fa-business-time','fas fa-calculator','fas fa-calendar','fas fa-calendar-alt','fas fa-calendar-check','fas fa-calendar-day','fas fa-calendar-minus','fas fa-calendar-plus','fas fa-calendar-times','fas fa-calendar-week','fas fa-camera','fas fa-camera-retro','fas fa-campground','fas fa-candy-cane','fas fa-cannabis','fas fa-capsules','fas fa-car','fas fa-car-alt','fas fa-car-battery','fas fa-car-crash','fas fa-car-side','fas fa-caravan','fas fa-caret-down','fas fa-caret-left','fas fa-caret-right','fas fa-caret-square-down','fas fa-caret-square-left','fas fa-caret-square-right','fas fa-caret-square-up','fas fa-caret-up','fas fa-carrot','fas fa-cart-arrow-down','fas fa-cart-plus','fas fa-cash-register','fas fa-cat','fas fa-certificate','fas fa-chair','fas fa-chalkboard','fas fa-chalkboard-teacher','fas fa-charging-station','fas fa-chart-area','fas fa-chart-bar','fas fa-chart-line','fas fa-chart-pie','fas fa-check','fas fa-check-circle','fas fa-check-double','fas fa-check-square','fas fa-cheese','fas fa-chess','fas fa-chess-bishop','fas fa-chess-board','fas fa-chess-king','fas fa-chess-knight','fas fa-chess-pawn','fas fa-chess-queen','fas fa-chess-rook','fas fa-chevron-circle-down','fas fa-chevron-circle-left','fas fa-chevron-circle-right','fas fa-chevron-circle-up','fas fa-chevron-down','fas fa-chevron-left','fas fa-chevron-right','fas fa-chevron-up','fas fa-child','fas fa-church','fas fa-circle','fas fa-circle-notch','fas fa-city','fas fa-clinic-medical','fas fa-clipboard','fas fa-clipboard-check','fas fa-clipboard-list','fas fa-clock','fas fa-clone','fas fa-closed-captioning','fas fa-cloud','fas fa-cloud-download-alt','fas fa-cloud-meatball','fas fa-cloud-moon','fas fa-cloud-moon-rain','fas fa-cloud-rain','fas fa-cloud-showers-heavy','fas fa-cloud-sun','fas fa-cloud-sun-rain','fas fa-cloud-upload-alt','fas fa-cocktail','fas fa-code','fas fa-code-branch','fas fa-coffee','fas fa-cog','fas fa-cogs','fas fa-coins','fas fa-columns','fas fa-comment','fas fa-comment-alt','fas fa-comment-dollar','fas fa-comment-dots','fas fa-comment-medical','fas fa-comment-slash','fas fa-comments','fas fa-comments-dollar','fas fa-compact-disc','fas fa-compass','fas fa-compress','fas fa-compress-alt','fas fa-compress-arrows-alt','fas fa-concierge-bell','fas fa-cookie','fas fa-cookie-bite','fas fa-copy','fas fa-copyright','fas fa-couch','fas fa-credit-card','fas fa-crop','fas fa-crop-alt','fas fa-cross','fas fa-crosshairs','fas fa-crow','fas fa-crown','fas fa-crutch','fas fa-cube','fas fa-cubes','fas fa-cut','fas fa-database','fas fa-deaf','fas fa-democrat','fas fa-desktop','fas fa-dharmachakra','fas fa-diagnoses','fas fa-dice','fas fa-dice-d20','fas fa-dice-d6','fas fa-dice-five','fas fa-dice-four','fas fa-dice-one','fas fa-dice-six','fas fa-dice-three','fas fa-dice-two','fas fa-digital-tachograph','fas fa-directions','fas fa-divide','fas fa-dizzy','fas fa-dna','fas fa-dog','fas fa-dollar-sign','fas fa-dolly','fas fa-dolly-flatbed','fas fa-donate','fas fa-door-closed','fas fa-door-open','fas fa-dot-circle','fas fa-dove','fas fa-download','fas fa-drafting-compass','fas fa-dragon','fas fa-draw-polygon','fas fa-drum','fas fa-drum-steelpan','fas fa-drumstick-bite','fas fa-dumbbell','fas fa-dumpster','fas fa-dumpster-fire','fas fa-dungeon','fas fa-edit','fas fa-egg','fas fa-eject','fas fa-ellipsis-h','fas fa-ellipsis-v','fas fa-envelope','fas fa-envelope-open','fas fa-envelope-open-text','fas fa-envelope-square','fas fa-equals','fas fa-eraser','fas fa-ethernet','fas fa-euro-sign','fas fa-exchange-alt','fas fa-exclamation','fas fa-exclamation-circle','fas fa-exclamation-triangle','fas fa-expand','fas fa-expand-alt','fas fa-expand-arrows-alt','fas fa-external-link-alt','fas fa-external-link-square-alt','fas fa-eye','fas fa-eye-dropper','fas fa-eye-slash','fas fa-fan','fas fa-fast-backward','fas fa-fast-forward','fas fa-fax','fas fa-feather','fas fa-feather-alt','fas fa-female','fas fa-fighter-jet','fas fa-file','fas fa-file-alt','fas fa-file-archive','fas fa-file-audio','fas fa-file-code','fas fa-file-contract','fas fa-file-csv','fas fa-file-download','fas fa-file-excel','fas fa-file-export','fas fa-file-image','fas fa-file-import','fas fa-file-invoice','fas fa-file-invoice-dollar','fas fa-file-medical','fas fa-file-medical-alt','fas fa-file-pdf','fas fa-file-powerpoint','fas fa-file-prescription','fas fa-file-signature','fas fa-file-upload','fas fa-file-video','fas fa-file-word','fas fa-fill','fas fa-fill-drip','fas fa-film','fas fa-filter','fas fa-fingerprint','fas fa-fire','fas fa-fire-alt','fas fa-fire-extinguisher','fas fa-first-aid','fas fa-fish','fas fa-fist-raised','fas fa-flag','fas fa-flag-checkered','fas fa-flag-usa','fas fa-flask','fas fa-flushed','fas fa-folder','fas fa-folder-minus','fas fa-folder-open','fas fa-folder-plus','fas fa-font','fas fa-football-ball','fas fa-forward','fas fa-frog','fas fa-frown','fas fa-frown-open','fas fa-funnel-dollar','fas fa-futbol','fas fa-gamepad','fas fa-gas-pump','fas fa-gavel','fas fa-gem','fas fa-genderless','fas fa-ghost','fas fa-gift','fas fa-gifts','fas fa-glass-cheers','fas fa-glass-martini','fas fa-glass-martini-alt','fas fa-glass-whiskey','fas fa-glasses','fas fa-globe','fas fa-globe-africa','fas fa-globe-americas','fas fa-globe-asia','fas fa-globe-europe','fas fa-golf-ball','fas fa-gopuram','fas fa-graduation-cap','fas fa-greater-than','fas fa-greater-than-equal','fas fa-grimace','fas fa-grin','fas fa-grin-alt','fas fa-grin-beam','fas fa-grin-beam-sweat','fas fa-grin-hearts','fas fa-grin-squint','fas fa-grin-squint-tears','fas fa-grin-stars','fas fa-grin-tears','fas fa-grin-tongue','fas fa-grin-tongue-squint','fas fa-grin-tongue-wink','fas fa-grin-wink','fas fa-grip-horizontal','fas fa-grip-lines','fas fa-grip-lines-vertical','fas fa-grip-vertical','fas fa-guitar','fas fa-h-square','fas fa-hamburger','fas fa-hammer','fas fa-hamsa','fas fa-hand-holding','fas fa-hand-holding-heart','fas fa-hand-holding-usd','fas fa-hand-lizard','fas fa-hand-middle-finger','fas fa-hand-paper','fas fa-hand-peace','fas fa-hand-point-down','fas fa-hand-point-left','fas fa-hand-point-right','fas fa-hand-point-up','fas fa-hand-pointer','fas fa-hand-rock','fas fa-hand-scissors','fas fa-hand-spock','fas fa-hands','fas fa-hands-helping','fas fa-handshake','fas fa-hanukiah','fas fa-hard-hat','fas fa-hashtag','fas fa-hat-cowboy','fas fa-hat-cowboy-side','fas fa-hat-wizard','fas fa-hdd','fas fa-heading','fas fa-headphones','fas fa-headphones-alt','fas fa-headset','fas fa-heart','fas fa-heart-broken','fas fa-heartbeat','fas fa-helicopter','fas fa-highlighter','fas fa-hiking','fas fa-hippo','fas fa-history','fas fa-hockey-puck','fas fa-holly-berry','fas fa-home','fas fa-horse','fas fa-horse-head','fas fa-hospital','fas fa-hospital-alt','fas fa-hospital-symbol','fas fa-hot-tub','fas fa-hotdog','fas fa-hotel','fas fa-hourglass','fas fa-hourglass-end','fas fa-hourglass-half','fas fa-hourglass-start','fas fa-house-damage','fas fa-hryvnia','fas fa-i-cursor','fas fa-ice-cream','fas fa-icicles','fas fa-icons','fas fa-id-badge','fas fa-id-card','fas fa-id-card-alt','fas fa-igloo','fas fa-image','fas fa-images','fas fa-inbox','fas fa-indent','fas fa-industry','fas fa-infinity','fas fa-info','fas fa-info-circle','fas fa-italic','fas fa-jedi','fas fa-joint','fas fa-journal-whills','fas fa-kaaba','fas fa-key','fas fa-keyboard','fas fa-khanda','fas fa-kiss','fas fa-kiss-beam','fas fa-kiss-wink-heart','fas fa-kiwi-bird','fas fa-landmark','fas fa-language','fas fa-laptop','fas fa-laptop-code','fas fa-laptop-medical','fas fa-laugh','fas fa-laugh-beam','fas fa-laugh-squint','fas fa-laugh-wink','fas fa-layer-group','fas fa-leaf','fas fa-lemon','fas fa-less-than','fas fa-less-than-equal','fas fa-level-down-alt','fas fa-level-up-alt','fas fa-life-ring','fas fa-lightbulb','fas fa-link','fas fa-lira-sign','fas fa-list','fas fa-list-alt','fas fa-list-ol','fas fa-list-ul','fas fa-location-arrow','fas fa-lock','fas fa-lock-open','fas fa-long-arrow-alt-down','fas fa-long-arrow-alt-left','fas fa-long-arrow-alt-right','fas fa-long-arrow-alt-up','fas fa-low-vision','fas fa-luggage-cart','fas fa-magic','fas fa-magnet','fas fa-mail-bulk','fas fa-male','fas fa-map','fas fa-map-marked','fas fa-map-marked-alt','fas fa-map-marker','fas fa-map-marker-alt','fas fa-map-pin','fas fa-map-signs','fas fa-marker','fas fa-mars','fas fa-mars-double','fas fa-mars-stroke','fas fa-mars-stroke-h','fas fa-mars-stroke-v','fas fa-mask','fas fa-medal','fas fa-medkit','fas fa-meh','fas fa-meh-blank','fas fa-meh-rolling-eyes','fas fa-memory','fas fa-menorah','fas fa-mercury','fas fa-meteor','fas fa-microchip','fas fa-microphone','fas fa-microphone-alt','fas fa-microphone-alt-slash','fas fa-microphone-slash','fas fa-microscope','fas fa-minus','fas fa-minus-circle','fas fa-minus-square','fas fa-mitten','fas fa-mobile','fas fa-mobile-alt','fas fa-money-bill','fas fa-money-bill-alt','fas fa-money-bill-wave','fas fa-money-bill-wave-alt','fas fa-money-check','fas fa-money-check-alt','fas fa-monument','fas fa-moon','fas fa-mortar-pestle','fas fa-mosque','fas fa-motorcycle','fas fa-mountain','fas fa-mouse','fas fa-mouse-pointer','fas fa-mug-hot','fas fa-music','fas fa-network-wired','fas fa-neuter','fas fa-newspaper','fas fa-not-equal','fas fa-notes-medical','fas fa-object-group','fas fa-object-ungroup','fas fa-oil-can','fas fa-om','fas fa-otter','fas fa-outdent','fas fa-pager','fas fa-paint-brush','fas fa-paint-roller','fas fa-palette','fas fa-pallet','fas fa-paper-plane','fas fa-paperclip','fas fa-parachute-box','fas fa-paragraph','fas fa-parking','fas fa-passport','fas fa-pastafarianism','fas fa-paste','fas fa-pause','fas fa-pause-circle','fas fa-paw','fas fa-peace','fas fa-pen','fas fa-pen-alt','fas fa-pen-fancy','fas fa-pen-nib','fas fa-pen-square','fas fa-pencil-alt','fas fa-pencil-ruler','fas fa-people-carry','fas fa-pepper-hot','fas fa-percent','fas fa-percentage','fas fa-person-booth','fas fa-phone','fas fa-phone-alt','fas fa-phone-slash','fas fa-phone-square','fas fa-phone-square-alt','fas fa-phone-volume','fas fa-photo-video','fas fa-piggy-bank','fas fa-pills','fas fa-pizza-slice','fas fa-place-of-worship','fas fa-plane','fas fa-plane-arrival','fas fa-plane-departure','fas fa-play','fas fa-play-circle','fas fa-plug','fas fa-plus','fas fa-plus-circle','fas fa-plus-square','fas fa-podcast','fas fa-poll','fas fa-poll-h','fas fa-poo','fas fa-poo-storm','fas fa-poop','fas fa-portrait','fas fa-pound-sign','fas fa-power-off','fas fa-pray','fas fa-praying-hands','fas fa-prescription','fas fa-prescription-bottle','fas fa-prescription-bottle-alt','fas fa-print','fas fa-procedures','fas fa-project-diagram','fas fa-puzzle-piece','fas fa-qrcode','fas fa-question','fas fa-question-circle','fas fa-quidditch','fas fa-quote-left','fas fa-quote-right','fas fa-quran','fas fa-radiation','fas fa-radiation-alt','fas fa-rainbow','fas fa-random','fas fa-receipt','fas fa-record-vinyl','fas fa-recycle','fas fa-redo','fas fa-redo-alt','fas fa-registered','fas fa-remove-format','fas fa-reply','fas fa-reply-all','fas fa-republican','fas fa-restroom','fas fa-retweet','fas fa-ribbon','fas fa-ring','fas fa-road','fas fa-robot','fas fa-rocket','fas fa-route','fas fa-rss','fas fa-rss-square','fas fa-ruble-sign','fas fa-ruler','fas fa-ruler-combined','fas fa-ruler-horizontal','fas fa-ruler-vertical','fas fa-running','fas fa-rupee-sign','fas fa-sad-cry','fas fa-sad-tear','fas fa-satellite','fas fa-satellite-dish','fas fa-save','fas fa-school','fas fa-screwdriver','fas fa-scroll','fas fa-sd-card','fas fa-search','fas fa-search-dollar','fas fa-search-location','fas fa-search-minus','fas fa-search-plus','fas fa-seedling','fas fa-server','fas fa-shapes','fas fa-share','fas fa-share-alt','fas fa-share-alt-square','fas fa-share-square','fas fa-shekel-sign','fas fa-shield-alt','fas fa-ship','fas fa-shipping-fast','fas fa-shoe-prints','fas fa-shopping-bag','fas fa-shopping-basket','fas fa-shopping-cart','fas fa-shower','fas fa-shuttle-van','fas fa-sign','fas fa-sign-in-alt','fas fa-sign-language','fas fa-sign-out-alt','fas fa-signal','fas fa-signature','fas fa-sim-card','fas fa-sitemap','fas fa-skating','fas fa-skiing','fas fa-skiing-nordic','fas fa-skull','fas fa-skull-crossbones','fas fa-slash','fas fa-sleigh','fas fa-sliders-h','fas fa-smile','fas fa-smile-beam','fas fa-smile-wink','fas fa-smog','fas fa-smoking','fas fa-smoking-ban','fas fa-sms','fas fa-snowboarding','fas fa-snowflake','fas fa-snowman','fas fa-snowplow','fas fa-socks','fas fa-solar-panel','fas fa-sort','fas fa-sort-alpha-down','fas fa-sort-alpha-down-alt','fas fa-sort-alpha-up','fas fa-sort-alpha-up-alt','fas fa-sort-amount-down','fas fa-sort-amount-down-alt','fas fa-sort-amount-up','fas fa-sort-amount-up-alt','fas fa-sort-down','fas fa-sort-numeric-down','fas fa-sort-numeric-down-alt','fas fa-sort-numeric-up','fas fa-sort-numeric-up-alt','fas fa-sort-up','fas fa-spa','fas fa-space-shuttle','fas fa-spell-check','fas fa-spider','fas fa-spinner','fas fa-splotch','fas fa-spray-can','fas fa-square','fas fa-square-full','fas fa-square-root-alt','fas fa-stamp','fas fa-star','fas fa-star-and-crescent','fas fa-star-half','fas fa-star-half-alt','fas fa-star-of-david','fas fa-star-of-life','fas fa-step-backward','fas fa-step-forward','fas fa-stethoscope','fas fa-sticky-note','fas fa-stop','fas fa-stop-circle','fas fa-stopwatch','fas fa-store','fas fa-store-alt','fas fa-stream','fas fa-street-view','fas fa-strikethrough','fas fa-stroopwafel','fas fa-subscript','fas fa-subway','fas fa-suitcase','fas fa-suitcase-rolling','fas fa-sun','fas fa-superscript','fas fa-surprise','fas fa-swatchbook','fas fa-swimmer','fas fa-swimming-pool','fas fa-synagogue','fas fa-sync','fas fa-sync-alt','fas fa-syringe','fas fa-table','fas fa-table-tennis','fas fa-tablet','fas fa-tablet-alt','fas fa-tablets','fas fa-tachometer-alt','fas fa-tag','fas fa-tags','fas fa-tape','fas fa-tasks','fas fa-taxi','fas fa-teeth','fas fa-teeth-open','fas fa-temperature-high','fas fa-temperature-low','fas fa-tenge','fas fa-terminal','fas fa-text-height','fas fa-text-width','fas fa-th','fas fa-th-large','fas fa-th-list','fas fa-theater-masks','fas fa-thermometer','fas fa-thermometer-empty','fas fa-thermometer-full','fas fa-thermometer-half','fas fa-thermometer-quarter','fas fa-thermometer-three-quarters','fas fa-thumbs-down','fas fa-thumbs-up','fas fa-thumbtack','fas fa-ticket-alt','fas fa-times','fas fa-times-circle','fas fa-tint','fas fa-tint-slash','fas fa-tired','fas fa-toggle-off','fas fa-toggle-on','fas fa-toilet','fas fa-toilet-paper','fas fa-toolbox','fas fa-tools','fas fa-tooth','fas fa-torah','fas fa-torii-gate','fas fa-tractor','fas fa-trademark','fas fa-traffic-light','fas fa-trailer','fas fa-train','fas fa-tram','fas fa-transgender','fas fa-transgender-alt','fas fa-trash','fas fa-trash-alt','fas fa-trash-restore','fas fa-trash-restore-alt','fas fa-tree','fas fa-trophy','fas fa-truck','fas fa-truck-loading','fas fa-truck-monster','fas fa-truck-moving','fas fa-truck-pickup','fas fa-tshirt','fas fa-tty','fas fa-tv','fas fa-umbrella','fas fa-umbrella-beach','fas fa-underline','fas fa-undo','fas fa-undo-alt','fas fa-universal-access','fas fa-university','fas fa-unlink','fas fa-unlock','fas fa-unlock-alt','fas fa-upload','fas fa-user','fas fa-user-alt','fas fa-user-alt-slash','fas fa-user-astronaut','fas fa-user-check','fas fa-user-circle','fas fa-user-clock','fas fa-user-cog','fas fa-user-edit','fas fa-user-friends','fas fa-user-graduate','fas fa-user-injured','fas fa-user-lock','fas fa-user-md','fas fa-user-minus','fas fa-user-ninja','fas fa-user-nurse','fas fa-user-plus','fas fa-user-secret','fas fa-user-shield','fas fa-user-slash','fas fa-user-tag','fas fa-user-tie','fas fa-user-times','fas fa-users','fas fa-users-cog','fas fa-utensil-spoon','fas fa-utensils','fas fa-vector-square','fas fa-venus','fas fa-venus-double','fas fa-venus-mars','fas fa-vial','fas fa-vials','fas fa-video','fas fa-video-slash','fas fa-vihara','fas fa-voicemail','fas fa-volleyball-ball','fas fa-volume-down','fas fa-volume-mute','fas fa-volume-off','fas fa-volume-up','fas fa-vote-yea','fas fa-vr-cardboard','fas fa-walking','fas fa-wallet','fas fa-warehouse','fas fa-water','fas fa-wave-square','fas fa-weight','fas fa-weight-hanging','fas fa-wheelchair','fas fa-wifi','fas fa-wind','fas fa-window-close','fas fa-window-maximize','fas fa-window-minimize','fas fa-window-restore','fas fa-wine-bottle','fas fa-wine-glass','fas fa-wine-glass-alt','fas fa-won-sign','fas fa-wrench','fas fa-x-ray','fas fa-yen-sign','fas fa-yin-yang','far fa-address-book','far fa-address-card','far fa-angry','far fa-arrow-alt-circle-down','far fa-arrow-alt-circle-left','far fa-arrow-alt-circle-right','far fa-arrow-alt-circle-up','far fa-bell','far fa-bell-slash','far fa-bookmark','far fa-building','far fa-calendar','far fa-calendar-alt','far fa-calendar-check','far fa-calendar-minus','far fa-calendar-plus','far fa-calendar-times','far fa-caret-square-down','far fa-caret-square-left','far fa-caret-square-right','far fa-caret-square-up','far fa-chart-bar','far fa-check-circle','far fa-check-square','far fa-circle','far fa-clipboard','far fa-clock','far fa-clone','far fa-closed-captioning','far fa-comment','far fa-comment-alt','far fa-comment-dots','far fa-comments','far fa-compass','far fa-copy','far fa-copyright','far fa-credit-card','far fa-dizzy','far fa-dot-circle','far fa-edit','far fa-envelope','far fa-envelope-open','far fa-eye','far fa-eye-slash','far fa-file','far fa-file-alt','far fa-file-archive','far fa-file-audio','far fa-file-code','far fa-file-excel','far fa-file-image','far fa-file-pdf','far fa-file-powerpoint','far fa-file-video','far fa-file-word','far fa-flag','far fa-flushed','far fa-folder','far fa-folder-open','far fa-frown','far fa-frown-open','far fa-futbol','far fa-gem','far fa-grimace','far fa-grin','far fa-grin-alt','far fa-grin-beam','far fa-grin-beam-sweat','far fa-grin-hearts','far fa-grin-squint','far fa-grin-squint-tears','far fa-grin-stars','far fa-grin-tears','far fa-grin-tongue','far fa-grin-tongue-squint','far fa-grin-tongue-wink','far fa-grin-wink','far fa-hand-lizard','far fa-hand-paper','far fa-hand-peace','far fa-hand-point-down','far fa-hand-point-left','far fa-hand-point-right','far fa-hand-point-up','far fa-hand-pointer','far fa-hand-rock','far fa-hand-scissors','far fa-hand-spock','far fa-handshake','far fa-hdd','far fa-heart','far fa-hospital','far fa-hourglass','far fa-id-badge','far fa-id-card','far fa-image','far fa-images','far fa-keyboard','far fa-kiss','far fa-kiss-beam','far fa-kiss-wink-heart','far fa-laugh','far fa-laugh-beam','far fa-laugh-squint','far fa-laugh-wink','far fa-lemon','far fa-life-ring','far fa-lightbulb','far fa-list-alt','far fa-map','far fa-meh','far fa-meh-blank','far fa-meh-rolling-eyes','far fa-minus-square','far fa-money-bill-alt','far fa-moon','far fa-newspaper','far fa-object-group','far fa-object-ungroup','far fa-paper-plane','far fa-pause-circle','far fa-play-circle','far fa-plus-square','far fa-question-circle','far fa-registered','far fa-sad-cry','far fa-sad-tear','far fa-save','far fa-share-square','far fa-smile','far fa-smile-beam','far fa-smile-wink','far fa-snowflake','far fa-square','far fa-star','far fa-star-half','far fa-sticky-note','far fa-stop-circle','far fa-sun','far fa-surprise','far fa-thumbs-down','far fa-thumbs-up','far fa-times-circle','far fa-tired','far fa-trash-alt','far fa-user','far fa-user-circle','far fa-window-close','far fa-window-maximize','far fa-window-minimize','far fa-window-restore','fab fa-500px','fab fa-accessible-icon','fab fa-accusoft','fab fa-acquisitions-incorporated','fab fa-adn','fab fa-adobe','fab fa-adversal','fab fa-affiliatetheme','fab fa-airbnb','fab fa-algolia','fab fa-alipay','fab fa-amazon','fab fa-amazon-pay','fab fa-amilia','fab fa-android','fab fa-angellist','fab fa-angrycreative','fab fa-angular','fab fa-app-store','fab fa-app-store-ios','fab fa-apper','fab fa-apple','fab fa-apple-pay','fab fa-artstation','fab fa-asymmetrik','fab fa-atlassian','fab fa-audible','fab fa-autoprefixer','fab fa-avianex','fab fa-aviato','fab fa-aws','fab fa-bandcamp','fab fa-battle-net','fab fa-behance','fab fa-behance-square','fab fa-bimobject','fab fa-bitbucket','fab fa-bitcoin','fab fa-bity','fab fa-black-tie','fab fa-blackberry','fab fa-blogger','fab fa-blogger-b','fab fa-bluetooth','fab fa-bluetooth-b','fab fa-bootstrap','fab fa-btc','fab fa-buffer','fab fa-buromobelexperte','fab fa-buy-n-large','fab fa-buysellads','fab fa-canadian-maple-leaf','fab fa-cc-amazon-pay','fab fa-cc-amex','fab fa-cc-apple-pay','fab fa-cc-diners-club','fab fa-cc-discover','fab fa-cc-jcb','fab fa-cc-mastercard','fab fa-cc-paypal','fab fa-cc-stripe','fab fa-cc-visa','fab fa-centercode','fab fa-centos','fab fa-chrome','fab fa-chromecast','fab fa-cloudscale','fab fa-cloudsmith','fab fa-cloudversify','fab fa-codepen','fab fa-codiepie','fab fa-confluence','fab fa-connectdevelop','fab fa-contao','fab fa-cotton-bureau','fab fa-cpanel','fab fa-creative-commons','fab fa-creative-commons-by','fab fa-creative-commons-nc','fab fa-creative-commons-nc-eu','fab fa-creative-commons-nc-jp','fab fa-creative-commons-nd','fab fa-creative-commons-pd','fab fa-creative-commons-pd-alt','fab fa-creative-commons-remix','fab fa-creative-commons-sa','fab fa-creative-commons-sampling','fab fa-creative-commons-sampling-plus','fab fa-creative-commons-share','fab fa-creative-commons-zero','fab fa-critical-role','fab fa-css3','fab fa-css3-alt','fab fa-cuttlefish','fab fa-d-and-d','fab fa-d-and-d-beyond','fab fa-dailymotion','fab fa-dashcube','fab fa-delicious','fab fa-deploydog','fab fa-deskpro','fab fa-dev','fab fa-deviantart','fab fa-dhl','fab fa-diaspora','fab fa-digg','fab fa-digital-ocean','fab fa-discord','fab fa-discourse','fab fa-dochub','fab fa-docker','fab fa-draft2digital','fab fa-dribbble','fab fa-dribbble-square','fab fa-dropbox','fab fa-drupal','fab fa-dyalog','fab fa-earlybirds','fab fa-ebay','fab fa-edge','fab fa-elementor','fab fa-ello','fab fa-ember','fab fa-empire','fab fa-envira','fab fa-erlang','fab fa-ethereum','fab fa-etsy','fab fa-evernote','fab fa-expeditedssl','fab fa-facebook','fab fa-facebook-f','fab fa-facebook-messenger','fab fa-facebook-square','fab fa-fantasy-flight-games','fab fa-fedex','fab fa-fedora','fab fa-figma','fab fa-firefox','fab fa-firefox-browser','fab fa-first-order','fab fa-first-order-alt','fab fa-firstdraft','fab fa-flickr','fab fa-flipboard','fab fa-fly','fab fa-font-awesome','fab fa-font-awesome-alt','fab fa-font-awesome-flag','fab fa-fonticons','fab fa-fonticons-fi','fab fa-fort-awesome','fab fa-fort-awesome-alt','fab fa-forumbee','fab fa-foursquare','fab fa-free-code-camp','fab fa-freebsd','fab fa-fulcrum','fab fa-galactic-republic','fab fa-galactic-senate','fab fa-get-pocket','fab fa-gg','fab fa-gg-circle','fab fa-git','fab fa-git-alt','fab fa-git-square','fab fa-github','fab fa-github-alt','fab fa-github-square','fab fa-gitkraken','fab fa-gitlab','fab fa-gitter','fab fa-glide','fab fa-glide-g','fab fa-gofore','fab fa-goodreads','fab fa-goodreads-g','fab fa-google','fab fa-google-drive','fab fa-google-play','fab fa-google-plus','fab fa-google-plus-g','fab fa-google-plus-square','fab fa-google-wallet','fab fa-gratipay','fab fa-grav','fab fa-gripfire','fab fa-grunt','fab fa-gulp','fab fa-hacker-news','fab fa-hacker-news-square','fab fa-hackerrank','fab fa-hips','fab fa-hire-a-helper','fab fa-hooli','fab fa-hornbill','fab fa-hotjar','fab fa-houzz','fab fa-html5','fab fa-hubspot','fab fa-ideal','fab fa-imdb','fab fa-instagram','fab fa-instagram-square','fab fa-intercom','fab fa-internet-explorer','fab fa-invision','fab fa-ioxhost','fab fa-itch-io','fab fa-itunes','fab fa-itunes-note','fab fa-java','fab fa-jedi-order','fab fa-jenkins','fab fa-jira','fab fa-joget','fab fa-joomla','fab fa-js','fab fa-js-square','fab fa-jsfiddle','fab fa-kaggle','fab fa-keybase','fab fa-keycdn','fab fa-kickstarter','fab fa-kickstarter-k','fab fa-korvue','fab fa-laravel','fab fa-lastfm','fab fa-lastfm-square','fab fa-leanpub','fab fa-less','fab fa-line','fab fa-linkedin','fab fa-linkedin-in','fab fa-linode','fab fa-linux','fab fa-lyft','fab fa-magento','fab fa-mailchimp','fab fa-mandalorian','fab fa-markdown','fab fa-mastodon','fab fa-maxcdn','fab fa-mdb','fab fa-medapps','fab fa-medium','fab fa-medium-m','fab fa-medrt','fab fa-meetup','fab fa-megaport','fab fa-mendeley','fab fa-microblog','fab fa-microsoft','fab fa-mix','fab fa-mixcloud','fab fa-mixer','fab fa-mizuni','fab fa-modx','fab fa-monero','fab fa-napster','fab fa-neos','fab fa-nimblr','fab fa-node','fab fa-node-js','fab fa-npm','fab fa-ns8','fab fa-nutritionix','fab fa-odnoklassniki','fab fa-odnoklassniki-square','fab fa-old-republic','fab fa-opencart','fab fa-openid','fab fa-opera','fab fa-optin-monster','fab fa-orcid','fab fa-osi','fab fa-page4','fab fa-pagelines','fab fa-palfed','fab fa-patreon','fab fa-paypal','fab fa-penny-arcade','fab fa-periscope','fab fa-phabricator','fab fa-phoenix-framework','fab fa-phoenix-squadron','fab fa-php','fab fa-pied-piper','fab fa-pied-piper-alt','fab fa-pied-piper-hat','fab fa-pied-piper-pp','fab fa-pied-piper-square','fab fa-pinterest','fab fa-pinterest-p','fab fa-pinterest-square','fab fa-playstation','fab fa-product-hunt','fab fa-pushed','fab fa-python','fab fa-qq','fab fa-quinscape','fab fa-quora','fab fa-r-project','fab fa-raspberry-pi','fab fa-ravelry','fab fa-react','fab fa-reacteurope','fab fa-readme','fab fa-rebel','fab fa-red-river','fab fa-reddit','fab fa-reddit-alien','fab fa-reddit-square','fab fa-redhat','fab fa-renren','fab fa-replyd','fab fa-researchgate','fab fa-resolving','fab fa-rev','fab fa-rocketchat','fab fa-rockrms','fab fa-safari','fab fa-salesforce','fab fa-sass','fab fa-schlix','fab fa-scribd','fab fa-searchengin','fab fa-sellcast','fab fa-sellsy','fab fa-servicestack','fab fa-shirtsinbulk','fab fa-shopify','fab fa-shopware','fab fa-simplybuilt','fab fa-sistrix','fab fa-sith','fab fa-sketch','fab fa-skyatlas','fab fa-skype','fab fa-slack','fab fa-slack-hash','fab fa-slideshare','fab fa-snapchat','fab fa-snapchat-ghost','fab fa-snapchat-square','fab fa-soundcloud','fab fa-sourcetree','fab fa-speakap','fab fa-speaker-deck','fab fa-spotify','fab fa-squarespace','fab fa-stack-exchange','fab fa-stack-overflow','fab fa-stackpath','fab fa-staylinked','fab fa-steam','fab fa-steam-square','fab fa-steam-symbol','fab fa-sticker-mule','fab fa-strava','fab fa-stripe','fab fa-stripe-s','fab fa-studiovinari','fab fa-stumbleupon','fab fa-stumbleupon-circle','fab fa-superpowers','fab fa-supple','fab fa-suse','fab fa-swift','fab fa-symfony','fab fa-teamspeak','fab fa-telegram','fab fa-telegram-plane','fab fa-tencent-weibo','fab fa-the-red-yeti','fab fa-themeco','fab fa-themeisle','fab fa-think-peaks','fab fa-trade-federation','fab fa-trello','fab fa-tripadvisor','fab fa-tumblr','fab fa-tumblr-square','fab fa-twitch','fab fa-twitter','fab fa-twitter-square','fab fa-typo3','fab fa-uber','fab fa-ubuntu','fab fa-uikit','fab fa-umbraco','fab fa-uniregistry','fab fa-unity','fab fa-untappd','fab fa-ups','fab fa-usb','fab fa-usps','fab fa-ussunnah','fab fa-vaadin','fab fa-viacoin','fab fa-viadeo','fab fa-viadeo-square','fab fa-viber','fab fa-vimeo','fab fa-vimeo-square','fab fa-vimeo-v','fab fa-vine','fab fa-vk','fab fa-vnv','fab fa-vuejs','fab fa-waze','fab fa-weebly','fab fa-weibo','fab fa-weixin','fab fa-whatsapp','fab fa-whatsapp-square','fab fa-whmcs','fab fa-wikipedia-w','fab fa-windows','fab fa-wix','fab fa-wizards-of-the-coast','fab fa-wolf-pack-battalion','fab fa-wordpress','fab fa-wordpress-simple','fab fa-wpbeginner','fab fa-wpexplorer','fab fa-wpforms','fab fa-wpressr','fab fa-xbox','fab fa-xing','fab fa-xing-square','fab fa-y-combinator','fab fa-yahoo','fab fa-yammer','fab fa-yandex','fab fa-yandex-international','fab fa-yarn','fab fa-yelp','fab fa-yoast','fab fa-youtube','fab fa-youtube-square','fab fa-zhihu']","import Message from '../models/Message';\n\nimport Model from 'flarum/Model';\nimport Stream from 'flarum/utils/Stream';\nimport Link from 'flarum/components/Link';\n\nimport * as resources from '../resources';\nimport ViewportState from './ViewportState';\n\nvar refAudio = new Audio();\nrefAudio.src = resources.base64AudioNotificationRef;\nrefAudio.volume = 0.5;\n\nvar audio = new Audio();\naudio.src = resources.base64AudioNotification;\naudio.volume = 0.5;\n\nexport default class ChatState {\n constructor() {\n this.q = Stream('');\n this.chats = [];\n this.chatmessages = [];\n\n this.chatsLoading = true;\n this.curChat = null;\n this.totalHiddenCount = 0;\n\n let neonchatState = JSON.parse(localStorage.getItem('neonchat')) ?? {};\n\n this.frameState = {\n beingShown: neonchatState.beingShown ?? app.forum.attribute('xelson-chat.settings.display.minimize'),\n beingShownChatsList: neonchatState.beingShownChatsList ?? 0,\n isMuted: neonchatState.isMuted ?? false,\n notify: neonchatState.notify ?? false,\n transform: neonchatState.transform ?? { x: 0, y: 400 },\n isActive: true,\n selectedChat: neonchatState.selectedChat ?? 0,\n };\n\n this.permissions = {\n post: app.forum.attribute('xelson-chat.permissions.chat'),\n edit: app.forum.attribute('xelson-chat.permissions.edit'),\n delete: app.forum.attribute('xelson-chat.permissions.delete'),\n create: {\n channel: app.forum.attribute('xelson-chat.permissions.create.channel'),\n chat: app.forum.attribute('xelson-chat.permissions.create'),\n },\n moderate: {\n delete: app.forum.attribute('xelson-chat.permissions.moderate.delete'),\n vision: app.forum.attribute('xelson-chat.permissions.moderate.vision'),\n },\n };\n\n this.viewportStates = {};\n\n if (app.session.user && app.pusher) app.pusher.then(this.listenSocketChannels.bind(this));\n }\n\n getViewportState(model) {\n return this.viewportStates[model.id()];\n }\n\n listenSocketChannels(socket) {\n let channels = socket.channels;\n channels.main.bind('neonchat.events', this.handleSocketEvent.bind(this));\n if (channels.user) channels.user.bind('neonchat.events', this.handleSocketEvent.bind(this));\n }\n\n handleSocketEvent(r) {\n let message = r.response.message;\n if (message) message = app.store.pushPayload(message);\n\n let chat = r.response.chat;\n if (chat) chat = app.store.pushPayload(chat);\n\n // Workaround for blocking events from a chat we leaved\n if (message && message.chat().type() == 1 && message.chat().removed_at()) return;\n\n switch (r.event.id) {\n case 'message.post': {\n if (!app.session.user || message.user() != app.session.user) {\n this.insertChatMessage(message, true);\n m.redraw();\n }\n break;\n }\n case 'message.edit': {\n let actions = message.data.attributes.actions;\n if (app.session.user && actions.invoker == app.session.user.id()) return;\n\n if (actions.msg !== undefined) {\n if (!app.session.user || message.user() != app.session.user) this.editChatMessage(message, false, actions.msg);\n } else if (actions.hide !== undefined) {\n if (!app.session.user || actions.invoker != app.session.user.id())\n actions.hide ? this.hideChatMessage(message, false, message.deleted_by()) : this.restoreChatMessage(message, false);\n }\n break;\n }\n case 'message.delete': {\n if (!app.session.user || message.deleted_by() != app.session.user) this.deleteChatMessage(message, false, message.deleted_by());\n\n break;\n }\n case 'chat.create': {\n if (!app.session.user || chat.creator() != app.session.user) {\n this.addChat(chat, true);\n m.redraw();\n }\n break;\n }\n case 'chat.edit': {\n this.editChat(chat, true);\n let range = r.response.eventmsg_range;\n if (range.length) this.apiFetchChatMessages(chat, range, { notify: true, withFlash: true, disableLoader: true });\n\n if (app.session.user && r.response.roles_updated_for && r.response.roles_updated_for.includes(app.session.user.id())) {\n let role = app.session.user.chat_pivot(chat.id()).role();\n switch (role) {\n case 0: {\n app.alerts.show(\n { type: 'error' },\n app.translator.trans('xelson-chat.forum.chat.edit_modal.moderator.lost', { chatname: {chat.title()} })\n );\n break;\n }\n case 1: {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('xelson-chat.forum.chat.edit_modal.moderator.got', { chatname: {chat.title()} })\n );\n break;\n }\n }\n }\n\n m.redraw();\n\n break;\n }\n case 'chat.delete': {\n if (!app.session.user || chat.creator() != app.session.user) {\n this.deleteChat(chat);\n m.redraw();\n }\n break;\n }\n }\n }\n\n getFrameState(key) {\n return this.frameState[key];\n }\n\n saveFrameState(key, value) {\n let neonchatState = JSON.parse(localStorage.getItem('neonchat')) ?? {};\n neonchatState[key] = value;\n localStorage.setItem('neonchat', JSON.stringify(neonchatState));\n\n this.frameState[key] = value;\n }\n\n getPermissions() {\n return this.permissions;\n }\n\n getChats() {\n return this.chats.filter((chat) => (this.q() && chat.matches(this.q().toLowerCase())) || (!this.q() && !chat.removed_at()));\n }\n\n getChatsSortedByLastUpdate() {\n return this.getChats().sort((a, b) => {\n if (b.last_message() && a.last_message()) {\n return b.last_message()?.created_at() - a.last_message()?.created_at();\n }\n return 0;\n });\n }\n\n addChat(model, outside = false) {\n this.chats.push(model);\n\n this.viewportStates[model.id()] = new ViewportState({ model });\n\n if (model.id() == this.getFrameState('selectedChat')) this.onChatChanged(model);\n if (outside) model.isNeedToFlash = true;\n }\n\n editChat(model, outside = false) {\n if (outside) model.isNeedToFlash = true;\n }\n\n apiReadChat(chat, message) {\n if (this.readingTimeout) clearTimeout(this.readingTimeout);\n\n let timestamp;\n if (message instanceof Date) timestamp = message.toISOString();\n else if (message instanceof Message) timestamp = message.created_at().toISOString();\n\n this.readingTimeout = setTimeout(() => chat.save({ actions: { reading: timestamp } }), 1000);\n }\n\n deleteChat(model) {\n this.chats = this.chats.filter((mdl) => mdl != model);\n if (this.getCurrentChat() == model) this.setCurrentChat(null);\n }\n\n isChatPM(model) {\n return model.type() == 0 && model.users().length <= 2;\n }\n\n isExistsPMChat(user1, user2) {\n return this.getChats().some((model) => {\n let users = model.users();\n return model.type() === 0 && users.length === 2 && users.some((model) => model == user1) && users.some((model) => model == user2);\n });\n }\n\n onChatChanged(model, e = {}) {\n e.redraw = false;\n if (model == this.getCurrentChat()) return;\n\n this.setCurrentChat(model);\n m.redraw.sync();\n }\n\n comporatorAscButZerosDesc(a, b) {\n return a == 0 ? 1 : b == 0 ? -1 : a - b;\n }\n\n getChatMessages(filter) {\n let list = this.chatmessages.sort((a, b) => this.comporatorAscButZerosDesc(a.id(), b.id()));\n return filter ? list.filter(filter) : list;\n }\n\n apiFetchChatMessages(model, query, options = {}) {\n let viewport = this.getViewportState(model);\n let self = this;\n\n if (viewport.loading || viewport.loadingQueries[query]) return;\n\n viewport.loading = true;\n viewport.loadingQueries[query] = true;\n\n return app.store.find('chatmessages', { chat_id: model.id(), query }).then((r) => {\n if (r.length) {\n r.map((model) => {\n if (options.withFlash) model.isNeedToFlash = true;\n self.insertChatMessage(model);\n });\n if (options.notify) this.messageNotify(r[0]);\n\n viewport.loading = false;\n viewport.loadingQueries[query] = false;\n //viewport.scroll.autoScroll = false;\n\n m.redraw();\n }\n });\n }\n\n isChatMessageExists(model) {\n return this.chatmessages.find((e) => e.id() == model.id());\n }\n\n insertEventChatMessage(model, data, notify = false) {\n model.pushAttributes({ message: JSON.stringify(data) });\n insertChatMessage(model, notify);\n }\n\n insertChatMessage(model, notify = false) {\n if (this.isChatMessageExists(model)) return null;\n\n this.chatmessages.push(model);\n if (notify) {\n this.messageNotify(model);\n model.isNeedToFlash = true;\n\n let chatModel = model.chat();\n chatModel.isNeedToFlash = true;\n chatModel.pushAttributes({ unreaded: chatModel.unreaded() + 1 });\n }\n\n let list = this.getChatMessages((mdl) => mdl.chat() == model.chat());\n if ((notify || model.chat().removed_at()) && model.id() && list[list.length - 1] == model) {\n model.chat().pushData({ relationships: { last_message: model } });\n this.getViewportState(model.chat()).newPushedPosts = true;\n }\n }\n\n renderChatMessage(model, content) {\n let element = model instanceof Model ? document.querySelector(`.NeonChatFrame .message-wrapper[data-id=\"${model.id()}\"] .message`) : model;\n\n if (element) {\n element.innerText = content;\n s9e.TextFormatter.preview(content, element);\n\n // Workaround for user mentions that doesn't works properly\n $(element).find('.UserMention').each(function () {\n let user = app.store.getBy('users', 'username', this.innerText.substring(1));\n if(user)\n {\n this.className = '';\n m.render(this, (\n \n {'@' + user.displayName()} \n \n ))\n }\n });\n\n if (this.executeScriptsTimeout) clearTimeout(this.executeScriptsTimeout);\n this.executeScriptsTimeout = setTimeout(() => {\n $('.NeonChatFrame script').each(function () {\n if (!self.executedScripts) self.executedScripts = {};\n let scriptURL = $(this).attr('src');\n if (!self.executedScripts[scriptURL]) {\n var scriptTag = document.createElement('script');\n scriptTag.src = scriptURL;\n document.head.appendChild(scriptTag);\n\n self.executedScripts[scriptURL] = true;\n }\n });\n }, 100);\n }\n }\n\n onChatMessageClicked(eventName, model) {\n switch (eventName) {\n case 'dropdownHide': {\n this.hideChatMessage(model, true);\n break;\n }\n case 'dropdownRestore': {\n this.restoreChatMessage(model, true);\n break;\n }\n case 'dropdownDelete': {\n this.deleteChatMessage(model, true);\n break;\n }\n }\n }\n\n postChatMessage(model) {\n return model.save({ message: model.content, created_at: new Date(), chat_id: model.chat().id() }).then(\n (r) => {\n model.isTimedOut = false;\n model.isNeedToFlash = true;\n model.isEditing = false;\n model.chat().pushData({ relationships: { last_message: model } });\n },\n (r) => {\n model.isTimedOut = true;\n }\n );\n }\n\n editChatMessage(model, sync = false, content) {\n model.content = content;\n model.isNeedToFlash = true;\n model.pushAttributes({ message: content, edited_at: new Date() });\n if (sync) model.save({ actions: { msg: content }, edited_at: new Date(), message: content });\n\n m.redraw();\n }\n\n deleteChatMessage(model, sync = false, user = app.session.user) {\n model.isDeletedForever = true;\n if (!model.deleted_by()) model.pushData({ relationships: { deleted_by: user } });\n let list = this.getChatMessages((mdl) => mdl.chat() == model.chat() && !mdl.isDeletedForever);\n if (list.length) model.chat().pushData({ relationships: { last_message: list[list.length - 1] } });\n\n this.chatmessages = this.chatmessages.filter((mdl) => mdl != model);\n if (sync) model.delete();\n\n m.redraw();\n }\n\n totalHidden() {\n return this.totalHiddenCount;\n }\n\n hideChatMessage(model, sync = false, user = app.session.user) {\n model.pushData({ relationships: { deleted_by: user } });\n if (sync) model.save({ actions: { hide: true }, relationships: { deleted_by: app.session.user } });\n\n this.totalHiddenCount++;\n m.redraw();\n }\n\n restoreChatMessage(model, sync = false) {\n if (!this.isChatMessageExists(model)) {\n this.insertChatMessage(model);\n model.isNeedToFlash = true;\n } else {\n model.pushAttributes({ deleted_by: 0 });\n model.isNeedToFlash = true;\n delete model.data.relationships.deleted_by;\n }\n if (sync) model.save({ actions: { hide: false }, deleted_by: 0 });\n\n m.redraw();\n }\n\n setCurrentChat(model) {\n this.curChat = model;\n this.saveFrameState('selectedChat', model ? model.id() : null);\n }\n\n getCurrentChat() {\n return this.curChat;\n }\n\n apiFetchChats() {\n return app.store.find('chats').then((chats) => {\n chats.map((model) => this.addChat(model));\n this.chatsLoading = false;\n m.redraw();\n });\n }\n\n messageNotify(model) {\n if (!app.session.user || model.user().id() != app.session.user.id()) this.notifyTry(model);\n }\n\n notifyTry(model) {\n if (!('Notification' in window)) return;\n\n if (this.messageIsMention(model)) this.notifySend(model);\n this.notifySound(model);\n }\n\n messageIsMention(model) {\n return app.session.user && model.message().indexOf('@' + app.session.user.username()) >= 0;\n }\n\n notifySend(model) {\n let avatar = model.user().avatarUrl();\n if (!avatar) avatar = resources.base64PlaceholderAvatarImage;\n\n if (this.getFrameState('notify') && document.hidden)\n new Notification(model.chat().title(), {\n body: `${model.user().username()}: ${model.message()}`,\n icon: avatar,\n silent: true,\n timestamp: new Date(),\n });\n }\n\n notifySound(model) {\n if (!this.getFrameState('isMuted')) {\n let sound = this.messageIsMention(model) ? refAudio : audio;\n sound.currentTime = 0;\n sound.play();\n }\n }\n\n /**\n * https://github.com/flarum/core/blob/7e74f5a03c7f206014f3f091968625fc0bf29094/js/src/forum/components/PostStream.js#L579\n *\n * 'Flash' the given post, drawing the user's attention to it.\n *\n * @param {jQuery} $item\n */\n flashItem($item) {\n $item.addClass('flash').one('animationend webkitAnimationEnd', () => $item.removeClass('flash'));\n }\n}\n","import Stream from 'flarum/utils/Stream';\n\nexport default class ViewportState {\n loadingSend = false;\n\n scroll = {\n autoScroll: true,\n oldScroll: 0,\n };\n\n loading = false;\n loadingQueries = {};\n\n input = {\n messageLength: 0,\n rows: 1,\n content: Stream(),\n };\n\n messagesFetched = false;\n\n constructor(params) {\n if (params.model) {\n this.initChatStorage(params.model);\n\n this.input.content(this.getChatStorageValue('draft'));\n }\n }\n\n chatStorage = {\n key: null,\n draft: null,\n };\n\n initChatStorage(model) {\n this.chatStorage.key = `neonchat.viewport${model.id()}`;\n let parsedData = JSON.parse(localStorage.getItem(this.chatStorage.key));\n\n if (parsedData) {\n this.chatStorage.draft = parsedData.draft ?? '';\n }\n }\n\n getChatStorageValue(key) {\n return this.chatStorage[key];\n }\n\n setChatStorageValue(key, value) {\n let cachedState = JSON.parse(localStorage.getItem(this.chatStorage.key)) ?? {};\n cachedState[key] = value;\n localStorage.setItem(this.chatStorage.key, JSON.stringify(cachedState));\n\n this.chatStorage[key] = value;\n }\n\n onChatMessageClicked(eventName, model) {\n switch (eventName) {\n case 'dropdownEditStart': {\n this.messageEdit(model, true);\n break;\n }\n case 'dropdownResend': {\n this.messageResend(model);\n break;\n }\n case 'insertMention': {\n this.insertMention(model);\n break;\n }\n }\n }\n\n getChatInput() {\n return document.querySelector('.NeonChatFrame #chat-input');\n }\n\n messageSend() {\n const text = this.input.content();\n\n if (text && text.trim().length > 0 && !this.loadingSend) {\n if (this.input.writingPreview) {\n this.input.writingPreview = false;\n\n this.messagePost(this.input.previewModel);\n app.chat.insertChatMessage(Object.assign(this.input.previewModel, {}));\n\n this.inputClear();\n } else if (this.messageEditing) {\n let model = this.messageEditing;\n if (model.content.trim() !== model.oldContent.trim()) {\n model.oldContent = model.content;\n app.chat.editChatMessage(model, true, model.content);\n }\n this.messageEditEnd();\n this.inputClear();\n }\n }\n }\n\n messageEdit(model) {\n if (this.input.writingPreview) this.input.instance.inputPreviewEnd();\n if(this.messageEditing) this.messageEditEnd();\n\n model.isEditing = true;\n model.oldContent = model.message();\n\n this.messageEditing = model;\n\n let inputElement = this.getChatInput();\n inputElement.value = this.input.content(model.oldContent);\n inputElement.focus();\n app.chat.input.resizeInput();\n\n m.redraw();\n }\n\n messageEditEnd() {\n let message = this.messageEditing;\n if (message) {\n message.isEditing = false;\n message.content = message.oldContent;\n this.inputClear();\n m.redraw();\n\n this.messageEditing = null;\n }\n }\n\n messageResend(model) {\n this.messagePost(model);\n }\n\n messagePost(model) {\n this.loadingSend = true;\n m.redraw();\n\n return app.chat.postChatMessage(model).then(\n (r) => {\n this.loadingSend = false;\n\n m.redraw();\n },\n (r) => {\n this.loadingSend = false;\n\n m.redraw();\n }\n );\n }\n\n inputClear() {\n this.input.messageLength = 0;\n this.input.rows = 1;\n this.input.content(null);\n m.redraw();\n }\n\n insertMention(model) {\n let user = model.user();\n if (!app.session.user) return;\n\n this.input.content((this.input.content() || '') + ` @${user.username()} `);\n\n var input = this.getChatInput();\n input.focus();\n }\n}\n","let redrawTimeout;\n\nexport default function timedRedraw(timeout, callback) {\n if (!redrawTimeout) {\n redrawTimeout = setTimeout(() => {\n m.redraw();\n if (callback) callback();\n redrawTimeout = null;\n }, timeout);\n }\n}\n","module.exports = flarum.core.compat['Application'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['common/components/Page'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['components/IndexPage'];","module.exports = flarum.core.compat['components/Link'];","module.exports = flarum.core.compat['components/LinkButton'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/Search'];","module.exports = flarum.core.compat['components/Separator'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['helpers/fullTime'];","module.exports = flarum.core.compat['helpers/highlight'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['helpers/listItems'];","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['models/Group'];","module.exports = flarum.core.compat['models/User'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['utils/SubtreeRetainer'];","module.exports = flarum.core.compat['utils/classList'];","module.exports = flarum.core.compat['utils/computed'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['utils/humanTime'];","module.exports = flarum.core.compat['utils/throttleDebounce'];"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://module.exports/webpack/bootstrap","webpack://module.exports/external \"flarum.core.compat['Model']\"","webpack://module.exports/external \"flarum.core.compat['Component']\"","webpack://module.exports/external \"flarum.core.compat['components/Button']\"","webpack://module.exports/external \"flarum.core.compat['utils/classList']\"","webpack://module.exports/external \"flarum.core.compat['utils/Stream']\"","webpack://module.exports/external \"flarum.core.compat['components/LoadingIndicator']\"","webpack://module.exports/external \"flarum.core.compat['utils/extractText']\"","webpack://module.exports/external \"flarum.core.compat['components/Link']\"","webpack://module.exports/external \"flarum.core.compat['utils/humanTime']\"","webpack://module.exports/external \"flarum.core.compat['extend']\"","webpack://module.exports/external \"flarum.core.compat['utils/ItemList']\"","webpack://module.exports/external \"flarum.core.compat['helpers/avatar']\"","webpack://module.exports/external \"flarum.core.compat['helpers/username']\"","webpack://module.exports/external \"flarum.core.compat['utils/computed']\"","webpack://module.exports/external \"flarum.core.compat['components/Dropdown']\"","webpack://module.exports/external \"flarum.core.compat['helpers/highlight']\"","webpack://module.exports/external \"flarum.core.compat['utils/SubtreeRetainer']\"","webpack://module.exports/external \"flarum.core.compat['components/IndexPage']\"","webpack://module.exports/external \"flarum.core.compat['utils/throttleDebounce']\"","webpack://module.exports/external \"flarum.core.compat['helpers/fullTime']\"","webpack://module.exports/external \"flarum.core.compat['Application']\"","webpack://module.exports/external \"flarum.core.compat['models/Group']\"","webpack://module.exports/external \"flarum.core.compat['components/Modal']\"","webpack://module.exports/external \"flarum.core.compat['components/Search']\"","webpack://module.exports/external \"flarum.core.compat['helpers/icon']\"","webpack://module.exports/external \"flarum.core.compat['common/components/Page']\"","webpack://module.exports/external \"flarum.core.compat['helpers/listItems']\"","webpack://module.exports/external \"flarum.core.compat['components/Separator']\"","webpack://module.exports/external \"flarum.core.compat['models/User']\"","webpack://module.exports/external \"flarum.core.compat['components/LinkButton']\"","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://module.exports/./src/forum/utils/timedRedraw.js","webpack://module.exports/./src/forum/components/UsersSearchResults.js","webpack://module.exports/./src/forum/components/ChatSearchUser.js","webpack://module.exports/./src/forum/resources.js","webpack://module.exports/./src/forum/components/ChatModal.js","webpack://module.exports/./src/forum/components/ChatEditModal.js","webpack://module.exports/./src/forum/components/ChatHeader.js","webpack://module.exports/./src/forum/components/ChatCreateModal.js","webpack://module.exports/./src/forum/components/ChatAvatar.js","webpack://module.exports/./src/forum/components/ChatPreview.js","webpack://module.exports/./src/forum/components/ChatList.js","webpack://module.exports/./src/forum/components/ChatInput.js","webpack://module.exports/./src/forum/components/ChatMessage.js","webpack://module.exports/./src/forum/components/ChatEventMessage.js","webpack://module.exports/./src/forum/components/ChatWelcome.js","webpack://module.exports/./src/forum/models/Message.js","webpack://module.exports/./src/forum/components/ChatViewport.js","webpack://module.exports/./src/forum/components/ChatPage.js","webpack://module.exports/./src/forum/components/ChatFrame.js","webpack://module.exports/./src/forum/models/Chat.js","webpack://module.exports/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://module.exports/./src/forum/states/ViewportState.js","webpack://module.exports/./src/forum/states/ChatState.js","webpack://module.exports/./src/forum/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_extends","assign","target","arguments","length","source","apply","this","_inheritsLoose","subClass","superClass","constructor","__proto__","redrawTimeout","UsersSearchResults","props","results","searching","state","usersSelected","search","query","app","store","find","filter","q","page","limit","then","redraw","isUserSelected","user","some","u","id","userClick","splice","indexOf","push","view","toLowerCase","moreText","resultsFind","concat","all","username","displayName","includes","session","e","arr","lastIndexOf","sort","a","b","localeCompare","class","translator","trans","more_results","slice","className","LoadingIndicator","component","size","resultsSelected","values","map","children","highlight","text","data-index","onclick","avatar","undefined","ChatSearchUser","oninit","vnode","sourceItems","items","ItemList","attrs","forum","attribute","add","UsersSearchSource","neonchat","updateMaxHeight","currentSearch","getInitialSearch","getValue","setValue","current","sources","toArray","classList","open","hasFocus","active","loading","loadingSources","type","placeholder","oninput","onfocus","clear","icon","Search","fa5IconsList","ChatModal","model","input","title","Stream","color","iconState","matches","lastInput","onremove","getInput","setSelectedUsers","users","getSelectedUsers","isChatExists","chat","isExistsPMChat","alertText","componentAlert","componentFormUsersSelect","label","componentUsersSelect","userMentionContent","userMentionClassname","userMentionOnClick","event","componentUsersMentions","componentFormIcon","options","desc","bidi","stream","onupdate","formInputOnUpdate","inputIconHasFocus","onkeypress","keyCode","dropdownIconMatches","componentFormColor","inputIcon","Math","random","$","css","backgroundColor","componentFormInput","Modal","ChatEditModal","deleteChatTitleInput","deleteState","initialUsers","mdl","chat_pivot","removed_at","edited","isLocalModerator","isModer","isLocalLeaved","onsubmit","added","Model","getIdentifier","removed","keys","k","save","relationships","hide","role","isCreator","creator","groups","g","Group","ADMINISTRATOR_ID","editable","moder","userMentionDropdownOnclick","button","componentUserMentionDropdown","buttonClassName","menuClassName","disabled","isChatPM","trigger","componentFormInputIcon","href","tabindex","componentFormInputTitle","componentFormInputColor","componentChatInfo","componentFormPM","componentFormChannel","componentFormChat","componentForm","componentFormButtons","buttons","isCanEditChannel","isCanEditChat","onleave","removed_by","getPermissions","channel","componentDeleteChat","ondelete","isValidTitleCopy","deleteChat","content","ChatHeader","ondragstart","onmousedown","showChatListStream","stopPropagation","getCurrentChat","style","data-title","modal","show","windowButtonItems","toggleSound","getFrameState","toggleNotifications","inFrame","toggleChat","showing","saveFrameState","preventDefault","window","Notification","requestPermission","Component","ChatCreateModal","isChannel","createRecord","addChat","onChatChanged","isCanCreateChat","isCanCreateChannel","ChatAvatar","componentAvatarPM","image","avatarUrl","textColor","firstLetter","toUpperCase","componentAvatarChannel","string","isLetter","ChatPreview","subtree","SubtreeRetainer","freshness","isNeedToFlash","onbeforeupdate","needsRebuild","position","componentPreview","unreaded","oncreate","flashItem","dom","componentMessageTime","lastMessage","last_message","time","Date","created_at","now","getTime","nl","getHours","getMinutes","humanTime","componentTextPreview","componentTextEmpty","extractText","componentPreviewChannel","formatTextPreview","startsWith","senderName","formatResult","message","sender","censored","is_censored","ChatFrame","classes","inPage","join","toggleChatsList","getChatsSortedByLastUpdate","getChatsListPanel","document","querySelector","getChatsList","chatLists","contains","remove","ChatInput","messageCharLimit","updatePlaceholder","inputState","lineHeight","parseInt","getComputedStyle","getPropertyValue","element","inputProcess","updateLimit","old","post","inputPlaceholder","maxlength","inputPressEnter","onpaste","onkeyup","inputSaveDraft","rows","saveDraft","messageEditing","messageEditEnd","inputPressButton","limiter","charsTyped","messageLength","innerText","lastDraft","throttle","setChatStorageValue","trim","resizeInput","getChatInput","min","scrollHeight","screen","inputValue","writingPreview","inputPreviewStart","inputPreviewEnd","previewModel","shiftKey","messageSend","pushData","attributes","isEditing","ChatMessage","labels","initLabels","isDeletedForever","isTimedOut","modelEvent","getViewportState","onChatMessageClicked","route","condition","editDropDown","fullTime","editDropDownTimedOut","onContentWrapperCreated","onContentWrapperUpdated","hidden","deleted_by","editing","deleted","isVisible","data-id","labelBind","edited_at","ago","edit","moderate","totalHidden","messageWrapper","pollInterval","setInterval","renderMessage","clearInterval","oldContent","renderChatMessage","ChatEventMessage","split","every","parsedContent","JSON","parse","componentUserMention","componentUserMentionsByIds","ids","getById","componentEventText","creatorname","chatname","usernames","componentOld","componentNew","column","editorname","new","invitednames","kickednames","ChatWelcome","height","y","getChats","Message","hasOne","transformDate","is_readed","ip_address","ChatViewport","chatModel","loadChat","oldScroll","scroll","reloadMessages","setTimeout","getChatWrapper","scrollTop","clientHeight","wrapperOnCreate","wrapperOnBeforeUpdate","wrapperOnUpdate","wrapperOnRemove","componentLoader","componentsChatMessages","componentChatMessage","nearBottom","scrollToBottom","isFastScrollAvailable","componentScroller","getChatMessages","fastScroll","watch","ChatPage","documentElement","chatWrapper","newPushedPosts","fastMessagesFetch","max","chatmessages","apiFetchChatMessages","timeout","callback","pushAttributes","apiReadChat","addEventListener","boundScrollListener","wrapperOnScroll","passive","vnodeNew","autoScroll","scrollAfterUpdate","el","autoScrollTimeout","clearTimeout","checkUnreaded","removeEventListener","lastFastScrollStatus","currentHeight","atBottom","scrolling","topMessage","first_message","toISOString","offsetHeight","bottomMessage","wrapper","readed_at","isReaded","msg","offsetTop","scrollToAnchor","anchor","stop","animate","force","notAtBottom","fewMessages","pixelsFromBottom","messagesFetched","abs","bodyClass","listOpen","navItems","IndexPage","sidebarItems","has","listItems","chatsLoading","clickHandler","chatList","on","getBoundingClientRect","top","off","Page","chatMoveListener","calcHeight","right","x","chatHeaderOnMouseDown","path","composedPath","chatMoveStart","chatMoving","chatMoveEnd","mouseMoveEvent","chatMoveProcess","moveLast","clientX","clientY","body","move","nextPos","innerWidth","offsetWidth","innerHeight","Chat","_title","_color","hasMany","v","joined_at","pm_user","computed","updated","getPMUser","pickTextColorBasedOnBgColorSimple","bgColor","lightColor","darkColor","charAt","substring","_defineProperty","obj","configurable","writable","ViewportState","params","draft","initChatStorage","getChatStorageValue","chatStorage","parsedData","localStorage","getItem","cachedState","setItem","stringify","eventName","messageEdit","messageResend","insertMention","loadingSend","messagePost","insertChatMessage","inputClear","editChatMessage","instance","inputElement","focus","postChatMessage","refAudio","Audio","src","volume","audio","ChatState","chats","curChat","totalHiddenCount","neonchatState","frameState","beingShown","beingShownChatsList","isMuted","notify","transform","isActive","selectedChat","permissions","delete","vision","viewportStates","pusher","listenSocketChannels","socket","channels","main","handleSocketEvent","response","pushPayload","actions","data","invoker","hideChatMessage","restoreChatMessage","deleteChatMessage","editChat","range","eventmsg_range","withFlash","disableLoader","roles_updated_for","alerts","outside","timestamp","readingTimeout","reading","setCurrentChat","user1","user2","sync","comporatorAscButZerosDesc","list","viewport","self","loadingQueries","chat_id","messageNotify","isChatMessageExists","insertEventChatMessage","s9e","TextFormatter","preview","each","getBy","render","executedScripts","scriptURL","attr","scriptTag","createElement","head","appendChild","apiFetchChats","notifyTry","messageIsMention","notifySend","notifySound","silent","sound","currentTime","play","$item","addClass","one","removeClass","setAttribute","append","initializers","pivot","relationship","models","User","extend","Application","mount","getElementById"],"mappings":"2BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,gBClFrDhC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAc,O,cCA3CnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAkB,W,cCA/CnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,sB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,oB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,iB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,gC,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,sB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,oB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,oB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAe,Q,cCA5CnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,mB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,mB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,qB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,mB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,wB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,sB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,0B,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,yB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,2B,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,qB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAoB,a,cCAjDnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,iB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,qB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,sB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,iB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,2B,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,sB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,yB,cCApCnC,EAAOD,QAAUkC,OAAOC,KAAKC,OAAO,gB,cCApCnC,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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['utils/classList'];","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['components/Link'];","module.exports = flarum.core.compat['utils/humanTime'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['utils/computed'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['helpers/highlight'];","module.exports = flarum.core.compat['utils/SubtreeRetainer'];","module.exports = flarum.core.compat['components/IndexPage'];","module.exports = flarum.core.compat['utils/throttleDebounce'];","module.exports = flarum.core.compat['helpers/fullTime'];","module.exports = flarum.core.compat['Application'];","module.exports = flarum.core.compat['models/Group'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/Search'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['common/components/Page'];","module.exports = flarum.core.compat['helpers/listItems'];","module.exports = flarum.core.compat['components/Separator'];","module.exports = flarum.core.compat['models/User'];","module.exports = flarum.core.compat['components/LinkButton'];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","let redrawTimeout;\n\nexport default function timedRedraw(timeout, callback) {\n if (!redrawTimeout) {\n redrawTimeout = setTimeout(() => {\n m.redraw();\n if (callback) callback();\n redrawTimeout = null;\n }, timeout);\n }\n}\n","import avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\nimport highlight from 'flarum/helpers/highlight';\n\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\n\nexport default class UsersSearchResults {\n constructor(props) {\n this.results = {};\n this.searching = false;\n\n if (!props.state.usersSelected) props.state.usersSelected = [];\n this.usersSelected = props.state.usersSelected;\n }\n\n search(query) {\n this.searching = true;\n\n return app.store\n .find('users', {\n filter: { q: query },\n page: { limit: 5 },\n })\n .then((results) => {\n this.results[query] = results;\n this.searching = false;\n m.redraw();\n });\n }\n\n isUserSelected(user) {\n return this.usersSelected.some((u) => user.id() == u.id());\n }\n\n userClick(user) {\n if (!this.isUserSelected(user)) this.usersSelected.push(user);\n else this.usersSelected.splice(this.usersSelected.indexOf(user), 1);\n }\n\n view(query) {\n query = query.toLowerCase();\n\n const usersList = (this.results[query] || [])\n .concat(\n app.store.all('users').filter((user) => [user.username(), user.displayName()].some((value) => value.toLowerCase().includes(query)))\n )\n .filter((user) => user !== app.session.user);\n\n let resultsFind = usersList\n .filter((e, i, arr) => arr.lastIndexOf(e) === i)\n .sort((a, b) => a.displayName().localeCompare(b.displayName()))\n .filter((user) => !this.isUserSelected(user));\n\n let moreText;\n if (resultsFind.length > 5) {\n moreText = (\n \n {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.more_results', { more_results: resultsFind.length - 5 })}\n
\n );\n\n resultsFind = resultsFind.slice(-5);\n }\n\n if (!resultsFind.length) {\n if (!this.searching)\n return {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.failed')} ;\n else LoadingIndicator.component({ size: 'tiny', className: 'Button Button--icon Button--link' });\n }\n\n const resultsSelected = Object.values(this.usersSelected).slice(-5);\n\n return [\n {app.translator.trans('core.forum.search.users_heading')} ,\n resultsFind.map((user) => {\n const name = username(user);\n const id = user.id();\n const children = [highlight(name.text, query)];\n\n return (\n \n \n {avatar(user)}\n {{ ...name, text: undefined, children }}\n \n \n );\n }),\n moreText,\n resultsSelected.length ? (\n {app.translator.trans('xelson-chat.forum.chat.list.add_modal.search.invited')} \n ) : null,\n resultsSelected.map((user) => {\n const name = username(user);\n const children = [highlight(name.text, query)];\n\n return (\n \n \n {avatar(user)}\n {{ ...name, text: undefined, children }}\n \n \n );\n }),\n ];\n }\n}\n","import Search from 'flarum/components/Search';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport ItemList from 'flarum/utils/ItemList';\nimport classList from 'flarum/utils/classList';\nimport icon from 'flarum/helpers/icon';\nimport UsersSearchSource from './UsersSearchResults';\n\nexport default class ChatSearchUser extends Search {\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n sourceItems() {\n const items = new ItemList();\n this.state = this.attrs.state ?? {};\n if (app.forum.attribute('canSearchUsers')) items.add('users', new UsersSearchSource({ state: app.search.neonchat }));\n\n return items;\n }\n\n updateMaxHeight() {}\n\n view(vnode) {\n const currentSearch = this.state.getInitialSearch();\n\n if (!this.state.getValue()?.length) {\n this.state.setValue(currentSearch || '');\n }\n\n app.current.searching = () => this.state.getValue();\n\n if (!this.sources) {\n this.sources = this.sourceItems().toArray();\n }\n\n if (!this.sources.length) return
;\n\n return (\n \n
\n this.state.setValue(e.target.value)}\n onfocus={() => (this.hasFocus = true)}\n />\n {this.loadingSources ? (\n \n ) : currentSearch ? (\n \n {icon('fas fa-times-circle')}\n \n ) : (\n ''\n )}\n
\n {this.state.getValue() && this.hasFocus ? (\n
\n {this.sources.map((source) => source.view(this.state.getValue()))}\n \n ) : null}\n
\n );\n }\n}\n","export const base64AudioNotificationRef =\n 'data:audio/ogg;base64,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';\n\nexport const base64AudioNotification =\n 'data:audio/ogg;base64,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';\n\nexport const base64PlaceholderAvatarImage =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPZSURBVHhe7Zs9aNVQGIZvioODQwdHCxUqdHBQtNihg4NLQdCigg6CoKKiNS4dnKRDcXBpEaHSggWFLg4WBBcHBwdLCzo4FBQs2NHBoYODcH2fnOQ2iUnvT27uvcnpA29Ozh3afG++85OTE6darVZyxXEP6XhSOiUNS4NSv1+G2ZR+++WGtCqtV6pzWypzIx8DHHdUx3PSRWmInzLwXXotrciMT94vbaR9Bjgud/WadEviTucBmfFcWpIZZEtmshtgAn8guRLnnYDg56TZrEZkM8Bxb+j4WDro1TvPL+mhTFg01eZpzQDHpV0vSKe9evf5IN2UEfQXTdHnl43juJd1XJN6JXjgWtb8a2uKxjPAcffp+ESivfcys9KUsuGvqe5OYwaY4JclhrUiwLB5pRET6htQvOAD3kiX6pmwex9Q3ODhvLTsx5BKvU6QNl/E4AO4dmJIJb0JmB6Vu18GrqopvPLPIyQbYMZ5hrpOzezyZls6njRPSGsCTHLKEjwckF6Y0yj/G2Cmt700yWkXY4rtnn9eI9oEzIPNN6lbc/u84dnhiJpC7QEqngHM8soaPBBbZCa7kwHm7v+QytT2k+DuHw6yIJwBLGaUPXggxtvmNGoAKzm2cN0vfQPMGl5ey1i9yJBiHuMkyAAWMG3jAofAgCLP91uFhyWNApX7rNv/pGIhA2QALy1sZRQDeGNjKycwwKbeP84wBsTf0dnEIAbYMPtLo38vA/wTa9kzwC+tBQPYkWErmxiQ6f16wdneywAdmn6nXiI2MIDdWLayigHr5txK1vsq1Tn6ABv7gU1iJwPgrV/ahBdzYMCKX9qEF3P4xQjLYiyP2cCW0n+AkyAD4Jlf2kAt1rAB85INs8I/ErF67Bhg3pUtmUqpmQ/eC0I4A2BaKnMWEBsx1ogaYJyZMZVSMhO++xDPAGCnZRlnh18kYouQtkmKpfLP0n6vXnzo+EZ097+a6g5JGUBT4MOESVMpBZNJwUOyAWD24Le8D7+HWPRjSSTdAMMdiY3HRYX5PjGkktwHhHFc9ti9k7wNBQXiozSuu88myVTqZQBNgT8wLhXpiZFrrRs81DcAzB+akIrQJ3CNE40ED/WbQByzk/Sp1GtDJEMdvX1TN6l5A8Bxj+r4Ujrm1bsPkxx2hCcOdbvRWBOIY/7RiDQldfPZgf/NNSROchqhtQwIY3aYPpLYfNipZhE80k4r8Ew3ILsBAcYITLgr5bWyxIfULGZEHmmz0D4DwjjuGR3Ze3hWyrr/gBVrhjU+nn7v/dJG8jEgjONiQPzzeSZXcWMIlKGLMvz5fI5L9pXKP+lVHvxHrr8zAAAAAElFTkSuQmCC';\n\nexport const fa5IconsList = [ 'fas fa-ad','fas fa-address-book','fas fa-address-card','fas fa-adjust','fas fa-air-freshener','fas fa-align-center','fas fa-align-justify','fas fa-align-left','fas fa-align-right','fas fa-allergies','fas fa-ambulance','fas fa-american-sign-language-interpreting','fas fa-anchor','fas fa-angle-double-down','fas fa-angle-double-left','fas fa-angle-double-right','fas fa-angle-double-up','fas fa-angle-down','fas fa-angle-left','fas fa-angle-right','fas fa-angle-up','fas fa-angry','fas fa-ankh','fas fa-apple-alt','fas fa-archive','fas fa-archway','fas fa-arrow-alt-circle-down','fas fa-arrow-alt-circle-left','fas fa-arrow-alt-circle-right','fas fa-arrow-alt-circle-up','fas fa-arrow-circle-down','fas fa-arrow-circle-left','fas fa-arrow-circle-right','fas fa-arrow-circle-up','fas fa-arrow-down','fas fa-arrow-left','fas fa-arrow-right','fas fa-arrow-up','fas fa-arrows-alt','fas fa-arrows-alt-h','fas fa-arrows-alt-v','fas fa-assistive-listening-systems','fas fa-asterisk','fas fa-at','fas fa-atlas','fas fa-atom','fas fa-audio-description','fas fa-award','fas fa-baby','fas fa-baby-carriage','fas fa-backspace','fas fa-backward','fas fa-bacon','fas fa-bahai','fas fa-balance-scale','fas fa-balance-scale-left','fas fa-balance-scale-right','fas fa-ban','fas fa-band-aid','fas fa-barcode','fas fa-bars','fas fa-baseball-ball','fas fa-basketball-ball','fas fa-bath','fas fa-battery-empty','fas fa-battery-full','fas fa-battery-half','fas fa-battery-quarter','fas fa-battery-three-quarters','fas fa-bed','fas fa-beer','fas fa-bell','fas fa-bell-slash','fas fa-bezier-curve','fas fa-bible','fas fa-bicycle','fas fa-biking','fas fa-binoculars','fas fa-biohazard','fas fa-birthday-cake','fas fa-blender','fas fa-blender-phone','fas fa-blind','fas fa-blog','fas fa-bold','fas fa-bolt','fas fa-bomb','fas fa-bone','fas fa-bong','fas fa-book','fas fa-book-dead','fas fa-book-medical','fas fa-book-open','fas fa-book-reader','fas fa-bookmark','fas fa-border-all','fas fa-border-none','fas fa-border-style','fas fa-bowling-ball','fas fa-box','fas fa-box-open','fas fa-boxes','fas fa-braille','fas fa-brain','fas fa-bread-slice','fas fa-briefcase','fas fa-briefcase-medical','fas fa-broadcast-tower','fas fa-broom','fas fa-brush','fas fa-bug','fas fa-building','fas fa-bullhorn','fas fa-bullseye','fas fa-burn','fas fa-bus','fas fa-bus-alt','fas fa-business-time','fas fa-calculator','fas fa-calendar','fas fa-calendar-alt','fas fa-calendar-check','fas fa-calendar-day','fas fa-calendar-minus','fas fa-calendar-plus','fas fa-calendar-times','fas fa-calendar-week','fas fa-camera','fas fa-camera-retro','fas fa-campground','fas fa-candy-cane','fas fa-cannabis','fas fa-capsules','fas fa-car','fas fa-car-alt','fas fa-car-battery','fas fa-car-crash','fas fa-car-side','fas fa-caravan','fas fa-caret-down','fas fa-caret-left','fas fa-caret-right','fas fa-caret-square-down','fas fa-caret-square-left','fas fa-caret-square-right','fas fa-caret-square-up','fas fa-caret-up','fas fa-carrot','fas fa-cart-arrow-down','fas fa-cart-plus','fas fa-cash-register','fas fa-cat','fas fa-certificate','fas fa-chair','fas fa-chalkboard','fas fa-chalkboard-teacher','fas fa-charging-station','fas fa-chart-area','fas fa-chart-bar','fas fa-chart-line','fas fa-chart-pie','fas fa-check','fas fa-check-circle','fas fa-check-double','fas fa-check-square','fas fa-cheese','fas fa-chess','fas fa-chess-bishop','fas fa-chess-board','fas fa-chess-king','fas fa-chess-knight','fas fa-chess-pawn','fas fa-chess-queen','fas fa-chess-rook','fas fa-chevron-circle-down','fas fa-chevron-circle-left','fas fa-chevron-circle-right','fas fa-chevron-circle-up','fas fa-chevron-down','fas fa-chevron-left','fas fa-chevron-right','fas fa-chevron-up','fas fa-child','fas fa-church','fas fa-circle','fas fa-circle-notch','fas fa-city','fas fa-clinic-medical','fas fa-clipboard','fas fa-clipboard-check','fas fa-clipboard-list','fas fa-clock','fas fa-clone','fas fa-closed-captioning','fas fa-cloud','fas fa-cloud-download-alt','fas fa-cloud-meatball','fas fa-cloud-moon','fas fa-cloud-moon-rain','fas fa-cloud-rain','fas fa-cloud-showers-heavy','fas fa-cloud-sun','fas fa-cloud-sun-rain','fas fa-cloud-upload-alt','fas fa-cocktail','fas fa-code','fas fa-code-branch','fas fa-coffee','fas fa-cog','fas fa-cogs','fas fa-coins','fas fa-columns','fas fa-comment','fas fa-comment-alt','fas fa-comment-dollar','fas fa-comment-dots','fas fa-comment-medical','fas fa-comment-slash','fas fa-comments','fas fa-comments-dollar','fas fa-compact-disc','fas fa-compass','fas fa-compress','fas fa-compress-alt','fas fa-compress-arrows-alt','fas fa-concierge-bell','fas fa-cookie','fas fa-cookie-bite','fas fa-copy','fas fa-copyright','fas fa-couch','fas fa-credit-card','fas fa-crop','fas fa-crop-alt','fas fa-cross','fas fa-crosshairs','fas fa-crow','fas fa-crown','fas fa-crutch','fas fa-cube','fas fa-cubes','fas fa-cut','fas fa-database','fas fa-deaf','fas fa-democrat','fas fa-desktop','fas fa-dharmachakra','fas fa-diagnoses','fas fa-dice','fas fa-dice-d20','fas fa-dice-d6','fas fa-dice-five','fas fa-dice-four','fas fa-dice-one','fas fa-dice-six','fas fa-dice-three','fas fa-dice-two','fas fa-digital-tachograph','fas fa-directions','fas fa-divide','fas fa-dizzy','fas fa-dna','fas fa-dog','fas fa-dollar-sign','fas fa-dolly','fas fa-dolly-flatbed','fas fa-donate','fas fa-door-closed','fas fa-door-open','fas fa-dot-circle','fas fa-dove','fas fa-download','fas fa-drafting-compass','fas fa-dragon','fas fa-draw-polygon','fas fa-drum','fas fa-drum-steelpan','fas fa-drumstick-bite','fas fa-dumbbell','fas fa-dumpster','fas fa-dumpster-fire','fas fa-dungeon','fas fa-edit','fas fa-egg','fas fa-eject','fas fa-ellipsis-h','fas fa-ellipsis-v','fas fa-envelope','fas fa-envelope-open','fas fa-envelope-open-text','fas fa-envelope-square','fas fa-equals','fas fa-eraser','fas fa-ethernet','fas fa-euro-sign','fas fa-exchange-alt','fas fa-exclamation','fas fa-exclamation-circle','fas fa-exclamation-triangle','fas fa-expand','fas fa-expand-alt','fas fa-expand-arrows-alt','fas fa-external-link-alt','fas fa-external-link-square-alt','fas fa-eye','fas fa-eye-dropper','fas fa-eye-slash','fas fa-fan','fas fa-fast-backward','fas fa-fast-forward','fas fa-fax','fas fa-feather','fas fa-feather-alt','fas fa-female','fas fa-fighter-jet','fas fa-file','fas fa-file-alt','fas fa-file-archive','fas fa-file-audio','fas fa-file-code','fas fa-file-contract','fas fa-file-csv','fas fa-file-download','fas fa-file-excel','fas fa-file-export','fas fa-file-image','fas fa-file-import','fas fa-file-invoice','fas fa-file-invoice-dollar','fas fa-file-medical','fas fa-file-medical-alt','fas fa-file-pdf','fas fa-file-powerpoint','fas fa-file-prescription','fas fa-file-signature','fas fa-file-upload','fas fa-file-video','fas fa-file-word','fas fa-fill','fas fa-fill-drip','fas fa-film','fas fa-filter','fas fa-fingerprint','fas fa-fire','fas fa-fire-alt','fas fa-fire-extinguisher','fas fa-first-aid','fas fa-fish','fas fa-fist-raised','fas fa-flag','fas fa-flag-checkered','fas fa-flag-usa','fas fa-flask','fas fa-flushed','fas fa-folder','fas fa-folder-minus','fas fa-folder-open','fas fa-folder-plus','fas fa-font','fas fa-football-ball','fas fa-forward','fas fa-frog','fas fa-frown','fas fa-frown-open','fas fa-funnel-dollar','fas fa-futbol','fas fa-gamepad','fas fa-gas-pump','fas fa-gavel','fas fa-gem','fas fa-genderless','fas fa-ghost','fas fa-gift','fas fa-gifts','fas fa-glass-cheers','fas fa-glass-martini','fas fa-glass-martini-alt','fas fa-glass-whiskey','fas fa-glasses','fas fa-globe','fas fa-globe-africa','fas fa-globe-americas','fas fa-globe-asia','fas fa-globe-europe','fas fa-golf-ball','fas fa-gopuram','fas fa-graduation-cap','fas fa-greater-than','fas fa-greater-than-equal','fas fa-grimace','fas fa-grin','fas fa-grin-alt','fas fa-grin-beam','fas fa-grin-beam-sweat','fas fa-grin-hearts','fas fa-grin-squint','fas fa-grin-squint-tears','fas fa-grin-stars','fas fa-grin-tears','fas fa-grin-tongue','fas fa-grin-tongue-squint','fas fa-grin-tongue-wink','fas fa-grin-wink','fas fa-grip-horizontal','fas fa-grip-lines','fas fa-grip-lines-vertical','fas fa-grip-vertical','fas fa-guitar','fas fa-h-square','fas fa-hamburger','fas fa-hammer','fas fa-hamsa','fas fa-hand-holding','fas fa-hand-holding-heart','fas fa-hand-holding-usd','fas fa-hand-lizard','fas fa-hand-middle-finger','fas fa-hand-paper','fas fa-hand-peace','fas fa-hand-point-down','fas fa-hand-point-left','fas fa-hand-point-right','fas fa-hand-point-up','fas fa-hand-pointer','fas fa-hand-rock','fas fa-hand-scissors','fas fa-hand-spock','fas fa-hands','fas fa-hands-helping','fas fa-handshake','fas fa-hanukiah','fas fa-hard-hat','fas fa-hashtag','fas fa-hat-cowboy','fas fa-hat-cowboy-side','fas fa-hat-wizard','fas fa-hdd','fas fa-heading','fas fa-headphones','fas fa-headphones-alt','fas fa-headset','fas fa-heart','fas fa-heart-broken','fas fa-heartbeat','fas fa-helicopter','fas fa-highlighter','fas fa-hiking','fas fa-hippo','fas fa-history','fas fa-hockey-puck','fas fa-holly-berry','fas fa-home','fas fa-horse','fas fa-horse-head','fas fa-hospital','fas fa-hospital-alt','fas fa-hospital-symbol','fas fa-hot-tub','fas fa-hotdog','fas fa-hotel','fas fa-hourglass','fas fa-hourglass-end','fas fa-hourglass-half','fas fa-hourglass-start','fas fa-house-damage','fas fa-hryvnia','fas fa-i-cursor','fas fa-ice-cream','fas fa-icicles','fas fa-icons','fas fa-id-badge','fas fa-id-card','fas fa-id-card-alt','fas fa-igloo','fas fa-image','fas fa-images','fas fa-inbox','fas fa-indent','fas fa-industry','fas fa-infinity','fas fa-info','fas fa-info-circle','fas fa-italic','fas fa-jedi','fas fa-joint','fas fa-journal-whills','fas fa-kaaba','fas fa-key','fas fa-keyboard','fas fa-khanda','fas fa-kiss','fas fa-kiss-beam','fas fa-kiss-wink-heart','fas fa-kiwi-bird','fas fa-landmark','fas fa-language','fas fa-laptop','fas fa-laptop-code','fas fa-laptop-medical','fas fa-laugh','fas fa-laugh-beam','fas fa-laugh-squint','fas fa-laugh-wink','fas fa-layer-group','fas fa-leaf','fas fa-lemon','fas fa-less-than','fas fa-less-than-equal','fas fa-level-down-alt','fas fa-level-up-alt','fas fa-life-ring','fas fa-lightbulb','fas fa-link','fas fa-lira-sign','fas fa-list','fas fa-list-alt','fas fa-list-ol','fas fa-list-ul','fas fa-location-arrow','fas fa-lock','fas fa-lock-open','fas fa-long-arrow-alt-down','fas fa-long-arrow-alt-left','fas fa-long-arrow-alt-right','fas fa-long-arrow-alt-up','fas fa-low-vision','fas fa-luggage-cart','fas fa-magic','fas fa-magnet','fas fa-mail-bulk','fas fa-male','fas fa-map','fas fa-map-marked','fas fa-map-marked-alt','fas fa-map-marker','fas fa-map-marker-alt','fas fa-map-pin','fas fa-map-signs','fas fa-marker','fas fa-mars','fas fa-mars-double','fas fa-mars-stroke','fas fa-mars-stroke-h','fas fa-mars-stroke-v','fas fa-mask','fas fa-medal','fas fa-medkit','fas fa-meh','fas fa-meh-blank','fas fa-meh-rolling-eyes','fas fa-memory','fas fa-menorah','fas fa-mercury','fas fa-meteor','fas fa-microchip','fas fa-microphone','fas fa-microphone-alt','fas fa-microphone-alt-slash','fas fa-microphone-slash','fas fa-microscope','fas fa-minus','fas fa-minus-circle','fas fa-minus-square','fas fa-mitten','fas fa-mobile','fas fa-mobile-alt','fas fa-money-bill','fas fa-money-bill-alt','fas fa-money-bill-wave','fas fa-money-bill-wave-alt','fas fa-money-check','fas fa-money-check-alt','fas fa-monument','fas fa-moon','fas fa-mortar-pestle','fas fa-mosque','fas fa-motorcycle','fas fa-mountain','fas fa-mouse','fas fa-mouse-pointer','fas fa-mug-hot','fas fa-music','fas fa-network-wired','fas fa-neuter','fas fa-newspaper','fas fa-not-equal','fas fa-notes-medical','fas fa-object-group','fas fa-object-ungroup','fas fa-oil-can','fas fa-om','fas fa-otter','fas fa-outdent','fas fa-pager','fas fa-paint-brush','fas fa-paint-roller','fas fa-palette','fas fa-pallet','fas fa-paper-plane','fas fa-paperclip','fas fa-parachute-box','fas fa-paragraph','fas fa-parking','fas fa-passport','fas fa-pastafarianism','fas fa-paste','fas fa-pause','fas fa-pause-circle','fas fa-paw','fas fa-peace','fas fa-pen','fas fa-pen-alt','fas fa-pen-fancy','fas fa-pen-nib','fas fa-pen-square','fas fa-pencil-alt','fas fa-pencil-ruler','fas fa-people-carry','fas fa-pepper-hot','fas fa-percent','fas fa-percentage','fas fa-person-booth','fas fa-phone','fas fa-phone-alt','fas fa-phone-slash','fas fa-phone-square','fas fa-phone-square-alt','fas fa-phone-volume','fas fa-photo-video','fas fa-piggy-bank','fas fa-pills','fas fa-pizza-slice','fas fa-place-of-worship','fas fa-plane','fas fa-plane-arrival','fas fa-plane-departure','fas fa-play','fas fa-play-circle','fas fa-plug','fas fa-plus','fas fa-plus-circle','fas fa-plus-square','fas fa-podcast','fas fa-poll','fas fa-poll-h','fas fa-poo','fas fa-poo-storm','fas fa-poop','fas fa-portrait','fas fa-pound-sign','fas fa-power-off','fas fa-pray','fas fa-praying-hands','fas fa-prescription','fas fa-prescription-bottle','fas fa-prescription-bottle-alt','fas fa-print','fas fa-procedures','fas fa-project-diagram','fas fa-puzzle-piece','fas fa-qrcode','fas fa-question','fas fa-question-circle','fas fa-quidditch','fas fa-quote-left','fas fa-quote-right','fas fa-quran','fas fa-radiation','fas fa-radiation-alt','fas fa-rainbow','fas fa-random','fas fa-receipt','fas fa-record-vinyl','fas fa-recycle','fas fa-redo','fas fa-redo-alt','fas fa-registered','fas fa-remove-format','fas fa-reply','fas fa-reply-all','fas fa-republican','fas fa-restroom','fas fa-retweet','fas fa-ribbon','fas fa-ring','fas fa-road','fas fa-robot','fas fa-rocket','fas fa-route','fas fa-rss','fas fa-rss-square','fas fa-ruble-sign','fas fa-ruler','fas fa-ruler-combined','fas fa-ruler-horizontal','fas fa-ruler-vertical','fas fa-running','fas fa-rupee-sign','fas fa-sad-cry','fas fa-sad-tear','fas fa-satellite','fas fa-satellite-dish','fas fa-save','fas fa-school','fas fa-screwdriver','fas fa-scroll','fas fa-sd-card','fas fa-search','fas fa-search-dollar','fas fa-search-location','fas fa-search-minus','fas fa-search-plus','fas fa-seedling','fas fa-server','fas fa-shapes','fas fa-share','fas fa-share-alt','fas fa-share-alt-square','fas fa-share-square','fas fa-shekel-sign','fas fa-shield-alt','fas fa-ship','fas fa-shipping-fast','fas fa-shoe-prints','fas fa-shopping-bag','fas fa-shopping-basket','fas fa-shopping-cart','fas fa-shower','fas fa-shuttle-van','fas fa-sign','fas fa-sign-in-alt','fas fa-sign-language','fas fa-sign-out-alt','fas fa-signal','fas fa-signature','fas fa-sim-card','fas fa-sitemap','fas fa-skating','fas fa-skiing','fas fa-skiing-nordic','fas fa-skull','fas fa-skull-crossbones','fas fa-slash','fas fa-sleigh','fas fa-sliders-h','fas fa-smile','fas fa-smile-beam','fas fa-smile-wink','fas fa-smog','fas fa-smoking','fas fa-smoking-ban','fas fa-sms','fas fa-snowboarding','fas fa-snowflake','fas fa-snowman','fas fa-snowplow','fas fa-socks','fas fa-solar-panel','fas fa-sort','fas fa-sort-alpha-down','fas fa-sort-alpha-down-alt','fas fa-sort-alpha-up','fas fa-sort-alpha-up-alt','fas fa-sort-amount-down','fas fa-sort-amount-down-alt','fas fa-sort-amount-up','fas fa-sort-amount-up-alt','fas fa-sort-down','fas fa-sort-numeric-down','fas fa-sort-numeric-down-alt','fas fa-sort-numeric-up','fas fa-sort-numeric-up-alt','fas fa-sort-up','fas fa-spa','fas fa-space-shuttle','fas fa-spell-check','fas fa-spider','fas fa-spinner','fas fa-splotch','fas fa-spray-can','fas fa-square','fas fa-square-full','fas fa-square-root-alt','fas fa-stamp','fas fa-star','fas fa-star-and-crescent','fas fa-star-half','fas fa-star-half-alt','fas fa-star-of-david','fas fa-star-of-life','fas fa-step-backward','fas fa-step-forward','fas fa-stethoscope','fas fa-sticky-note','fas fa-stop','fas fa-stop-circle','fas fa-stopwatch','fas fa-store','fas fa-store-alt','fas fa-stream','fas fa-street-view','fas fa-strikethrough','fas fa-stroopwafel','fas fa-subscript','fas fa-subway','fas fa-suitcase','fas fa-suitcase-rolling','fas fa-sun','fas fa-superscript','fas fa-surprise','fas fa-swatchbook','fas fa-swimmer','fas fa-swimming-pool','fas fa-synagogue','fas fa-sync','fas fa-sync-alt','fas fa-syringe','fas fa-table','fas fa-table-tennis','fas fa-tablet','fas fa-tablet-alt','fas fa-tablets','fas fa-tachometer-alt','fas fa-tag','fas fa-tags','fas fa-tape','fas fa-tasks','fas fa-taxi','fas fa-teeth','fas fa-teeth-open','fas fa-temperature-high','fas fa-temperature-low','fas fa-tenge','fas fa-terminal','fas fa-text-height','fas fa-text-width','fas fa-th','fas fa-th-large','fas fa-th-list','fas fa-theater-masks','fas fa-thermometer','fas fa-thermometer-empty','fas fa-thermometer-full','fas fa-thermometer-half','fas fa-thermometer-quarter','fas fa-thermometer-three-quarters','fas fa-thumbs-down','fas fa-thumbs-up','fas fa-thumbtack','fas fa-ticket-alt','fas fa-times','fas fa-times-circle','fas fa-tint','fas fa-tint-slash','fas fa-tired','fas fa-toggle-off','fas fa-toggle-on','fas fa-toilet','fas fa-toilet-paper','fas fa-toolbox','fas fa-tools','fas fa-tooth','fas fa-torah','fas fa-torii-gate','fas fa-tractor','fas fa-trademark','fas fa-traffic-light','fas fa-trailer','fas fa-train','fas fa-tram','fas fa-transgender','fas fa-transgender-alt','fas fa-trash','fas fa-trash-alt','fas fa-trash-restore','fas fa-trash-restore-alt','fas fa-tree','fas fa-trophy','fas fa-truck','fas fa-truck-loading','fas fa-truck-monster','fas fa-truck-moving','fas fa-truck-pickup','fas fa-tshirt','fas fa-tty','fas fa-tv','fas fa-umbrella','fas fa-umbrella-beach','fas fa-underline','fas fa-undo','fas fa-undo-alt','fas fa-universal-access','fas fa-university','fas fa-unlink','fas fa-unlock','fas fa-unlock-alt','fas fa-upload','fas fa-user','fas fa-user-alt','fas fa-user-alt-slash','fas fa-user-astronaut','fas fa-user-check','fas fa-user-circle','fas fa-user-clock','fas fa-user-cog','fas fa-user-edit','fas fa-user-friends','fas fa-user-graduate','fas fa-user-injured','fas fa-user-lock','fas fa-user-md','fas fa-user-minus','fas fa-user-ninja','fas fa-user-nurse','fas fa-user-plus','fas fa-user-secret','fas fa-user-shield','fas fa-user-slash','fas fa-user-tag','fas fa-user-tie','fas fa-user-times','fas fa-users','fas fa-users-cog','fas fa-utensil-spoon','fas fa-utensils','fas fa-vector-square','fas fa-venus','fas fa-venus-double','fas fa-venus-mars','fas fa-vial','fas fa-vials','fas fa-video','fas fa-video-slash','fas fa-vihara','fas fa-voicemail','fas fa-volleyball-ball','fas fa-volume-down','fas fa-volume-mute','fas fa-volume-off','fas fa-volume-up','fas fa-vote-yea','fas fa-vr-cardboard','fas fa-walking','fas fa-wallet','fas fa-warehouse','fas fa-water','fas fa-wave-square','fas fa-weight','fas fa-weight-hanging','fas fa-wheelchair','fas fa-wifi','fas fa-wind','fas fa-window-close','fas fa-window-maximize','fas fa-window-minimize','fas fa-window-restore','fas fa-wine-bottle','fas fa-wine-glass','fas fa-wine-glass-alt','fas fa-won-sign','fas fa-wrench','fas fa-x-ray','fas fa-yen-sign','fas fa-yin-yang','far fa-address-book','far fa-address-card','far fa-angry','far fa-arrow-alt-circle-down','far fa-arrow-alt-circle-left','far fa-arrow-alt-circle-right','far fa-arrow-alt-circle-up','far fa-bell','far fa-bell-slash','far fa-bookmark','far fa-building','far fa-calendar','far fa-calendar-alt','far fa-calendar-check','far fa-calendar-minus','far fa-calendar-plus','far fa-calendar-times','far fa-caret-square-down','far fa-caret-square-left','far fa-caret-square-right','far fa-caret-square-up','far fa-chart-bar','far fa-check-circle','far fa-check-square','far fa-circle','far fa-clipboard','far fa-clock','far fa-clone','far fa-closed-captioning','far fa-comment','far fa-comment-alt','far fa-comment-dots','far fa-comments','far fa-compass','far fa-copy','far fa-copyright','far fa-credit-card','far fa-dizzy','far fa-dot-circle','far fa-edit','far fa-envelope','far fa-envelope-open','far fa-eye','far fa-eye-slash','far fa-file','far fa-file-alt','far fa-file-archive','far fa-file-audio','far fa-file-code','far fa-file-excel','far fa-file-image','far fa-file-pdf','far fa-file-powerpoint','far fa-file-video','far fa-file-word','far fa-flag','far fa-flushed','far fa-folder','far fa-folder-open','far fa-frown','far fa-frown-open','far fa-futbol','far fa-gem','far fa-grimace','far fa-grin','far fa-grin-alt','far fa-grin-beam','far fa-grin-beam-sweat','far fa-grin-hearts','far fa-grin-squint','far fa-grin-squint-tears','far fa-grin-stars','far fa-grin-tears','far fa-grin-tongue','far fa-grin-tongue-squint','far fa-grin-tongue-wink','far fa-grin-wink','far fa-hand-lizard','far fa-hand-paper','far fa-hand-peace','far fa-hand-point-down','far fa-hand-point-left','far fa-hand-point-right','far fa-hand-point-up','far fa-hand-pointer','far fa-hand-rock','far fa-hand-scissors','far fa-hand-spock','far fa-handshake','far fa-hdd','far fa-heart','far fa-hospital','far fa-hourglass','far fa-id-badge','far fa-id-card','far fa-image','far fa-images','far fa-keyboard','far fa-kiss','far fa-kiss-beam','far fa-kiss-wink-heart','far fa-laugh','far fa-laugh-beam','far fa-laugh-squint','far fa-laugh-wink','far fa-lemon','far fa-life-ring','far fa-lightbulb','far fa-list-alt','far fa-map','far fa-meh','far fa-meh-blank','far fa-meh-rolling-eyes','far fa-minus-square','far fa-money-bill-alt','far fa-moon','far fa-newspaper','far fa-object-group','far fa-object-ungroup','far fa-paper-plane','far fa-pause-circle','far fa-play-circle','far fa-plus-square','far fa-question-circle','far fa-registered','far fa-sad-cry','far fa-sad-tear','far fa-save','far fa-share-square','far fa-smile','far fa-smile-beam','far fa-smile-wink','far fa-snowflake','far fa-square','far fa-star','far fa-star-half','far fa-sticky-note','far fa-stop-circle','far fa-sun','far fa-surprise','far fa-thumbs-down','far fa-thumbs-up','far fa-times-circle','far fa-tired','far fa-trash-alt','far fa-user','far fa-user-circle','far fa-window-close','far fa-window-maximize','far fa-window-minimize','far fa-window-restore','fab fa-500px','fab fa-accessible-icon','fab fa-accusoft','fab fa-acquisitions-incorporated','fab fa-adn','fab fa-adobe','fab fa-adversal','fab fa-affiliatetheme','fab fa-airbnb','fab fa-algolia','fab fa-alipay','fab fa-amazon','fab fa-amazon-pay','fab fa-amilia','fab fa-android','fab fa-angellist','fab fa-angrycreative','fab fa-angular','fab fa-app-store','fab fa-app-store-ios','fab fa-apper','fab fa-apple','fab fa-apple-pay','fab fa-artstation','fab fa-asymmetrik','fab fa-atlassian','fab fa-audible','fab fa-autoprefixer','fab fa-avianex','fab fa-aviato','fab fa-aws','fab fa-bandcamp','fab fa-battle-net','fab fa-behance','fab fa-behance-square','fab fa-bimobject','fab fa-bitbucket','fab fa-bitcoin','fab fa-bity','fab fa-black-tie','fab fa-blackberry','fab fa-blogger','fab fa-blogger-b','fab fa-bluetooth','fab fa-bluetooth-b','fab fa-bootstrap','fab fa-btc','fab fa-buffer','fab fa-buromobelexperte','fab fa-buy-n-large','fab fa-buysellads','fab fa-canadian-maple-leaf','fab fa-cc-amazon-pay','fab fa-cc-amex','fab fa-cc-apple-pay','fab fa-cc-diners-club','fab fa-cc-discover','fab fa-cc-jcb','fab fa-cc-mastercard','fab fa-cc-paypal','fab fa-cc-stripe','fab fa-cc-visa','fab fa-centercode','fab fa-centos','fab fa-chrome','fab fa-chromecast','fab fa-cloudscale','fab fa-cloudsmith','fab fa-cloudversify','fab fa-codepen','fab fa-codiepie','fab fa-confluence','fab fa-connectdevelop','fab fa-contao','fab fa-cotton-bureau','fab fa-cpanel','fab fa-creative-commons','fab fa-creative-commons-by','fab fa-creative-commons-nc','fab fa-creative-commons-nc-eu','fab fa-creative-commons-nc-jp','fab fa-creative-commons-nd','fab fa-creative-commons-pd','fab fa-creative-commons-pd-alt','fab fa-creative-commons-remix','fab fa-creative-commons-sa','fab fa-creative-commons-sampling','fab fa-creative-commons-sampling-plus','fab fa-creative-commons-share','fab fa-creative-commons-zero','fab fa-critical-role','fab fa-css3','fab fa-css3-alt','fab fa-cuttlefish','fab fa-d-and-d','fab fa-d-and-d-beyond','fab fa-dailymotion','fab fa-dashcube','fab fa-delicious','fab fa-deploydog','fab fa-deskpro','fab fa-dev','fab fa-deviantart','fab fa-dhl','fab fa-diaspora','fab fa-digg','fab fa-digital-ocean','fab fa-discord','fab fa-discourse','fab fa-dochub','fab fa-docker','fab fa-draft2digital','fab fa-dribbble','fab fa-dribbble-square','fab fa-dropbox','fab fa-drupal','fab fa-dyalog','fab fa-earlybirds','fab fa-ebay','fab fa-edge','fab fa-elementor','fab fa-ello','fab fa-ember','fab fa-empire','fab fa-envira','fab fa-erlang','fab fa-ethereum','fab fa-etsy','fab fa-evernote','fab fa-expeditedssl','fab fa-facebook','fab fa-facebook-f','fab fa-facebook-messenger','fab fa-facebook-square','fab fa-fantasy-flight-games','fab fa-fedex','fab fa-fedora','fab fa-figma','fab fa-firefox','fab fa-firefox-browser','fab fa-first-order','fab fa-first-order-alt','fab fa-firstdraft','fab fa-flickr','fab fa-flipboard','fab fa-fly','fab fa-font-awesome','fab fa-font-awesome-alt','fab fa-font-awesome-flag','fab fa-fonticons','fab fa-fonticons-fi','fab fa-fort-awesome','fab fa-fort-awesome-alt','fab fa-forumbee','fab fa-foursquare','fab fa-free-code-camp','fab fa-freebsd','fab fa-fulcrum','fab fa-galactic-republic','fab fa-galactic-senate','fab fa-get-pocket','fab fa-gg','fab fa-gg-circle','fab fa-git','fab fa-git-alt','fab fa-git-square','fab fa-github','fab fa-github-alt','fab fa-github-square','fab fa-gitkraken','fab fa-gitlab','fab fa-gitter','fab fa-glide','fab fa-glide-g','fab fa-gofore','fab fa-goodreads','fab fa-goodreads-g','fab fa-google','fab fa-google-drive','fab fa-google-play','fab fa-google-plus','fab fa-google-plus-g','fab fa-google-plus-square','fab fa-google-wallet','fab fa-gratipay','fab fa-grav','fab fa-gripfire','fab fa-grunt','fab fa-gulp','fab fa-hacker-news','fab fa-hacker-news-square','fab fa-hackerrank','fab fa-hips','fab fa-hire-a-helper','fab fa-hooli','fab fa-hornbill','fab fa-hotjar','fab fa-houzz','fab fa-html5','fab fa-hubspot','fab fa-ideal','fab fa-imdb','fab fa-instagram','fab fa-instagram-square','fab fa-intercom','fab fa-internet-explorer','fab fa-invision','fab fa-ioxhost','fab fa-itch-io','fab fa-itunes','fab fa-itunes-note','fab fa-java','fab fa-jedi-order','fab fa-jenkins','fab fa-jira','fab fa-joget','fab fa-joomla','fab fa-js','fab fa-js-square','fab fa-jsfiddle','fab fa-kaggle','fab fa-keybase','fab fa-keycdn','fab fa-kickstarter','fab fa-kickstarter-k','fab fa-korvue','fab fa-laravel','fab fa-lastfm','fab fa-lastfm-square','fab fa-leanpub','fab fa-less','fab fa-line','fab fa-linkedin','fab fa-linkedin-in','fab fa-linode','fab fa-linux','fab fa-lyft','fab fa-magento','fab fa-mailchimp','fab fa-mandalorian','fab fa-markdown','fab fa-mastodon','fab fa-maxcdn','fab fa-mdb','fab fa-medapps','fab fa-medium','fab fa-medium-m','fab fa-medrt','fab fa-meetup','fab fa-megaport','fab fa-mendeley','fab fa-microblog','fab fa-microsoft','fab fa-mix','fab fa-mixcloud','fab fa-mixer','fab fa-mizuni','fab fa-modx','fab fa-monero','fab fa-napster','fab fa-neos','fab fa-nimblr','fab fa-node','fab fa-node-js','fab fa-npm','fab fa-ns8','fab fa-nutritionix','fab fa-odnoklassniki','fab fa-odnoklassniki-square','fab fa-old-republic','fab fa-opencart','fab fa-openid','fab fa-opera','fab fa-optin-monster','fab fa-orcid','fab fa-osi','fab fa-page4','fab fa-pagelines','fab fa-palfed','fab fa-patreon','fab fa-paypal','fab fa-penny-arcade','fab fa-periscope','fab fa-phabricator','fab fa-phoenix-framework','fab fa-phoenix-squadron','fab fa-php','fab fa-pied-piper','fab fa-pied-piper-alt','fab fa-pied-piper-hat','fab fa-pied-piper-pp','fab fa-pied-piper-square','fab fa-pinterest','fab fa-pinterest-p','fab fa-pinterest-square','fab fa-playstation','fab fa-product-hunt','fab fa-pushed','fab fa-python','fab fa-qq','fab fa-quinscape','fab fa-quora','fab fa-r-project','fab fa-raspberry-pi','fab fa-ravelry','fab fa-react','fab fa-reacteurope','fab fa-readme','fab fa-rebel','fab fa-red-river','fab fa-reddit','fab fa-reddit-alien','fab fa-reddit-square','fab fa-redhat','fab fa-renren','fab fa-replyd','fab fa-researchgate','fab fa-resolving','fab fa-rev','fab fa-rocketchat','fab fa-rockrms','fab fa-safari','fab fa-salesforce','fab fa-sass','fab fa-schlix','fab fa-scribd','fab fa-searchengin','fab fa-sellcast','fab fa-sellsy','fab fa-servicestack','fab fa-shirtsinbulk','fab fa-shopify','fab fa-shopware','fab fa-simplybuilt','fab fa-sistrix','fab fa-sith','fab fa-sketch','fab fa-skyatlas','fab fa-skype','fab fa-slack','fab fa-slack-hash','fab fa-slideshare','fab fa-snapchat','fab fa-snapchat-ghost','fab fa-snapchat-square','fab fa-soundcloud','fab fa-sourcetree','fab fa-speakap','fab fa-speaker-deck','fab fa-spotify','fab fa-squarespace','fab fa-stack-exchange','fab fa-stack-overflow','fab fa-stackpath','fab fa-staylinked','fab fa-steam','fab fa-steam-square','fab fa-steam-symbol','fab fa-sticker-mule','fab fa-strava','fab fa-stripe','fab fa-stripe-s','fab fa-studiovinari','fab fa-stumbleupon','fab fa-stumbleupon-circle','fab fa-superpowers','fab fa-supple','fab fa-suse','fab fa-swift','fab fa-symfony','fab fa-teamspeak','fab fa-telegram','fab fa-telegram-plane','fab fa-tencent-weibo','fab fa-the-red-yeti','fab fa-themeco','fab fa-themeisle','fab fa-think-peaks','fab fa-trade-federation','fab fa-trello','fab fa-tripadvisor','fab fa-tumblr','fab fa-tumblr-square','fab fa-twitch','fab fa-twitter','fab fa-twitter-square','fab fa-typo3','fab fa-uber','fab fa-ubuntu','fab fa-uikit','fab fa-umbraco','fab fa-uniregistry','fab fa-unity','fab fa-untappd','fab fa-ups','fab fa-usb','fab fa-usps','fab fa-ussunnah','fab fa-vaadin','fab fa-viacoin','fab fa-viadeo','fab fa-viadeo-square','fab fa-viber','fab fa-vimeo','fab fa-vimeo-square','fab fa-vimeo-v','fab fa-vine','fab fa-vk','fab fa-vnv','fab fa-vuejs','fab fa-waze','fab fa-weebly','fab fa-weibo','fab fa-weixin','fab fa-whatsapp','fab fa-whatsapp-square','fab fa-whmcs','fab fa-wikipedia-w','fab fa-windows','fab fa-wix','fab fa-wizards-of-the-coast','fab fa-wolf-pack-battalion','fab fa-wordpress','fab fa-wordpress-simple','fab fa-wpbeginner','fab fa-wpexplorer','fab fa-wpforms','fab fa-wpressr','fab fa-xbox','fab fa-xing','fab fa-xing-square','fab fa-y-combinator','fab fa-yahoo','fab fa-yammer','fab fa-yandex','fab fa-yandex-international','fab fa-yarn','fab fa-yelp','fab fa-yoast','fab fa-youtube','fab fa-youtube-square','fab fa-zhihu']","import Modal from 'flarum/components/Modal';\nimport ChatSearchUser from './ChatSearchUser';\nimport Stream from 'flarum/utils/Stream';\nimport classList from 'flarum/utils/classList';\nimport { fa5IconsList } from '../resources';\nimport highlight from 'flarum/helpers/highlight';\n\nexport default class ChatModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n\n app.search.neonchat = { usersSelected: [] };\n this.usersSelected = app.search.neonchat.usersSelected;\n\n this.input = {\n title: Stream(''),\n color: Stream(''),\n icon: Stream(''),\n iconState: {\n matches: [],\n lastInput: null,\n },\n };\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n app.search.neonchat = null;\n }\n\n getInput() {\n return this.input;\n }\n\n setSelectedUsers(users) {\n app.search.neonchat.usersSelected = users;\n this.usersSelected = app.search.neonchat.usersSelected;\n }\n\n getSelectedUsers() {\n return this.usersSelected;\n }\n\n className() {\n return 'ChatModal Modal--small';\n }\n\n isChatExists() {\n return this.getSelectedUsers().length === 1 && app.chat.isExistsPMChat(app.session.user, this.getSelectedUsers()[0]);\n }\n\n alertText() {\n if (this.isChatExists()) return app.translator.trans('xelson-chat.forum.chat.list.add_modal.alerts.exists');\n\n return null;\n }\n\n componentAlert() {\n return !this.alertText() ? null : {this.alertText()}
;\n }\n\n componentFormUsersSelect(label = 'xelson-chat.forum.chat.list.add_modal.form.users') {\n return [{app.translator.trans(label)} , this.componentUsersSelect()];\n }\n\n userMentionContent(user) {\n return '@' + user.displayName();\n }\n\n userMentionClassname(user) {\n return 'deletable';\n }\n\n userMentionOnClick(event, user) {\n return this.getSelectedUsers().splice(this.getSelectedUsers().indexOf(user), 1);\n }\n\n componentUsersMentions() {\n return (\n \n {this.getSelectedUsers().map((u) => (\n
\n {this.userMentionContent(u)}\n
\n ))}\n
\n );\n }\n\n componentUsersSelect() {\n return [\n this.componentAlert(),\n this.componentUsersMentions(),\n \n \n
,\n ];\n }\n\n componentFormIcon(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ?
{options.desc} : null}\n
\n (this.inputIconHasFocus = true)}\n onclick={() => (this.inputIconHasFocus = true)}\n onkeypress={(e) => (this.inputIconHasFocus = !(e.keyCode == 13))}\n />\n \n \n \n {this.inputIconHasFocus ? this.dropdownIconMatches(this.input.icon()) : null}\n
\n
,\n ];\n }\n\n componentFormColor(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ?
{options.desc} : null}\n
\n \n \n
\n
,\n ];\n }\n\n dropdownIconMatches(search) {\n let inputIcon = this.input.icon();\n let iconState = this.input.iconState;\n\n if (inputIcon !== iconState.lastInput) {\n iconState.matches = fa5IconsList.filter((icon) => icon.includes(inputIcon));\n if (iconState.matches.length > 5) iconState.matches = iconState.matches.sort((a, b) => 0.5 - Math.random());\n\n iconState.lastInput = inputIcon;\n }\n\n return inputIcon.length && iconState.matches.length > 0 && !(iconState.matches.length == 1 && iconState.matches[0] === inputIcon) ? (\n \n Font Awesome 5 \n {iconState.matches.slice(-5).map((icon) => (\n this.input.icon(icon)}>\n \n \n \n {highlight(icon, inputIcon)} \n \n ))}\n \n ) : null;\n }\n\n formInputOnUpdate(vnode) {\n $('.Chat-FullColor').css({ color: this.input.color(), backgroundColor: this.input.color() });\n }\n\n componentFormInput(options) {\n return [\n options.title ? {options.title} : null,\n \n {options.desc ? {options.desc} : null}\n \n
,\n ];\n }\n}\n","import Button from 'flarum/components/Button';\nimport Dropdown from 'flarum/components/Dropdown';\nimport classList from 'flarum/utils/classList';\nimport Model from 'flarum/Model';\nimport Group from 'flarum/models/Group';\n\nimport ChatModal from './ChatModal';\nimport Stream from 'flarum/utils/Stream';\n\nexport default class ChatEditModal extends ChatModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.getInput().title = Stream(this.model.title());\n this.getInput().color = Stream(this.model.color());\n this.getInput().icon = Stream(this.model.icon());\n\n this.deleteChatTitleInput = Stream('');\n this.deleteState = 0;\n\n this.initialUsers = this.model.users().filter((mdl) => !mdl.chat_pivot(this.model.id()).removed_at());\n this.setSelectedUsers(this.model.users().filter((mdl) => !mdl.chat_pivot(this.model.id()).removed_at()));\n this.edited = {};\n\n this.isLocalModerator = this.isModer(app.session.user);\n this.isLocalLeaved = !this.initialUsers.includes(app.session.user);\n }\n\n title() {\n return app.translator.trans('xelson-chat.forum.chat.edit_modal.title');\n }\n\n onsubmit() {\n let added = this.getSelectedUsers()\n .map((mdl) => (!this.initialUsers.includes(mdl) ? Model.getIdentifier(mdl) : null))\n .filter((e) => e);\n let removed = this.initialUsers.map((mdl) => (!this.getSelectedUsers().includes(mdl) ? Model.getIdentifier(mdl) : null)).filter((e) => e);\n let edited = Object.keys(this.edited).map((k) => (this.edited[k] = { id: k, ...this.edited[k] }));\n\n this.model.save({\n title: this.getInput().title(),\n color: this.getInput().color(),\n icon: this.getInput().icon(),\n users: { added, removed, edited },\n relationships: { users: this.getSelectedUsers() },\n });\n\n this.hide();\n }\n\n alertText() {\n return null;\n }\n\n isModer(user) {\n if (!user) return false;\n if (this.edited[user.id()]?.role ?? user.chat_pivot(this.model.id()).role()) return true;\n if (this.isCreator(user)) return true;\n\n return false;\n }\n\n isCreator(user) {\n return (\n user.chat_pivot(this.model.id()).role() == 2 ||\n (!this.model.creator() && user.groups() && user.groups().some((g) => g.id() == Group.ADMINISTRATOR_ID))\n );\n }\n\n userMentionClassname(user) {\n return classList({ editable: true, moder: this.isModer(user), creator: this.isCreator(user) });\n }\n\n userMentionDropdownOnclick(user, button) {\n switch (button) {\n case 'moder': {\n if (this.isModer(user)) this.edited[user.id()] = { role: 0 };\n else this.edited[user.id()] = { role: 1 };\n\n break;\n }\n case 'kick': {\n this.getSelectedUsers().splice(this.getSelectedUsers().indexOf(user), 1);\n break;\n }\n }\n }\n\n componentUserMentionDropdown(user) {\n return (\n \n \n {app.translator.trans('xelson-chat.forum.chat.moder')}\n \n = this.isLocalModerator && user != app.session.user}\n >\n {app.translator.trans(`xelson-chat.forum.chat.${user == app.session.user ? 'leave' : 'kick'}`)}\n \n \n );\n }\n\n userMentionContent(user) {\n return ['@' + user.displayName(), this.isLocalModerator && !app.chat.isChatPM(this.model) ? this.componentUserMentionDropdown(user) : null];\n }\n\n userMentionOnClick(user, e) {\n this.$(e.target).find('.Dropdown').trigger('shown.bs.dropdown');\n }\n\n componentFormInputIcon() {\n return this.componentFormIcon({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.icon.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.icon.validator', {\n a: ,\n }),\n stream: this.getInput().icon,\n placeholder: 'fas fa-bolt',\n });\n }\n\n componentFormInputTitle() {\n return this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.title.label'),\n });\n }\n\n componentFormInputColor() {\n return this.componentFormColor({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.validator'),\n stream: this.getInput().color,\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.color.label'),\n });\n }\n\n componentChatInfo() {\n return [\n \n {this.model.title()} \n ,\n this.componentUsersMentions(),\n ];\n }\n\n componentFormPM() {\n return this.componentChatInfo();\n }\n\n componentFormChannel() {\n return this.isLocalModerator\n ? [\n this.componentFormInputTitle(),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n this.componentFormUsersSelect('xelson-chat.forum.chat.edit_modal.form.users.edit'),\n ]\n : this.componentChatInfo();\n }\n\n componentFormChat() {\n return this.isLocalModerator\n ? [this.componentFormInputTitle(), this.componentFormInputColor(), this.componentFormInputIcon(), this.componentFormUsersSelect()]\n : this.componentChatInfo();\n }\n\n componentForm() {\n if (this.model.type()) return this.componentFormChannel();\n if (app.chat.isChatPM(this.model)) return this.componentFormPM();\n\n return this.componentFormChat();\n }\n\n componentFormButtons() {\n let buttons = [];\n\n if (this.isLocalModerator && !app.chat.isChatPM(this.model))\n buttons.push(\n \n {app.translator.trans('xelson-chat.forum.chat.edit_modal.save_button')}\n \n );\n\n buttons.push(\n \n {app.translator.trans(`xelson-chat.forum.chat.edit_modal.form.${this.isLocalLeaved ? 'return' : 'leave'}`)}\n \n );\n\n if (!app.chat.isChatPM(this.model) && app.chat.getPermissions().create.channel) buttons.push(this.componentDeleteChat());\n\n return buttons;\n }\n\n onleave() {\n if (!this.isLocalLeaved) {\n this.model\n .save({\n users: { removed: [Model.getIdentifier(app.session.user)] },\n relationships: { users: this.getSelectedUsers() },\n })\n .then((e) => m.redraw());\n } else {\n this.getSelectedUsers().push(app.session.user);\n\n this.model\n .save({\n users: { added: [Model.getIdentifier(app.session.user)] },\n relationships: { users: this.getSelectedUsers() },\n })\n .then((e) => m.redraw());\n }\n\n this.hide();\n }\n\n isCanEditChannel() {\n return this.getInput().title().length;\n }\n\n isCanEditChat() {\n if (this.alertText()) return false;\n\n return true;\n }\n\n componentDeleteChat() {\n return [\n this.deleteState == 1\n ? [\n ,\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.title'),\n desc: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.desc'),\n placeholder: app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.placeholder'),\n stream: this.deleteChatTitleInput,\n }),\n ]\n : null,\n \n {app.translator.trans('xelson-chat.forum.chat.edit_modal.form.delete.button')}\n ,\n ];\n }\n\n isValidTitleCopy() {\n return this.deleteChatTitleInput() == this.model.title();\n }\n\n ondelete() {\n switch (this.deleteState) {\n case 0: {\n this.deleteState = 1;\n break;\n }\n case 1: {\n if (this.isValidTitleCopy()) {\n app.chat.deleteChat(this.model);\n this.model.delete();\n\n this.hide();\n }\n break;\n }\n }\n }\n\n content() {\n return (\n \n );\n }\n}\n","import Component from 'flarum/Component';\nimport Link from 'flarum/components/Link';\nimport ItemList from 'flarum/utils/ItemList';\n\nimport ChatEditModal from './ChatEditModal';\n\nexport default class ChatHeader extends Component {\n view(vnode) {\n const attrs = {};\n\n if (this.attrs.ondragstart) attrs.ondragstart = this.attrs.ondragstart;\n if (this.attrs.ondragstart) attrs.onmousedown = this.attrs.onmousedown;\n\n return (\n \n {this.attrs.showChatListStream ? (\n
{\n this.attrs.showChatListStream(!this.attrs.showChatListStream());\n e.stopPropagation();\n }}\n >\n \n
\n ) : (\n ''\n )}\n
\n {app.chat.getCurrentChat()\n ? [\n app.chat.getCurrentChat().icon() ? (\n \n ) : null,\n app.chat.getCurrentChat().title(),\n ]\n : app.translator.trans('xelson-chat.forum.toolbar.title')}\n \n {!app.chat.getCurrentChat() || !app.session.user ? null : (\n
app.modal.show(ChatEditModal, { model: app.chat.getCurrentChat() })}\n >\n \n
\n )}\n
{this.windowButtonItems().toArray()}
\n
\n );\n }\n\n windowButtonItems() {\n const items = new ItemList();\n\n items.add(\n 'sound',\n \n \n
\n );\n\n items.add(\n 'notifications',\n \n \n
\n );\n\n if (this.attrs.inFrame) {\n items.add(\n 'minimize',\n \n \n
\n );\n }\n\n /*\n if (this.attrs.inFrame && app.screen() === 'phone') {\n items.add(\n 'fullscreen',\n \n \n \n );\n }\n */\n\n return items;\n }\n\n toggleChat(e) {\n const showing = !app.chat.getFrameState('beingShown');\n\n app.chat.saveFrameState('beingShown', showing);\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n toggleSound(e) {\n app.chat.saveFrameState('isMuted', !app.chat.getFrameState('isMuted'));\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n toggleNotifications(e) {\n app.chat.saveFrameState('notify', !app.chat.getFrameState('notify'));\n if ('Notification' in window && app.chat.getFrameState('notify')) Notification.requestPermission();\n\n e.preventDefault();\n e.stopPropagation();\n }\n}\n","import Button from 'flarum/components/Button';\nimport classList from 'flarum/utils/classList';\n\nimport ChatSearchUser from './ChatSearchUser';\nimport ChatModal from './ChatModal';\nimport Stream from 'flarum/utils/Stream';\n\nexport default class ChatCreateModal extends ChatModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.isChannel = false;\n }\n\n title() {\n return app.translator.trans('xelson-chat.forum.chat.list.add_modal.title');\n }\n\n onsubmit() {\n app.store\n .createRecord('chats')\n .save({\n title: this.getInput().title(),\n isChannel: this.isChannel,\n icon: this.getInput().icon(),\n color: this.getInput().color(),\n relationships: { users: [...this.getSelectedUsers(), app.session.user] },\n })\n .then((model) => {\n app.chat.addChat(model);\n app.chat.onChatChanged(model);\n m.redraw();\n });\n this.hide();\n }\n\n componentFormInputColor() {\n return this.componentFormColor({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.validator'),\n stream: this.getInput().color,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.color.label'),\n });\n }\n\n componentFormInputIcon() {\n return this.componentFormIcon({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.icon.label'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.icon.validator', {\n a: ,\n }),\n stream: this.getInput().icon,\n placeholder: 'fas fa-bolt',\n });\n }\n\n componentFormChat() {\n return [\n this.usersSelected.length > 1\n ? [\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.chat'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.chat'),\n }),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n ]\n : null,\n this.componentFormUsersSelect(),\n ];\n }\n\n componentFormChannel() {\n return [\n this.componentFormInput({\n title: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.channel'),\n desc: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.validator'),\n stream: this.getInput().title,\n placeholder: app.translator.trans('xelson-chat.forum.chat.list.add_modal.form.title.channel'),\n }),\n this.componentFormInputColor(),\n this.componentFormInputIcon(),\n ];\n }\n\n isCanCreateChat() {\n if (this.getSelectedUsers().length > 1 && !this.getInput().title().length) return false;\n if (!this.getSelectedUsers().length) return false;\n if (this.alertText()) return false;\n\n return true;\n }\n\n isCanCreateChannel() {\n return this.getInput().title().length;\n }\n\n content() {\n return (\n \n );\n }\n}\n","import Component from 'flarum/Component';\nimport classList from 'flarum/utils/classList';\n\nexport default class ChatAvatar extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n }\n\n componentAvatarPM() {\n return (\n \n {this.model.icon() ? (\n \n ) : this.model.avatarUrl() ? null : (\n this.firstLetter(this.model.title()).toUpperCase()\n )}\n
\n );\n }\n\n componentAvatarChannel() {\n return (\n \n {this.model.icon() ? (\n \n ) : this.model.avatarUrl() ? null : (\n this.firstLetter(this.model.title()).toUpperCase()\n )}\n
\n );\n }\n\n view(vnode) {\n return this.model.type() == 1 ? this.componentAvatarChannel() : this.componentAvatarPM();\n }\n\n firstLetter(string) {\n for (let i = 0; i < string.length; i++) {\n if (this.isLetter(string[i])) return string[i];\n }\n return string[0];\n }\n\n isLetter(c) {\n return c.toLowerCase() != c.toUpperCase();\n }\n}\n","import humanTime from 'flarum/utils/humanTime';\nimport Component from 'flarum/Component';\nimport classList from 'flarum/utils/classList';\nimport extractText from 'flarum/utils/extractText';\nimport SubtreeRetainer from 'flarum/utils/SubtreeRetainer';\n\nimport ChatAvatar from './ChatAvatar';\n\nexport default class ChatPreview extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n\n this.subtree = new SubtreeRetainer(\n () => this.model.freshness,\n () => app.chat.getCurrentChat(),\n\n // Reactive attrs\n () => this.model.isNeedToFlash\n );\n }\n\n onbeforeupdate(vnode) {\n super.onbeforeupdate(vnode);\n this.model = this.attrs.model;\n\n return this.subtree.needsRebuild();\n }\n\n view(vnode) {\n return (\n \n
{this.componentPreview()}
\n {this.model.unreaded() ?
{this.model.unreaded()}
: null}\n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(vnode.dom));\n this.model.isNeedToFlash = false;\n }\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(vnode.dom));\n this.model.isNeedToFlash = false;\n }\n }\n\n componentMessageTime() {\n let lastMessage = this.model.last_message();\n let time = new Date(lastMessage.created_at());\n if (Date.now() - time.getTime() < 60 * 60 * 12 * 1000) {\n let nl = (n) => (n < 10 ? '0' : '') + n;\n return nl(time.getHours()) + ':' + nl(time.getMinutes());\n }\n\n return humanTime(lastMessage.created_at());\n }\n\n componentPreview() {\n return [\n ,\n \n
\n {this.model.icon() ? : null}\n {this.model.title()}\n
\n {this.model.last_message() ? this.componentTextPreview() : this.componentTextEmpty()}\n
,\n this.model.last_message() ? (\n \n {(this.humanTime = this.componentMessageTime())}\n
\n ) : null,\n ];\n }\n\n componentPreviewChannel() {\n return [\n ,\n \n
\n {this.model.title()}\n
\n {this.componentTextPreview()}\n
,\n \n {(this.humanTime = this.componentMessageTime())}\n
,\n ];\n }\n\n formatTextPreview(text) {\n let type;\n if (text.startsWith('```')) {\n text = app.translator.trans('xelson-chat.forum.chat.message.type.code');\n type = 'media';\n } else if (text.startsWith('http://') || text.startsWith('https://')) {\n text = app.translator.trans('xelson-chat.forum.chat.message.type.url');\n type = 'media';\n }\n return { text, type };\n }\n\n componentTextPreview() {\n let lastMessage = this.model.last_message();\n if (lastMessage.type() != 0) {\n return (\n \n {app.translator.trans('xelson-chat.forum.chat.message.type.event')} \n
\n );\n }\n\n let formatResult = this.formatTextPreview(lastMessage.message());\n let senderName,\n users = this.model.users(),\n sender = lastMessage.user();\n if (app.session.user) {\n if (app.session.user == sender) senderName = `${app.translator.trans('xelson-chat.forum.chat.message.you')}: `;\n else if (users.length > 2 || this.model.type()) senderName = sender.displayName() + ': ';\n }\n\n return (\n \n {senderName} \n {formatResult.text} \n
\n );\n }\n\n componentTextEmpty() {\n return (\n \n {app.translator.trans('xelson-chat.forum.chat.list.preview.empty')} \n
\n );\n }\n}\n","import Component from 'flarum/Component';\nimport ChatCreateModal from './ChatCreateModal';\nimport ChatPreview from './ChatPreview';\n\nexport default class ChatFrame extends Component {\n view(vnode) {\n const classes = ['ChatList'];\n if (app.chat.getFrameState('beingShownChatsList') || this.attrs.inPage) classes.push('toggled');\n return (\n \n
\n
\n \n
\n {this.attrs.inPage ? (\n ''\n ) : (\n
\n \n
\n )}\n
\n
\n {app.chat.getChatsSortedByLastUpdate().map((model) => (\n
\n \n
\n ))}\n {app.session.user && app.chat.getPermissions().create.chat ? (\n
app.modal.show(ChatCreateModal)}>
\n ) : null}\n
\n
\n );\n }\n\n content() {\n return app.chat.getChatsSortedByLastUpdate().map((model) => (\n \n \n
\n ));\n }\n\n getChatsListPanel() {\n return document.querySelector('.ChatList');\n }\n\n getChatsList() {\n return document.querySelector('.ChatList .list');\n }\n\n toggleChatsList(e) {\n var chatLists = this.getChatsListPanel();\n var showing = true;\n\n if (chatLists.classList.contains('toggled')) {\n chatLists.classList.remove('toggled');\n showing = false;\n } else chatLists.classList.add('toggled');\n\n app.chat.saveFrameState('beingShownChatsList', showing);\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport ChatEditModal from './ChatEditModal';\nimport { throttle } from 'flarum/utils/throttleDebounce';\n\nexport default class ChatInput extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.model;\n this.state = this.attrs.state;\n\n app.chat.input = this;\n\n this.messageCharLimit = app.forum.attribute('xelson-chat.settings.charlimit') ?? 512;\n\n this.updatePlaceholder();\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n let inputState = this.state.input;\n let input = this.$('#chat-input')[0];\n input.lineHeight = parseInt(window.getComputedStyle(input).getPropertyValue('line-height'));\n inputState.element = input;\n\n if (inputState.content() && inputState.content().length) {\n this.inputProcess({ target: input });\n }\n\n this.updateLimit();\n }\n\n onbeforeupdate(vnode, old) {\n super.onbeforeupdate(vnode, old);\n\n if (this.model !== this.attrs.model) {\n this.model = this.attrs.model;\n this.state = this.attrs.state;\n }\n this.updatePlaceholder();\n }\n\n updatePlaceholder() {\n if (!app.session.user) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.unauthenticated');\n else if (!app.chat.getPermissions().post) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.chatdenied');\n else if (this.model.removed_at()) this.inputPlaceholder = app.translator.trans('xelson-chat.forum.errors.removed');\n else this.inputPlaceholder = app.translator.trans('xelson-chat.forum.chat.placeholder');\n }\n\n view() {\n return (\n \n );\n }\n\n updateLimit() {\n const limiter = this.element.querySelector('#chat-limiter');\n if (!limiter) return;\n\n let charsTyped = this.messageCharLimit - (this.state.input.messageLength || 0);\n limiter.innerText = charsTyped + '/' + this.messageCharLimit;\n limiter.className = charsTyped < 100 ? 'reaching-limit' : '';\n }\n\n saveDraft(text = this.state.input.content()) {\n this.state.input.lastDraft != text &&\n throttle(300, () => {\n this.state.setChatStorageValue('draft', text);\n })();\n this.state.input.lastDraft = text;\n }\n\n inputSaveDraft(e) {\n if (e) e.redraw = false;\n\n let input = e.target;\n this.saveDraft(input.value.trim());\n }\n\n resizeInput() {\n let input = this.state.getChatInput();\n\n input.rows = 1;\n this.state.input.rows = Math.min(input.scrollHeight / input.lineHeight, app.screen() === 'phone' ? 2 : 5);\n input.rows = this.state.input.rows;\n }\n\n inputProcess(e) {\n if (e) e.redraw = false;\n\n let input = e.target;\n this.state.input.content(input.value);\n let inputValue = input.value.trim();\n this.state.input.messageLength = inputValue.length;\n this.updateLimit();\n\n this.resizeInput();\n\n if (this.state.input.messageLength) {\n if (!this.state.input.writingPreview && !this.state.messageEditing) this.inputPreviewStart(inputValue);\n } else {\n if (this.state.input.writingPreview && !inputValue.length) this.inputPreviewEnd();\n }\n\n if (this.state.messageEditing) this.state.messageEditing.content = inputValue;\n else if (this.state.input.writingPreview) this.state.input.previewModel.content = inputValue;\n\n if (this.attrs.oninput) this.attrs.oninput(e);\n }\n\n inputPressEnter(e) {\n e.redraw = false;\n if (e.keyCode == 13 && !e.shiftKey) {\n this.state.messageSend();\n return false;\n }\n return true;\n }\n\n inputPressButton() {\n this.state.messageSend();\n }\n\n inputPreviewStart(content) {\n if (!this.state.input.writingPreview) {\n this.state.input.writingPreview = true;\n\n this.state.input.previewModel = app.store.createRecord('chatmessages');\n this.state.input.previewModel.pushData({\n id: 0,\n attributes: { message: ' ', created_at: 0 },\n relationships: { user: app.session.user, chat: this.model },\n });\n Object.assign(this.state.input.previewModel, { isEditing: true, isNeedToFlash: true, content });\n } else this.state.input.previewModel.isNeedToFlash = true;\n\n m.redraw();\n }\n\n inputPreviewEnd() {\n this.state.input.writingPreview = false;\n\n m.redraw();\n }\n}\n","import Component from 'flarum/Component';\nimport avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\nimport fullTime from 'flarum/helpers/fullTime';\nimport classList from 'flarum/utils/classList';\nimport humanTime from 'flarum/utils/humanTime';\nimport extractText from 'flarum/utils/extractText';\nimport ItemList from 'flarum/utils/ItemList';\nimport SubtreeRetainer from 'flarum/utils/SubtreeRetainer';\n\nimport Dropdown from 'flarum/components/Dropdown';\nimport Button from 'flarum/components/Button';\nimport Separator from 'flarum/components/Separator';\nimport Link from 'flarum/components/Link';\n\nexport default class ChatMessage extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.labels = [];\n this.model = this.attrs.model;\n if (!this.model.content) this.model.content = this.model.message();\n\n this.initLabels();\n\n this.subtree = new SubtreeRetainer(\n () => this.model.freshness,\n () => this.model.user().freshness,\n () => app.chat.getCurrentChat(),\n\n // Reactive attrs\n () => this.model.content,\n () => this.model.isDeletedForever,\n () => this.model.isTimedOut,\n () => this.model.isEditing,\n () => this.model.isNeedToFlash\n );\n }\n\n modelEvent(name) {\n const viewportState = app.chat.getViewportState(this.model.chat());\n viewportState.onChatMessageClicked(name, this.model);\n app.chat.onChatMessageClicked(name, this.model);\n }\n\n onbeforeupdate(vnode) {\n super.onbeforeupdate(vnode);\n this.model = this.attrs.model;\n\n return this.subtree.needsRebuild();\n }\n\n content() {\n return (\n \n {this.model.user() ? (\n
\n
{avatar(this.model.user(), { className: 'avatar' })} \n \n ) : (\n
\n {avatar(this.model.user(), { className: 'avatar' })} \n
\n )}\n
\n
\n
\n {this.model.is_censored() ? (\n
\n {this.model.content}\n
\n ) : (\n
\n {this.model.content}\n
\n )}\n
\n
\n
\n );\n }\n\n view(vnode) {\n return (\n \n {this.model ? this.content() : null}\n
\n );\n }\n\n initLabels() {\n this.labelBind(\n () => this.model.edited_at(),\n () => (\n \n \n
\n )\n );\n\n this.labelBind(\n () => this.model.deleted_by(),\n () => (\n \n {' '}\n \n {`(${app.translator.trans('xelson-chat.forum.chat.message.deleted' + (this.model.isDeletedForever ? '_forever' : ''))}`}{' '}\n {username(this.model.deleted_by())}\n {')'}\n \n
\n )\n );\n\n this.labelBind(\n () => this.model.isTimedOut,\n () => (\n \n \n
\n )\n );\n }\n\n labelBind(condition, component) {\n this.labels.push({ condition: condition, component: component });\n }\n\n editDropDown() {\n const items = new ItemList();\n\n if (app.chat.getPermissions().edit && this.model.user() && this.model.user() == app.session.user) {\n items.add(\n 'dropdownEditStart',\n \n {app.translator.trans('core.forum.post_controls.edit_button')}\n \n );\n }\n\n items.add('separator', );\n\n if (this.model.chat().role() || (app.chat.getPermissions().delete && this.model.user() == app.session.user)) {\n if (this.model.deleted_by()) {\n items.add(\n 'dropdownRestore',\n \n {app.translator.trans('core.forum.post_controls.restore_button')}\n \n );\n } else {\n items.add(\n 'dropdownHide',\n \n {app.translator.trans('core.forum.post_controls.delete_button')}\n \n );\n }\n }\n\n if (this.model.chat().role() && (this.model.deleted_by() || app.chat.totalHidden() >= 3)) {\n items.add(\n 'dropdownDelete',\n \n {app.translator.trans('core.forum.post_controls.delete_forever_button')}\n \n );\n }\n\n return Object.keys(items.items).length <= 1 ? null : (\n \n \n {items.toArray()}\n \n
\n );\n }\n\n editDropDownTimedOut() {\n return (\n \n \n \n {app.translator.trans('xelson-chat.forum.chat.message.actions.hide')}\n \n \n {app.translator.trans('xelson-chat.forum.chat.message.actions.resend')}\n \n \n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n this.messageWrapper = vnode.dom;\n\n this.pollInterval = setInterval(() => {\n this.renderMessage();\n }, 100);\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n clearInterval(this.pollInterval);\n }\n\n onContentWrapperUpdated(vnode) {\n super.onupdate(vnode);\n this.renderMessage(vnode.dom);\n }\n\n onContentWrapperCreated(vnode) {\n super.oncreate(vnode);\n this.renderMessage(vnode.dom);\n }\n\n renderMessage() {\n if (this.model.isNeedToFlash) {\n app.chat.flashItem($(this.messageWrapper));\n this.model.isNeedToFlash = false;\n }\n\n if (this.model.content !== this.oldContent) {\n this.oldContent = this.model.content;\n app.chat.renderChatMessage(this.model, this.model.content);\n }\n }\n\n isVisible() {\n if (this.model.chat() != app.chat.getCurrentChat()) return false;\n\n if (this.model.isDeletedForever) return false;\n\n if (this.model.deleted_by() && !(this.model.chat().role() || this.model.user() == app.session.user)) return false;\n\n return true;\n }\n}\n","import ChatMessage from './ChatMessage';\nimport Link from 'flarum/components/Link';\nimport extractText from 'flarum/utils/extractText';\nimport humanTime from 'flarum/utils/humanTime';\nimport fullTime from 'flarum/helpers/fullTime';\n\nexport default class ChatEventMessage extends ChatMessage {\n oninit(vnode) {\n super.oninit(vnode);\n\n if (\n this.model\n .message()\n .split('')\n .every((c) => c === '*')\n )\n this.parsedContent = { id: 'chatCensored' };\n else this.parsedContent = JSON.parse(this.model.message());\n }\n\n componentUserMention(user) {\n return (\n \n {user.displayName()} \n \n );\n }\n\n componentUserMentionsByIds(ids) {\n return ids.map((id) => this.componentUserMention(app.store.getById('users', id)));\n }\n\n componentEventText() {\n switch (this.parsedContent.id) {\n case 'chatCensored': {\n return (\n \n {this.model.message()}\n
\n );\n }\n case 'chatCreated': {\n if (!this.model.chat()) return;\n\n if (this.model.chat().type() == 1) {\n return app.translator.trans(`xelson-chat.forum.chat.message.events.channel.created`, {\n creatorname: this.componentUserMention(this.model.user()),\n chatname: {this.model.chat().title()} ,\n });\n } else {\n if (this.model.chat().type() == 0 && this.model.chat().users().length <= 2) {\n return app.translator.trans(`xelson-chat.forum.chat.message.events.pm.created`, {\n creatorname: this.componentUserMention(this.model.chat().creator()),\n username: this.parsedContent.users.length\n ? this.componentUserMention(app.store.getById('users', this.parsedContent.users[0]))\n : null,\n });\n }\n\n return app.translator.trans(`xelson-chat.forum.chat.message.events.chat.created`, {\n creatorname: this.componentUserMention(this.model.user()),\n chatname: {this.model.chat().title()} ,\n usernames: this.componentUserMentionsByIds(this.parsedContent.users),\n username: this.parsedContent.users.length\n ? this.componentUserMention(app.store.getById('users', this.parsedContent.users[0]))\n : null,\n });\n }\n }\n case 'chatEdited': {\n let componentOld, componentNew;\n switch (this.parsedContent.column) {\n case 'title':\n componentOld = {this.parsedContent.old} ;\n componentNew = {this.parsedContent.new} ;\n break;\n\n case 'color':\n componentOld = ;\n componentNew = ;\n break;\n\n case 'icon':\n componentOld = this.parsedContent.old ? : [nothing] ;\n componentNew = ;\n break;\n }\n\n return app.translator.trans(`xelson-chat.forum.chat.message.events.${this.parsedContent.column}.edited`, {\n editorname: this.componentUserMention(this.model.user()),\n old: componentOld,\n new: componentNew,\n });\n }\n case 'chatAddRemoveUser': {\n if (this.parsedContent.add.length && this.parsedContent.remove.length) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.invited_kicked', {\n editorname: this.componentUserMention(this.model.user()),\n invitednames: this.componentUserMentionsByIds(this.parsedContent.add),\n kickednames: this.componentUserMentionsByIds(this.parsedContent.remove),\n });\n } else if (this.parsedContent.add.length) {\n if (this.parsedContent.add[0] == this.model.user().id()) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.self.entered', {\n username: this.componentUserMention(this.model.user()),\n });\n } else {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.invited', {\n editorname: this.componentUserMention(this.model.user()),\n usernames: this.componentUserMentionsByIds(this.parsedContent.add),\n });\n }\n } else if (this.parsedContent.remove.length) {\n if (this.parsedContent.remove[0] == this.model.user().id()) {\n return app.translator.trans('xelson-chat.forum.chat.message.events.self.leaved', {\n username: this.componentUserMention(this.model.user()),\n });\n } else {\n return app.translator.trans('xelson-chat.forum.chat.message.events.users.kicked', {\n editorname: this.componentUserMention(this.model.user()),\n usernames: this.componentUserMentionsByIds(this.parsedContent.remove),\n });\n }\n }\n }\n }\n }\n\n content() {\n return (\n \n );\n }\n}\n","import Component from 'flarum/Component';\n\nexport default class ChatWelcome extends Component {\n view(vnode) {\n return (\n \n
\n {app.chat.getChats().length ? (\n
\n
{app.translator.trans('xelson-chat.forum.chat.welcome.header')} \n {app.translator.trans('xelson-chat.forum.chat.welcome.subheader')} \n \n ) : null}\n
\n
\n );\n }\n}\n","import Model from 'flarum/Model';\n\nexport default class Message extends Model {}\n\nObject.assign(Message.prototype, {\n message: Model.attribute('message'),\n user: Model.hasOne('user'),\n deleted_by: Model.hasOne('deleted_by'),\n chat: Model.hasOne('chat'),\n created_at: Model.attribute('created_at', Model.transformDate),\n edited_at: Model.attribute('edited_at', Model.transformDate),\n type: Model.attribute('type'),\n is_readed: Model.attribute('is_readed'),\n ip_address: Model.attribute('ip_address'),\n is_censored: Model.attribute('is_censored'),\n});\n","import Component from 'flarum/Component';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\n\nimport ChatInput from './ChatInput';\nimport ChatMessage from './ChatMessage';\nimport ChatEventMessage from './ChatEventMessage';\nimport ChatWelcome from './ChatWelcome';\nimport Message from '../models/Message';\nimport timedRedraw from '../utils/timedRedraw';\nimport ChatPage from './ChatPage';\n\nexport default class ChatViewport extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.model = this.attrs.chatModel;\n if (this.model) {\n this.state = app.chat.getViewportState(this.model);\n }\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n this.loadChat();\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n // this.attrs is broken in onupdate hook\n const model = vnode.attrs.chatModel;\n\n if (model !== this.model) {\n this.model = model;\n if (this.model) {\n this.state = app.chat.getViewportState(this.model);\n this.loadChat();\n }\n }\n }\n\n loadChat() {\n const oldScroll = this.state.scroll.oldScroll;\n\n this.reloadMessages();\n m.redraw();\n\n setTimeout(() => {\n const element = this.element;\n\n this.getChatWrapper().scrollTop = element.scrollHeight - element.clientHeight - oldScroll;\n }, 200);\n }\n\n view(vnode) {\n if (this.model) {\n return (\n \n
\n {this.componentLoader(this.state.scroll.loading)}\n {this.componentsChatMessages(this.model).concat(\n this.state.input.writingPreview ? this.componentChatMessage(this.state.input.previewModel) : []\n )}\n
\n
{\n if (this.nearBottom() && !this.state.messageEditing) {\n this.scrollToBottom();\n }\n }}\n > \n {this.isFastScrollAvailable() ? this.componentScroller() : null}\n
\n );\n }\n\n return (\n \n ;\n
\n );\n }\n\n componentChatMessage(model) {\n return model.type() ? : ;\n }\n\n componentsChatMessages(chat) {\n return app.chat.getChatMessages().map((model) => this.componentChatMessage(model));\n }\n\n componentScroller() {\n return (\n \n \n
\n );\n }\n\n componentLoader(watch) {\n return watch ? (\n \n \n \n ) : null;\n }\n getChatWrapper() {\n return app.screen() === 'phone' && app.current.matches(ChatPage)\n ? document.documentElement\n : document.querySelector('.ChatViewport .wrapper');\n }\n\n isFastScrollAvailable() {\n let chatWrapper = this.getChatWrapper();\n return (\n (this.state.newPushedPosts ||\n this.model.unreaded() >= 30 ||\n (chatWrapper && chatWrapper.scrollHeight > 2000 && chatWrapper.scrollTop < chatWrapper.scrollHeight - 2000)) &&\n !this.nearBottom()\n );\n }\n\n fastScroll(e) {\n if (this.model.unreaded() >= 30) this.fastMessagesFetch(e);\n else {\n let chatWrapper = this.getChatWrapper();\n chatWrapper.scrollTop = Math.max(chatWrapper.scrollTop, chatWrapper.scrollHeight - 3000);\n this.scrollToBottom();\n }\n }\n\n fastMessagesFetch(e) {\n e.redraw = false;\n app.chat.chatmessages = [];\n\n app.chat.apiFetchChatMessages(this.model).then((r) => {\n this.scrollToBottom();\n timedRedraw(300);\n\n this.model.pushAttributes({ unreaded: 0 });\n let message = app.chat.getChatMessages((mdl) => mdl.chat() == this.model).slice(-1)[0];\n app.chat.apiReadChat(this.model, message);\n });\n }\n\n wrapperOnCreate(vnode) {\n super.oncreate(vnode);\n this.wrapperOnUpdate(vnode);\n\n (app.current.matches(ChatPage) ? window : vnode.dom).addEventListener(\n 'scroll',\n (this.boundScrollListener = this.wrapperOnScroll.bind(this)),\n { passive: true }\n );\n }\n\n wrapperOnBeforeUpdate(vnode, vnodeNew) {\n super.onbeforeupdate(vnode, vnodeNew);\n if (!this.state.autoScroll && this.nearBottom() && this.state.newPushedPosts) {\n this.scrollAfterUpdate = true;\n }\n }\n\n wrapperOnUpdate(vnode) {\n super.onupdate(vnode);\n let el = vnode.dom;\n if (this.model && this.state.scroll.autoScroll) {\n if (this.autoScrollTimeout) clearTimeout(this.autoScrollTimeout);\n this.autoScrollTimeout = setTimeout(this.scrollToBottom.bind(this, true), 100);\n }\n if (el.scrollTop <= 0) el.scrollTop = 1;\n this.checkUnreaded();\n\n if (this.scrollAfterUpdate) {\n this.scrollAfterUpdate = false;\n this.scrollToBottom();\n }\n }\n\n wrapperOnRemove(vnode) {\n super.onremove(vnode);\n vnode.dom.removeEventListener('scroll', this.boundScrollListener);\n }\n\n wrapperOnScroll(e) {\n const el = app.current.matches(ChatPage) ? document.documentElement : this.element;\n\n this.state.scroll.oldScroll = el.scrollHeight - el.clientHeight - el.scrollTop;\n\n this.checkUnreaded();\n\n if (this.lastFastScrollStatus != this.isFastScrollAvailable()) {\n this.lastFastScrollStatus = this.isFastScrollAvailable();\n m.redraw();\n }\n\n let currentHeight = el.scrollHeight;\n\n if (this.atBottom()) {\n this.state.newPushedPosts = false;\n }\n\n if (this.state.scroll.autoScroll || this.state.loading || this.scrolling) return;\n\n if (!this.state.messageEditing && el.scrollTop >= 0) {\n if (el.scrollTop <= 500) {\n let topMessage = app.chat.getChatMessages((model) => model.chat() == this.model)[0];\n if (topMessage && topMessage != this.model.first_message()) {\n app.chat.apiFetchChatMessages(this.model, topMessage.created_at().toISOString());\n }\n } else if (el.scrollTop + el.offsetHeight >= currentHeight - 500) {\n let bottomMessage = app.chat.getChatMessages((model) => model.chat() == this.model).slice(-1)[0];\n if (bottomMessage && bottomMessage != this.model.last_message()) {\n app.chat.apiFetchChatMessages(this.model, bottomMessage.created_at().toISOString());\n }\n }\n }\n }\n\n checkUnreaded() {\n let wrapper = this.getChatWrapper();\n if (wrapper && this.model.unreaded()) {\n let list = app.chat.getChatMessages((mdl) => mdl.chat() == this.model && mdl.created_at() >= this.model.readed_at() && !mdl.isReaded);\n\n for (const message of list) {\n let msg = document.querySelector(`.message-wrapper[data-id=\"${message.id()}\"`);\n if (msg && wrapper.scrollTop + wrapper.offsetHeight >= msg.offsetTop) {\n message.isReaded = true;\n\n if (this.state.scroll.autoScroll && app.chat.getCurrentChat() == this.model) {\n app.chat.apiReadChat(this.model, new Date());\n this.model.pushAttributes({ unreaded: 0 });\n } else {\n app.chat.apiReadChat(this.model, message);\n this.model.pushAttributes({ unreaded: this.model.unreaded() - 1 });\n }\n\n m.redraw();\n }\n }\n }\n }\n\n scrollToAnchor(anchor) {\n let element;\n if (anchor instanceof Message) element = $(`.message-wrapper[data-id=\"${anchor.id()}\"`)[0];\n else element = anchor;\n\n let chatWrapper = this.getChatWrapper();\n if (chatWrapper && element)\n $(chatWrapper)\n .stop()\n .animate({ scrollTop: element.offsetTop - element.offsetHeight }, 500);\n else setTimeout(scroll, 100);\n }\n\n scrollToBottom(force = false) {\n this.scrolling = true;\n let chatWrapper = this.getChatWrapper();\n if (chatWrapper) {\n const notAtBottom = !force && this.atBottom();\n const fewMessages =\n app.current.matches(ChatPage) &&\n document.querySelector('.ChatViewport .wrapper').scrollHeight + 200 < document.documentElement.clientHeight;\n if (notAtBottom || fewMessages) return;\n\n const time = this.pixelsFromBottom() < 80 ? 0 : 250;\n\n $(chatWrapper)\n .stop()\n .animate({ scrollTop: chatWrapper.scrollHeight }, time, 'swing', () => {\n this.state.scroll.autoScroll = false;\n this.scrolling = false;\n });\n }\n }\n\n reloadMessages() {\n if (!this.state.messagesFetched) {\n let query;\n if (this.model.unreaded()) {\n query = this.model.readed_at()?.toISOString() ?? new Date(0).toISOString();\n this.state.scroll.autoScroll = false;\n }\n\n app.chat.apiFetchChatMessages(this.model, query).then(() => {\n if (this.model.unreaded()) {\n let anchor = app.chat.getChatMessages((mdl) => mdl.chat() == this.model && mdl.created_at() > this.model.readed_at())[0];\n this.scrollToAnchor(anchor);\n } else this.state.scroll.autoScroll = true;\n\n m.redraw();\n });\n\n this.state.messagesFetched = true;\n }\n }\n\n nearBottom() {\n return this.pixelsFromBottom() <= 500;\n }\n\n atBottom() {\n return this.pixelsFromBottom() <= 5;\n }\n\n pixelsFromBottom() {\n const element = app.current.matches(ChatPage) ? document.documentElement : this.element;\n return Math.abs(element.scrollHeight - element.scrollTop - element.clientHeight);\n }\n}\n","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/components/IndexPage';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport listItems from 'flarum/helpers/listItems';\nimport Stream from 'flarum/utils/Stream';\nimport ChatHeader from './ChatHeader';\nimport ChatList from './ChatList';\nimport ChatViewport from './ChatViewport';\n\nexport default class ChatPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.bodyClass = 'App--chat';\n this.listOpen = Stream(false);\n }\n\n view() {\n const navItems = IndexPage.prototype.sidebarItems();\n\n if (navItems.has('forumStatisticsWidget')) navItems.remove('forumStatisticsWidget');\n\n return (\n \n
\n {listItems(navItems.toArray())} \n \n
\n {app.chat.chatsLoading ?
:
}\n {this.listOpen() ? (\n
\n \n
\n ) : (\n ''\n )}\n
\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.clickHandler = (e) => {\n const chatList = this.$('.ChatList')[0];\n\n if (this.listOpen() && !(chatList && chatList.contains(e.target))) {\n this.listOpen(false);\n m.redraw();\n }\n };\n\n $(window).on('click', this.clickHandler);\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n if (this.listOpen()) {\n this.element.querySelector('.ChatPage--list').style.height =\n document.documentElement.clientHeight - this.element.querySelector('.ChatPage--list').getBoundingClientRect().top + 'px';\n }\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n $(window).off('click', this.clickHandler);\n }\n}\n","import Component from 'flarum/Component';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport ChatHeader from './ChatHeader';\nimport ChatList from './ChatList';\nimport ChatPage from './ChatPage';\nimport ChatViewport from './ChatViewport';\n\nexport default class ChatFrame extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n document.addEventListener('mousedown', this.chatMoveListener.bind(this, 'mousedown'));\n document.addEventListener('mouseup', this.chatMoveListener.bind(this, 'mouseup'));\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n }\n\n calcHeight() {\n if (!app.chat.getFrameState('beingShown')) {\n return '30px';\n } else if (app.screen() !== 'phone') {\n return app.chat.getFrameState('transform').y + 'px';\n } else {\n return '70vh';\n }\n }\n\n view(vnode) {\n if (app.current.matches(ChatPage)) return;\n\n const style = { right: app.chat.getFrameState('transform').x + 'px', height: this.calcHeight() };\n\n return (\n \n
\n
\n\n
\n false} onmousedown={this.chatHeaderOnMouseDown.bind(this)} inFrame={true}> \n {app.chat.chatsLoading ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n }\n\n chatHeaderOnMouseDown(e) {\n if (e.button !== 0) return;\n\n var path = e.path || (e.composedPath && e.composedPath());\n if (path) {\n for (let i = 0, el; i < path.length; i++) {\n el = path[i];\n if (el.classList && el.classList.contains('icon')) return;\n }\n }\n\n if (!this.chatMoveStart(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n chatMoveListener(event, e) {\n switch (event) {\n case 'mouseup': {\n if (this.chatMoving) this.chatMoveEnd(e);\n break;\n }\n }\n }\n\n chatMoveStart(e) {\n if (!app.chat.getFrameState('beingShown')) return;\n this.chatMoving = true;\n this.mouseMoveEvent = this.chatMoveProcess.bind(this);\n this.moveLast = { x: e.clientX, y: e.clientY };\n\n document.addEventListener('mousemove', this.mouseMoveEvent);\n document.body.classList.add('moving');\n\n return false;\n }\n\n chatMoveEnd(e) {\n this.chatMoving = false;\n document.removeEventListener('mousemove', this.mouseMoveEvent);\n document.body.classList.remove('moving');\n\n if (!app.current.matches(ChatPage)) {\n app.chat.saveFrameState('transform', { x: parseInt(this.element.style.right), y: this.element.offsetHeight || 400 });\n }\n }\n\n chatMoveProcess(e) {\n let move = { x: e.clientX - this.moveLast.x, y: e.clientY - this.moveLast.y };\n let right = parseInt(this.element.style.right) || 0;\n let nextPos = { x: right - move.x, y: this.element.offsetHeight - move.y };\n\n if ((nextPos.x < window.innerWidth - this.element.querySelector('#chat').offsetWidth && move.x < 0) || (nextPos.x > 0 && move.x > 0))\n this.element.style.right = nextPos.x + 'px';\n\n if (this.element.querySelector('.ChatHeader').clientHeight < nextPos.y && nextPos.y < window.innerHeight - 100) {\n this.element.style.height = nextPos.y + 'px';\n }\n\n this.moveLast = { x: e.clientX, y: e.clientY };\n }\n}\n","import Model from 'flarum/Model';\nimport computed from 'flarum/utils/computed';\n\nexport default class Chat extends Model {}\n\nObject.assign(Chat.prototype, {\n _title: Model.attribute('title'),\n _color: Model.attribute('color'),\n type: Model.attribute('type'),\n created_at: Model.attribute('created_at', Model.transformDate),\n creator: Model.hasOne('creator'),\n users: Model.hasMany('users'),\n first_message: Model.hasOne('first_message'),\n last_message: Model.hasOne('last_message'),\n icon: Model.attribute('icon'),\n\n role: Model.attribute('role'),\n unreaded: Model.attribute('unreaded', (v) => Math.max(v, 0)),\n readed_at: Model.attribute('readed_at', Model.transformDate),\n removed_at: Model.attribute('removed_at', Model.transformDate),\n joined_at: Model.attribute('joined_at', Model.transformDate),\n removed_by: Model.attribute('removed_by'),\n\n pm_user: computed('freshness', function (updated) {\n return this.getPMUser();\n }),\n\n title: computed('pm_user', '_title', function (pm_user, _title) {\n return pm_user ? pm_user.displayName() : _title;\n }),\n\n color: computed('pm_user', '_color', function (pm_user, _color) {\n return pm_user ? pm_user.color() : _color;\n }),\n\n avatarUrl: computed('pm_user', function (pm_user) {\n return pm_user ? pm_user.avatarUrl() : null;\n }),\n\n textColor: computed('color', function (color) {\n return this.pickTextColorBasedOnBgColorSimple(color, '#FFF', '#000');\n }),\n\n matches(q) {\n return (\n this.title().toLowerCase().includes(q) ||\n this.users().some((user) => {\n return user.displayName().toLowerCase().includes(q);\n })\n );\n },\n\n getPMUser() {\n let users = this.users();\n if (app.session.user && this.type() == 0 && users.length && users.length < 3) {\n for (const user of users) {\n if (user && user != app.session.user) return user;\n }\n }\n return null;\n },\n\n pickTextColorBasedOnBgColorSimple(bgColor, lightColor, darkColor) {\n var color = bgColor.charAt(0) === '#' ? bgColor.substring(1, 7) : bgColor;\n var r = parseInt(color.substring(0, 2), 16);\n var g = parseInt(color.substring(2, 4), 16);\n var b = parseInt(color.substring(4, 6), 16);\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? darkColor : lightColor;\n },\n});\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import Stream from 'flarum/utils/Stream';\n\nexport default class ViewportState {\n loadingSend = false;\n\n scroll = {\n autoScroll: true,\n oldScroll: 0,\n };\n\n loading = false;\n loadingQueries = {};\n\n input = {\n messageLength: 0,\n rows: 1,\n content: Stream(),\n };\n\n messagesFetched = false;\n\n constructor(params) {\n if (params.model) {\n this.initChatStorage(params.model);\n\n this.input.content(this.getChatStorageValue('draft'));\n }\n }\n\n chatStorage = {\n key: null,\n draft: null,\n };\n\n initChatStorage(model) {\n this.chatStorage.key = `neonchat.viewport${model.id()}`;\n let parsedData = JSON.parse(localStorage.getItem(this.chatStorage.key));\n\n if (parsedData) {\n this.chatStorage.draft = parsedData.draft ?? '';\n }\n }\n\n getChatStorageValue(key) {\n return this.chatStorage[key];\n }\n\n setChatStorageValue(key, value) {\n let cachedState = JSON.parse(localStorage.getItem(this.chatStorage.key)) ?? {};\n cachedState[key] = value;\n localStorage.setItem(this.chatStorage.key, JSON.stringify(cachedState));\n\n this.chatStorage[key] = value;\n }\n\n onChatMessageClicked(eventName, model) {\n switch (eventName) {\n case 'dropdownEditStart': {\n this.messageEdit(model, true);\n break;\n }\n case 'dropdownResend': {\n this.messageResend(model);\n break;\n }\n case 'insertMention': {\n this.insertMention(model);\n break;\n }\n }\n }\n\n getChatInput() {\n return document.querySelector('.NeonChatFrame #chat-input');\n }\n\n messageSend() {\n const text = this.input.content();\n\n if (text && text.trim().length > 0 && !this.loadingSend) {\n if (this.input.writingPreview) {\n this.input.writingPreview = false;\n\n this.messagePost(this.input.previewModel);\n app.chat.insertChatMessage(Object.assign(this.input.previewModel, {}));\n\n this.inputClear();\n } else if (this.messageEditing) {\n let model = this.messageEditing;\n if (model.content.trim() !== model.oldContent.trim()) {\n model.oldContent = model.content;\n app.chat.editChatMessage(model, true, model.content);\n }\n this.messageEditEnd();\n this.inputClear();\n }\n }\n }\n\n messageEdit(model) {\n if (this.input.writingPreview) this.input.instance.inputPreviewEnd();\n if (this.messageEditing) this.messageEditEnd();\n\n model.isEditing = true;\n model.oldContent = model.message();\n\n this.messageEditing = model;\n\n let inputElement = this.getChatInput();\n inputElement.value = this.input.content(model.oldContent);\n inputElement.focus();\n app.chat.input.resizeInput();\n\n m.redraw();\n }\n\n messageEditEnd() {\n let message = this.messageEditing;\n if (message) {\n message.isEditing = false;\n message.content = message.oldContent;\n this.inputClear();\n m.redraw();\n\n this.messageEditing = null;\n }\n }\n\n messageResend(model) {\n this.messagePost(model);\n }\n\n messagePost(model) {\n this.loadingSend = true;\n m.redraw();\n\n return app.chat.postChatMessage(model).then(\n (r) => {\n this.loadingSend = false;\n\n m.redraw();\n },\n (r) => {\n this.loadingSend = false;\n\n m.redraw();\n }\n );\n }\n\n inputClear() {\n this.input.messageLength = 0;\n this.input.rows = 1;\n this.input.content(null);\n m.redraw();\n }\n\n insertMention(model) {\n let user = model.user();\n if (!app.session.user) return;\n\n this.input.content((this.input.content() || '') + ` @${user.username()} `);\n\n var input = this.getChatInput();\n input.focus();\n }\n}\n","import Message from '../models/Message';\n\nimport Model from 'flarum/Model';\nimport Stream from 'flarum/utils/Stream';\nimport Link from 'flarum/components/Link';\n\nimport * as resources from '../resources';\nimport ViewportState from './ViewportState';\nimport { throttle } from 'flarum/utils/throttleDebounce';\n\nvar refAudio = new Audio();\nrefAudio.src = resources.base64AudioNotificationRef;\nrefAudio.volume = 0.5;\n\nvar audio = new Audio();\naudio.src = resources.base64AudioNotification;\naudio.volume = 0.5;\n\nexport default class ChatState {\n constructor() {\n this.q = Stream('');\n this.chats = [];\n this.chatmessages = [];\n\n this.chatsLoading = true;\n this.curChat = null;\n this.totalHiddenCount = 0;\n\n let neonchatState = JSON.parse(localStorage.getItem('neonchat')) ?? {};\n\n this.frameState = {\n beingShown: neonchatState.beingShown ?? app.forum.attribute('xelson-chat.settings.display.minimize'),\n beingShownChatsList: neonchatState.beingShownChatsList ?? 0,\n isMuted: neonchatState.isMuted ?? false,\n notify: neonchatState.notify ?? false,\n transform: neonchatState.transform ?? { x: 0, y: 400 },\n isActive: true,\n selectedChat: neonchatState.selectedChat ?? 0,\n };\n\n this.permissions = {\n post: app.forum.attribute('xelson-chat.permissions.chat'),\n edit: app.forum.attribute('xelson-chat.permissions.edit'),\n delete: app.forum.attribute('xelson-chat.permissions.delete'),\n create: {\n channel: app.forum.attribute('xelson-chat.permissions.create.channel'),\n chat: app.forum.attribute('xelson-chat.permissions.create'),\n },\n moderate: {\n delete: app.forum.attribute('xelson-chat.permissions.moderate.delete'),\n vision: app.forum.attribute('xelson-chat.permissions.moderate.vision'),\n },\n };\n\n this.viewportStates = {};\n\n if (app.session.user && app.pusher) app.pusher.then(this.listenSocketChannels.bind(this));\n }\n\n getViewportState(model) {\n return this.viewportStates[model.id()];\n }\n\n listenSocketChannels(socket) {\n let channels = socket.channels;\n channels.main.bind('neonchat.events', this.handleSocketEvent.bind(this));\n if (channels.user) channels.user.bind('neonchat.events', this.handleSocketEvent.bind(this));\n }\n\n handleSocketEvent(r) {\n let message = r.response.message;\n if (message) message = app.store.pushPayload(message);\n\n let chat = r.response.chat;\n if (chat) chat = app.store.pushPayload(chat);\n\n // Workaround for blocking events from a chat we leaved\n if (message && message.chat().type() == 1 && message.chat().removed_at()) return;\n\n switch (r.event.id) {\n case 'message.post': {\n if (!app.session.user || message.user() != app.session.user) {\n this.insertChatMessage(message, true);\n m.redraw();\n }\n break;\n }\n case 'message.edit': {\n let actions = message.data.attributes.actions;\n if (app.session.user && actions.invoker == app.session.user.id()) return;\n\n if (actions.msg !== undefined) {\n if (!app.session.user || message.user() != app.session.user) this.editChatMessage(message, false, actions.msg);\n } else if (actions.hide !== undefined) {\n if (!app.session.user || actions.invoker != app.session.user.id())\n actions.hide ? this.hideChatMessage(message, false, message.deleted_by()) : this.restoreChatMessage(message, false);\n }\n break;\n }\n case 'message.delete': {\n if (!app.session.user || message.deleted_by() != app.session.user) this.deleteChatMessage(message, false, message.deleted_by());\n\n break;\n }\n case 'chat.create': {\n if (!app.session.user || chat.creator() != app.session.user) {\n this.addChat(chat, true);\n m.redraw();\n }\n break;\n }\n case 'chat.edit': {\n this.editChat(chat, true);\n let range = r.response.eventmsg_range;\n if (range.length) this.apiFetchChatMessages(chat, range, { notify: true, withFlash: true, disableLoader: true });\n\n if (app.session.user && r.response.roles_updated_for && r.response.roles_updated_for.includes(app.session.user.id())) {\n let role = app.session.user.chat_pivot(chat.id()).role();\n switch (role) {\n case 0: {\n app.alerts.show(\n { type: 'error' },\n app.translator.trans('xelson-chat.forum.chat.edit_modal.moderator.lost', { chatname: {chat.title()} })\n );\n break;\n }\n case 1: {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('xelson-chat.forum.chat.edit_modal.moderator.got', { chatname: {chat.title()} })\n );\n break;\n }\n }\n }\n\n m.redraw();\n\n break;\n }\n case 'chat.delete': {\n if (!app.session.user || chat.creator() != app.session.user) {\n this.deleteChat(chat);\n m.redraw();\n }\n break;\n }\n }\n }\n\n getFrameState(key) {\n return this.frameState[key];\n }\n\n saveFrameState(key, value) {\n let neonchatState = JSON.parse(localStorage.getItem('neonchat')) ?? {};\n neonchatState[key] = value;\n localStorage.setItem('neonchat', JSON.stringify(neonchatState));\n\n this.frameState[key] = value;\n }\n\n getPermissions() {\n return this.permissions;\n }\n\n getChats() {\n return this.chats.filter((chat) => (this.q() && chat.matches(this.q().toLowerCase())) || (!this.q() && !chat.removed_at()));\n }\n\n getChatsSortedByLastUpdate() {\n return this.getChats().sort((a, b) => {\n if (b.last_message() && a.last_message()) {\n return b.last_message()?.created_at() - a.last_message()?.created_at();\n }\n return 0;\n });\n }\n\n addChat(model, outside = false) {\n this.chats.push(model);\n\n this.viewportStates[model.id()] = new ViewportState({ model });\n\n if (model.id() == this.getFrameState('selectedChat')) this.onChatChanged(model);\n if (outside) model.isNeedToFlash = true;\n }\n\n editChat(model, outside = false) {\n if (outside) model.isNeedToFlash = true;\n }\n\n apiReadChat(chat, message) {\n if (this.readingTimeout) clearTimeout(this.readingTimeout);\n\n let timestamp;\n if (message instanceof Date) timestamp = message.toISOString();\n else if (message instanceof Message) timestamp = message.created_at().toISOString();\n\n this.readingTimeout = setTimeout(() => chat.save({ actions: { reading: timestamp } }), 1000);\n }\n\n deleteChat(model) {\n this.chats = this.chats.filter((mdl) => mdl != model);\n if (this.getCurrentChat() == model) this.setCurrentChat(null);\n }\n\n isChatPM(model) {\n return model.type() == 0 && model.users().length <= 2;\n }\n\n isExistsPMChat(user1, user2) {\n return this.getChats().some((model) => {\n let users = model.users();\n return model.type() === 0 && users.length === 2 && users.some((model) => model == user1) && users.some((model) => model == user2);\n });\n }\n\n onChatChanged(model, e = {}) {\n e.redraw = false;\n if (model == this.getCurrentChat()) return;\n\n this.setCurrentChat(model);\n m.redraw.sync();\n }\n\n comporatorAscButZerosDesc(a, b) {\n return a == 0 ? 1 : b == 0 ? -1 : a - b;\n }\n\n getChatMessages(filter) {\n let list = this.chatmessages.sort((a, b) => this.comporatorAscButZerosDesc(a.id(), b.id()));\n return filter ? list.filter(filter) : list;\n }\n\n apiFetchChatMessages(model, query, options = {}) {\n let viewport = this.getViewportState(model);\n let self = this;\n\n if (viewport.loading || viewport.loadingQueries[query]) return;\n\n viewport.loading = true;\n viewport.loadingQueries[query] = true;\n\n return app.store.find('chatmessages', { chat_id: model.id(), query }).then((r) => {\n if (r.length) {\n r.map((model) => {\n if (options.withFlash) model.isNeedToFlash = true;\n self.insertChatMessage(model);\n });\n if (options.notify) this.messageNotify(r[0]);\n\n viewport.loading = false;\n viewport.loadingQueries[query] = false;\n //viewport.scroll.autoScroll = false;\n\n m.redraw();\n }\n });\n }\n\n isChatMessageExists(model) {\n return this.chatmessages.find((e) => e.id() == model.id());\n }\n\n insertEventChatMessage(model, data, notify = false) {\n model.pushAttributes({ message: JSON.stringify(data) });\n insertChatMessage(model, notify);\n }\n\n insertChatMessage(model, notify = false) {\n if (this.isChatMessageExists(model)) return null;\n\n this.chatmessages.push(model);\n if (notify) {\n this.messageNotify(model);\n model.isNeedToFlash = true;\n\n let chatModel = model.chat();\n chatModel.isNeedToFlash = true;\n chatModel.pushAttributes({ unreaded: chatModel.unreaded() + 1 });\n }\n\n let list = this.getChatMessages((mdl) => mdl.chat() == model.chat());\n if ((notify || model.chat().removed_at()) && model.id() && list[list.length - 1] == model) {\n model.chat().pushData({ relationships: { last_message: model } });\n this.getViewportState(model.chat()).newPushedPosts = true;\n }\n }\n\n renderChatMessage(model, content) {\n let element = model instanceof Model ? document.querySelector(`.NeonChatFrame .message-wrapper[data-id=\"${model.id()}\"] .message`) : model;\n\n if (element) {\n s9e.TextFormatter.preview(content, element);\n\n // Workaround for user mentions that doesn't works properly\n $(element)\n .find('.UserMention.UserMention--deleted')\n .each(function () {\n let user = app.store.getBy('users', 'username', this.innerText.substring(1));\n if (this && user) {\n this.classList.remove('UserMention--deleted');\n m.render(this, {this.innerText});\n }\n });\n\n throttle(100, () => {\n $('.NeonChatFrame script').each(function () {\n if (!self.executedScripts) self.executedScripts = {};\n let scriptURL = $(this).attr('src');\n if (!self.executedScripts[scriptURL]) {\n var scriptTag = document.createElement('script');\n scriptTag.src = scriptURL;\n document.head.appendChild(scriptTag);\n\n self.executedScripts[scriptURL] = true;\n }\n });\n })();\n }\n }\n\n onChatMessageClicked(eventName, model) {\n switch (eventName) {\n case 'dropdownHide': {\n this.hideChatMessage(model, true);\n break;\n }\n case 'dropdownRestore': {\n this.restoreChatMessage(model, true);\n break;\n }\n case 'dropdownDelete': {\n this.deleteChatMessage(model, true);\n break;\n }\n }\n }\n\n postChatMessage(model) {\n return model.save({ message: model.content, created_at: new Date(), chat_id: model.chat().id() }).then(\n (r) => {\n model.isTimedOut = false;\n model.isNeedToFlash = true;\n model.isEditing = false;\n model.chat().pushData({ relationships: { last_message: model } });\n },\n (r) => {\n model.isTimedOut = true;\n }\n );\n }\n\n editChatMessage(model, sync = false, content) {\n model.content = content;\n model.isNeedToFlash = true;\n model.pushAttributes({ message: content, edited_at: new Date() });\n if (sync) model.save({ actions: { msg: content }, edited_at: new Date(), message: content });\n\n m.redraw();\n }\n\n deleteChatMessage(model, sync = false, user = app.session.user) {\n model.isDeletedForever = true;\n if (!model.deleted_by()) model.pushData({ relationships: { deleted_by: user } });\n let list = this.getChatMessages((mdl) => mdl.chat() == model.chat() && !mdl.isDeletedForever);\n if (list.length) model.chat().pushData({ relationships: { last_message: list[list.length - 1] } });\n\n this.chatmessages = this.chatmessages.filter((mdl) => mdl != model);\n if (sync) model.delete();\n\n m.redraw();\n }\n\n totalHidden() {\n return this.totalHiddenCount;\n }\n\n hideChatMessage(model, sync = false, user = app.session.user) {\n model.pushData({ relationships: { deleted_by: user } });\n if (sync) model.save({ actions: { hide: true }, relationships: { deleted_by: app.session.user } });\n\n this.totalHiddenCount++;\n m.redraw();\n }\n\n restoreChatMessage(model, sync = false) {\n if (!this.isChatMessageExists(model)) {\n this.insertChatMessage(model);\n model.isNeedToFlash = true;\n } else {\n model.pushAttributes({ deleted_by: 0 });\n model.isNeedToFlash = true;\n delete model.data.relationships.deleted_by;\n }\n if (sync) model.save({ actions: { hide: false }, deleted_by: 0 });\n\n m.redraw();\n }\n\n setCurrentChat(model) {\n this.curChat = model;\n this.saveFrameState('selectedChat', model ? model.id() : null);\n }\n\n getCurrentChat() {\n return this.curChat;\n }\n\n apiFetchChats() {\n return app.store.find('chats').then((chats) => {\n chats.map((model) => this.addChat(model));\n this.chatsLoading = false;\n m.redraw();\n });\n }\n\n messageNotify(model) {\n if (!app.session.user || model.user().id() != app.session.user.id()) this.notifyTry(model);\n }\n\n notifyTry(model) {\n if (!('Notification' in window)) return;\n\n if (this.messageIsMention(model)) this.notifySend(model);\n this.notifySound(model);\n }\n\n messageIsMention(model) {\n return app.session.user && model.message().indexOf('@' + app.session.user.username()) >= 0;\n }\n\n notifySend(model) {\n let avatar = model.user().avatarUrl();\n if (!avatar) avatar = resources.base64PlaceholderAvatarImage;\n\n if (this.getFrameState('notify') && document.hidden)\n new Notification(model.chat().title(), {\n body: `${model.user().username()}: ${model.message()}`,\n icon: avatar,\n silent: true,\n timestamp: new Date(),\n });\n }\n\n notifySound(model) {\n if (!this.getFrameState('isMuted')) {\n let sound = this.messageIsMention(model) ? refAudio : audio;\n sound.currentTime = 0;\n sound.play();\n }\n }\n\n /**\n * https://github.com/flarum/core/blob/7e74f5a03c7f206014f3f091968625fc0bf29094/js/src/forum/components/PostStream.js#L579\n *\n * 'Flash' the given post, drawing the user's attention to it.\n *\n * @param {jQuery} $item\n */\n flashItem($item) {\n $item.addClass('flash').one('animationend webkitAnimationEnd', () => $item.removeClass('flash'));\n }\n}\n","import { extend } from 'flarum/extend';\nimport Application from 'flarum/Application';\nimport ChatFrame from './components/ChatFrame';\n\nimport Chat from './models/Chat';\nimport Message from './models/Message';\nimport User from 'flarum/models/User';\nimport Model from 'flarum/Model';\nimport ChatState from './states/ChatState';\nimport addChatPage from './addChatPage';\n\nconst chat = document.createElement('div');\nchat.setAttribute('id', 'chat');\n\ndocument.body.append(chat);\n\napp.initializers.add('xelson-chat', (app) => {\n app.store.models.chats = Chat;\n app.store.models.chatmessages = Message;\n\n function pivot(name, id, attr, transform) {\n pivot.hasOne = function (name, id, attr) {\n return function () {\n const relationship = this.data.attributes[name] && this.data.attributes[name][id] && this.data.attributes[name][id][attr];\n if (relationship) return app.store.getById(relationship.data.type, relationship.data.id);\n };\n };\n\n return function () {\n const value = this.data.attributes[name] && this.data.attributes[name][id] && this.data.attributes[name][id][attr];\n return transform ? transform(value) : value;\n };\n }\n\n Object.assign(User.prototype, {\n chat_pivot(chat_id) {\n return {\n role: pivot('chat_pivot', chat_id, 'role').bind(this),\n removed_by: pivot('chat_pivot', chat_id, 'removed_by').bind(this),\n readed_at: pivot('chat_pivot', chat_id, 'readed_at', Model.transformDate).bind(this),\n removed_at: pivot('chat_pivot', chat_id, 'removed_at', Model.transformDate).bind(this),\n joined_at: pivot('chat_pivot', chat_id, 'joined_at', Model.transformDate).bind(this),\n };\n },\n });\n\n extend(Application.prototype, 'mount', function () {\n if (!app.forum.attribute('xelson-chat.permissions.enabled')) return;\n\n app.chat = new ChatState();\n\n m.mount(document.getElementById('chat'), ChatFrame);\n\n if ('Notification' in window && app.chat.getFrameState('notify')) Notification.requestPermission();\n\n if (!app.pusher) {\n app.alerts.show({ type: 'error' }, app.translator.trans('xelson-chat.forum.pusher_not_found'));\n }\n\n app.chat.apiFetchChats();\n });\n\n //addChatPage();\n});\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/js/src/forum/components/ChatInput.js b/js/src/forum/components/ChatInput.js
index a68252f..42318fc 100644
--- a/js/src/forum/components/ChatInput.js
+++ b/js/src/forum/components/ChatInput.js
@@ -1,7 +1,7 @@
import Component from 'flarum/Component';
import Button from 'flarum/components/Button';
import ChatEditModal from './ChatEditModal';
-import {throttle} from 'flarum/utils/throttleDebounce';
+import { throttle } from 'flarum/utils/throttleDebounce';
export default class ChatInput extends Component {
oninit(vnode) {
@@ -25,8 +25,8 @@ export default class ChatInput extends Component {
input.lineHeight = parseInt(window.getComputedStyle(input).getPropertyValue('line-height'));
inputState.element = input;
- if(inputState.content().length) {
- this.inputProcess({target: input});
+ if (inputState.content() && inputState.content().length) {
+ this.inputProcess({ target: input });
}
this.updateLimit();
@@ -95,11 +95,11 @@ export default class ChatInput extends Component {
limiter.className = charsTyped < 100 ? 'reaching-limit' : '';
}
- saveDraft(text = this.state.input.content())
- {
- (this.state.input.lastDraft != text) && throttle(300, () => {
- this.state.setChatStorageValue('draft', text);
- })();
+ saveDraft(text = this.state.input.content()) {
+ this.state.input.lastDraft != text &&
+ throttle(300, () => {
+ this.state.setChatStorageValue('draft', text);
+ })();
this.state.input.lastDraft = text;
}
@@ -110,9 +110,8 @@ export default class ChatInput extends Component {
this.saveDraft(input.value.trim());
}
- resizeInput()
- {
- let input = this.state.input.element;
+ resizeInput() {
+ let input = this.state.getChatInput();
input.rows = 1;
this.state.input.rows = Math.min(input.scrollHeight / input.lineHeight, app.screen() === 'phone' ? 2 : 5);
diff --git a/js/src/forum/components/ChatPage.js b/js/src/forum/components/ChatPage.js
index 707f36b..727e980 100644
--- a/js/src/forum/components/ChatPage.js
+++ b/js/src/forum/components/ChatPage.js
@@ -58,12 +58,6 @@ export default class ChatPage extends Page {
if (this.listOpen()) {
this.element.querySelector('.ChatPage--list').style.height =
document.documentElement.clientHeight - this.element.querySelector('.ChatPage--list').getBoundingClientRect().top + 'px';
-
- console.log(
- this.element.querySelector('.ChatPage--list'),
- this.element.querySelector('.ChatPage--list').style.height,
- document.documentElement.clientHeight - this.element.querySelector('.ChatPage--list').getBoundingClientRect().top
- );
}
}
diff --git a/js/src/forum/index.js b/js/src/forum/index.js
index 47ae99c..8b82744 100644
--- a/js/src/forum/index.js
+++ b/js/src/forum/index.js
@@ -54,10 +54,7 @@ app.initializers.add('xelson-chat', (app) => {
if ('Notification' in window && app.chat.getFrameState('notify')) Notification.requestPermission();
if (!app.pusher) {
- app.alerts.show(
- { type: 'error' },
- app.translator.trans('xelson-chat.forum.pusher_not_found')
- );
+ app.alerts.show({ type: 'error' }, app.translator.trans('xelson-chat.forum.pusher_not_found'));
}
app.chat.apiFetchChats();
diff --git a/js/src/forum/states/ChatState.js b/js/src/forum/states/ChatState.js
index 7a2cfa9..931c94c 100644
--- a/js/src/forum/states/ChatState.js
+++ b/js/src/forum/states/ChatState.js
@@ -6,6 +6,7 @@ import Link from 'flarum/components/Link';
import * as resources from '../resources';
import ViewportState from './ViewportState';
+import { throttle } from 'flarum/utils/throttleDebounce';
var refAudio = new Audio();
refAudio.src = resources.base64AudioNotificationRef;
@@ -291,25 +292,20 @@ export default class ChatState {
let element = model instanceof Model ? document.querySelector(`.NeonChatFrame .message-wrapper[data-id="${model.id()}"] .message`) : model;
if (element) {
- element.innerText = content;
s9e.TextFormatter.preview(content, element);
// Workaround for user mentions that doesn't works properly
- $(element).find('.UserMention').each(function () {
- let user = app.store.getBy('users', 'username', this.innerText.substring(1));
- if(user)
- {
- this.className = '';
- m.render(this, (
-
- {'@' + user.displayName()}
-
- ))
- }
- });
+ $(element)
+ .find('.UserMention.UserMention--deleted')
+ .each(function () {
+ let user = app.store.getBy('users', 'username', this.innerText.substring(1));
+ if (this && user) {
+ this.classList.remove('UserMention--deleted');
+ m.render(this, {this.innerText});
+ }
+ });
- if (this.executeScriptsTimeout) clearTimeout(this.executeScriptsTimeout);
- this.executeScriptsTimeout = setTimeout(() => {
+ throttle(100, () => {
$('.NeonChatFrame script').each(function () {
if (!self.executedScripts) self.executedScripts = {};
let scriptURL = $(this).attr('src');
@@ -321,7 +317,7 @@ export default class ChatState {
self.executedScripts[scriptURL] = true;
}
});
- }, 100);
+ })();
}
}
diff --git a/js/src/forum/states/ViewportState.js b/js/src/forum/states/ViewportState.js
index 21c3148..125abf5 100644
--- a/js/src/forum/states/ViewportState.js
+++ b/js/src/forum/states/ViewportState.js
@@ -99,7 +99,7 @@ export default class ViewportState {
messageEdit(model) {
if (this.input.writingPreview) this.input.instance.inputPreviewEnd();
- if(this.messageEditing) this.messageEditEnd();
+ if (this.messageEditing) this.messageEditEnd();
model.isEditing = true;
model.oldContent = model.message();
diff --git a/resources/less/forum/ChatViewport.less b/resources/less/forum/ChatViewport.less
index 253b7dd..f300122 100644
--- a/resources/less/forum/ChatViewport.less
+++ b/resources/less/forum/ChatViewport.less
@@ -2,6 +2,10 @@
.UserMention {
.user-select(none);
+ a {
+ color: #697a96 !important;
+ }
+
display: inline-block;
color: #697a96 !important;
border-radius: 4px;
@@ -11,6 +15,9 @@
}
.UserMention:hover {
+ a {
+ color: #ff94c1 !important;
+ }
color: #ff94c1 !important;
}