You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
12 KiB

(()=>{var t={4613:(t,e,a)=>{const n=a(7427),o=a(5458),s=a(4641),c=20,i=c+"px",l=5e3,r="enter",d="ctrl",m=new Audio("./public/chat_message.mp3");let p,f,h,u,g,b,C,v,x="345px",w="300px",y="All",k="Room ",O=!1,T=$("#chatMessage .wysiwyg-editor"),I=!1,z=!1;function R(t,e){const a=(""+e).endsWith("px")?e:e+"px";O?"object"==typeof Room&&"function"==typeof Room.setCssVar&&Room.setCssVar(t,a):n.setCssVar(t,a)}function N(t){R("--chat-width",t)}function _(t){R("--chat-height",t)}function A(){const t=o.load();return void 0===t.chat&&(t.chat={muted:!1,sendOn:b},o.save(t)),I=!0===t.chat.muted,g=t.chat.sendOn===r?r:d,t}function S(){const t=$("#chat .audio");t.removeClass("sound"+(I?"":"-mute")).addClass("sound"+(I?"-mute":"")).attr("title",t.data(I?"sound-enabled":"sound-muted"))}function D(){const t=$("#chat .send-btn"),e=g===d;e?(t.addClass("send-ctrl"),T.off("keydown",E).keydown("Ctrl+return",E)):(t.removeClass("send-ctrl"),T.off("keydown",E).keydown("return",E)),t.attr("title",t.data(e?"send-ctrl":"send-enter"))}function E(){$("#chat .send").trigger("click")}function M(){u=null,chatActivity("typing_stop",$(".room-block .room-container").data("room-id"))}function W(){K($(this).data("emt"))}function j(){return p.hasClass("closed")}function J(t){C=t.userId,y=t.all,k=t.room,b=!0===t.sendOnEnter?r:d,g=b,p=$("#chatPanel"),clearTimeout(p.data("timeout")),f=$("#chatPopup .control.block"),v=f.data("new-msg"),T=$("#chatMessage .wysiwyg-editor"),function(){const t=s.emoticons,e=$("#emotMenuList");let a;e.html("");for(let n=0;n<t.length;++n)n%20==0&&(a=$("<tr></tr>"),e.append(a)),a.append($("<td>").append($("<div>").addClass("emt").html(s.emoticonize(t[n])).data("emt",t[n]).click(W)));const n=$("#emoticons");n.html(""),n.append(" "+s.emoticonize(":)"));const c=$("#chat .audio"),i=$("#chat .send-btn");A(),S(),D(),c.off().click((function(){const t=A();I=t.chat.muted=!t.chat.muted,S(),o.save(t)})),i.off().click((function(){const t=A();g=t.chat.sendOn=t.chat.sendOn!==d?d:r,D(),o.save(t)})),$("#chat #hyperlink").parent().find("button").off().click((function(){!function(){const t=$("#chat #hyperlink").parent().find("input").val();if(""===t)return;let e=t.trim();if(""===e)return;/^(https?:)?\/\//i.test(e)||(e="http://"+e);const a=$("<div>").append($("<a></a>").attr("target","_blank").attr("href",e).text(e)).html();if(window.getSelection){const t=window.getSelection();if(t.rangeCount){const e=t.getRangeAt(0);$(e.startContainer).parents(".wysiwyg-editor").length>0?(e.deleteContents(),e.insertNode(a)):K(a)}}}()})),s.animate()}(),h=$("#chatTabs"),h.off().on("shown.bs.tab",(function(t){const e=$(t.target).attr("aria-controls");Q($("#"+e)),$("#activeChatTab").val(e).trigger("change")})),h.delegate(".btn.close-chat","click",(function(){P($(this).closest("a").attr("aria-controls")),$("#chatTabs li:last-child a").tab("show")})),O?L():(f.attr("title",""),p.removeClass("room opened").addClass("closed").off("mouseenter mouseleave").resizable({handles:"n, "+(o.isRtl?"e":"w"),disabled:j(),minHeight:195,minWidth:260,stop:function(t,e){p.css({top:"",left:""}),x=e.size.height+"px",_(x),N(e.size.width)}}),_(c)),f.off().click(G),$("#chatMessage").off().on("input propertychange paste",(function(){const t=$(".room-block .room-container");t.length&&(u?clearTimeout(u):chatActivity("typing_start",t.data("room-id")),u=setTimeout(M,l))})),$("#chat .chat-toolbar .link-field").off().on("keypress",(function(t){return 13===t.keyCode&&$(this).parent().find("button").trigger("click"),13!==t.keyCode})),z=!0}function P(t){$('#chatTabs li a[aria-controls="'+t+'"]').parent().remove(),$("#"+t).remove()}function H(t,e){if(z||J({}),$("#chat").length<1||$("#"+t).length)return;e||(e="chatTab-all"===t?y:k+t.substr(9));const a=$('<a class="nav-link" data-bs-toggle="tab" role="tab">').attr("aria-controls",t).attr("href","#"+t).text(e),o=$('<li class="nav-item">').append(a);0===t.indexOf("chatTab-u")&&a.append(n.tmpl("#chat-close-block")),h.find(".nav.nav-tabs").append(o);const s=n.tmpl("#chat-msg-area-template",t);h.find(".tab-content").append(s),s.append($('<div class="clear icons actions float-start">').addClass("short").append(n.tmpl("#chat-actions-short-template"))),s.append($('<div class="clear icons actions float-start">').addClass("short-mod").append(n.tmpl("#chat-actions-short-template")).append(n.tmpl("#chat-actions-accept-template"))),s.append($('<div class="clear icons actions float-start">').addClass("full").append(n.tmpl("#chat-actions-short-template")).append(n.tmpl("#chat-actions-others-template").children().clone())),s.append($('<div class="clear icons actions float-start">').addClass("full-mod").append(n.tmpl("#chat-actions-short-template")).append(n.tmpl("#chat-actions-others-template").children().clone()).append(n.tmpl("#chat-actions-accept-template")));const c=B();c.find(".user").off().click((function(){const t=$(this).parent();showUserInfo(t.data("userId"))})),c.find(".add").off().click((function(){const t=$(this).parent();addContact(t.data("userId"))})),c.find(".new-email").off().click((function(){const t=$(this).parent();privateMessage(t.data("userId"))})),c.find(".invite").off().click((function(){const t=$(this).parent();inviteUser(t.data("userId"))})),c.find(".accept").off().click((function(){const t=$(this).parent(),e=t.data("msgId");chatActivity("accept",t.data("roomId"),e),B(),$("#chat-msg-id-"+e).remove()})),function(t){j()?h.find(".nav.nav-tabs .nav-link").each((function(){const e=$(this),a=e.attr("aria-controls"),n=$("#"+a);a===t?(e.addClass("active"),n.addClass("active"),e.attr("aria-selected",!0)):(e.removeClass("active"),n.removeClass("active"),e.attr("aria-selected",!1))})):$('#chatTabs li a[aria-controls="'+t+'"]').tab("show"),$("#activeChatTab").val(t).trigger("change")}(t)}function B(){return $("#chat .tab-content .messageArea .icons").hide()}function U(t){return t.closest(".messageArea").find(".actions."+t.data("actions"))}function V(t){if($("#chat").length>0&&t&&"chat"===t.type){let e,a,c=!1;for(;a=t.msg.pop();){let i=$("#"+a.scope);a.from.id===C||!j()&&i.is(":visible")||(c=!0);const l=("full"===a.actions?"full":"short")+(a.needModeration?"-mod":"");e=n.tmpl("#chat-msg-template","chat-msg-id-"+a.id);const r=e.find(".user-row").data("userId",a.from.id).data("actions",l).mouseenter((function(){B(),U($(this)).data("userId",$(this).data("userId")).data("roomId",$(this).data("roomId")).data("msgId",$(this).data("msgId")).css("top",$(this).closest(".msg-row")[0].offsetTop+20+"px").show()}));a.needModeration&&(r.parent().addClass("need-moderation"),r.data("roomId",a.scope.substring(9)).data("msgId",a.id)),i.mouseleave((function(){B()})),e.find(".from").data("user-id",a.from.id).html(a.from.displayName||a.from.name),e.find(".time").html(a.time).attr("title",a.sent),i.length||(H(a.scope,a.scopeName),i=$("#"+a.scope)),"accept"===t.mode&&$("#chat-msg-id-"+a.id).remove();const d=i[0].scrollHeight-(i.scrollTop()+i.innerHeight())<3;i.data("lastDate")!==a.date&&(i.append(n.tmpl("#chat-date-template").html(a.date).mouseenter((function(){B()}))),i.data("lastDate",a.date)),i.append(e),e.find(".user-row")[0].style.cssText=`\n\t\t\t\tbackground-image: url(${a.from.img?a.from.img:"./profile/"+a.from.id+"?anticache="+Date.now()});\n\t\t\t\tbackground-position-x: ${o.isRtl?"right":"left"};\n\t\t\t`,e.find(".msg").html(s.emoticonize(a.message?a.message:"")),d&&Q(i)}c&&(f.addClass("bg-warning"),p.is(":visible")&&!I&&n.notify(v,"new_chat_msg",(()=>{m.play().then((function(){})).catch((function(){}))}))),s.animate()}}function X(){N(w),p.resizable({handles:o.isRtl?"e":"w",minWidth:165,stop:function(t,e){p.css({left:"",width:"",height:""}),w=e.size.width+"px",N(w)}})}function L(){void 0!==p.resizable("instance")&&p.resizable("destroy")}function q(t){if(j()){let e;f.removeClass("bg-warning"),O?e={width:w}:(e={height:x},p.resizable("option","disabled",!1)),p.removeClass("closed").animate(e,1e3,(function(){B(),p.removeClass("closed"),p.css({height:"",width:""}),"function"==typeof t&&t(),f.attr("title",f.data("ttl-undock")),O?(X(),"object"==typeof window.WbArea&&window.WbArea.resize()):_(x),$("#chat .messageArea").each((function(){Q($(this))}))}))}}function F(t){if(!j()){let e;O?e={width:i}:(e={height:i},p.resizable("option","disabled",!0)),p.animate(e,1e3,(function(){p.addClass("closed").css({height:"",width:""}),O?(N(i),L(),"object"==typeof window.WbArea&&window.WbArea.resize()):_(i),"function"==typeof t&&t(),f.attr("title",f.data("ttl-dock"))}))}}function G(){j()?q():F()}function K(t){T.html(T.html()+" "+t+" ").trigger("change")}function Q(t){t.animate({scrollTop:t[0].scrollHeight},300)}$((function(){function t(){$(document).off("click",e)}function e(){n.requestNotifyPermission(t,t)}Wicket.Event.subscribe("/websocket/message",(function(t,e){try{if(e instanceof Blob)return;const t=JSON.parse(e);if(t)switch(t.type){case"chat":"clean"===t.action?$("#"+t.scope).html(""):V(t);break;case"typing":!function(t,e){if("object"!=typeof Room)return;const a=Room.getClient(t);if(!a)return;const n=a.find(".typing-activity");n&&(e?n.addClass("typing"):n.removeClass("typing"))}(t.uid,t.active)}}catch(t){}})),$(document).on("click",e)})),t.exports={SEND_ENTER:r,SEND_CTRL:d,reinit:J,removeTab:P,addTab:H,addMessage:V,open:q,setOpened:function(){q((function(){X()}))},close:F,toggle:G,setRoomMode:function(t){O=t,z&&!O&&($('li[aria-controls^="chatTab-u"]').remove(),$('div[id^="chatTab-u"]').remove()),J({userId:C,all:y,room:k,sendOnEnter:g===r})},clean:function(){T.html("").trigger("change")},reload:()=>{A(),S(),D()},validate:function(){return!!T&&T.text().trim().length>0}}},4641:t=>{const e=new RegExp("(\\"+[")","(","*","[","]","{","}","|","^","<",">","\\","?","+","=","."].join("|\\")+")","g"),a="(^|[\\s\\0])",n=[],o=[],s={animate:!0,delay:500,exclude:"pre,code,.no-emoticons"};function c(t){const n=t.text.replace(e,"\\$1");return t.regexp=new RegExp(a+"("+n+")","g"),t}function i(t){for(let e=0;e<t.length;++e){const a=t[e];let s="object"==typeof a?JSON.parse(JSON.stringify(a)):{text:a,cssClass:" "};n.push(s.text),o.push(c(s)),s.text.indexOf("=")>-1&&(s=JSON.parse(JSON.stringify(s)),s.text=s.text.replace(/=/g,"&#61;").replace(/[+]/g,"&#43;"),o.push(c(s))),s.text.indexOf("'")>-1&&(s=JSON.parse(JSON.stringify(s)),s.text=s.text.replace(/'/g,"&#39;"),o.push(c(s)))}}i([":-)",":o)",":c)",":^)",":-D",":-(",":-9",";-)",":-P",":-p",":-Þ",":-b",":-O",":-/",":-X",":-#",":'(","B-)","8-)",";*(",":-*",":-\\","?-)"]),i([":)",":]","=]","=)","8)",":}",":D",":(",":[",":{","=(",";)",";]",";D",":P",":p","=P","=p",":b",":Þ",":O",":/","=/",":S",":#",":X","B)",":|",":\\","=\\",":*",":&gt;",":&lt;"]),i([{text:"&gt;:)",cssClass:"red-emoticon small-emoticon spaced-emoticon"},{text:"&gt;;)",cssClass:"red-emoticon small-emoticon spaced-emoticon"},{text:"&gt;:(",cssClass:"red-emoticon small-emoticon spaced-emoticon"},{text:"&gt;: )",cssClass:"red-emoticon small-emoticon"},{text:"&gt;; )",cssClass:"red-emoticon small-emoticon"},{text:"&gt;: (",cssClass:"red-emoticon small-emoticon"},{text:";(",cssClass:"red-emoticon spaced-emoticon"},{text:"&lt;3",cssClass:"pink-emoticon counter-rotated"},{text:"O_O",cssClass:"no-rotate"},{text:"o_o",cssClass:"no-rotate"},{text:"0_o",cssClass:"no-rotate"},{text:"O_o",cssClass:"no-rotate"},{text:"T_T",cssClass:"no-rotate"},{text:"^_^",cssClass:"no-rotate"},{text:"O:)",cssClass:"small-emoticon spaced-emoticon"},{text:"O: )",cssClass:"small-emoticon"},{text:"8D",cssClass:"small-emoticon spaced-emoticon"},{text:"XD",cssClass:"small-emoticon spaced-emoticon"},{text:"xD",cssClass:"small-emoticon spaced-emoticon"},{text:"=D",cssClass:"small-emoticon spaced-emoticon"},{text:"8O",cssClass:"small-emoticon spaced-emoticon"},{text:"[+=..]",cssClass:"no-rotate nintendo-controller"}]),t.exports={emoticons:n,matchers:o,defaults:s,emoticonize:function(t,e){let a="css-emoticon";$.extend({},s,e).animate&&(a+=" un-transformed-emoticon animated-emoticon");for(let e=0;e<o.length;++e){const n=o[e],s=a+" "+n.cssClass;t=t.replace(n.regexp,"$1<span class='"+s+"'>$2</span>")}return t},animate:function(t){const e=$.extend({},s,t);e.animate&&setTimeout((function(){$(".un-transformed-emoticon").removeClass("un-transformed-emoticon")}),e.delay)}}},7427:t=>{"use strict";t.exports=OmUtil},5458:t=>{"use strict";t.exports=Settings}},e={};Object.assign(window,{Chat:function a(n){var o=e[n];if(void 0!==o)return o.exports;var s=e[n]={exports:{}};return t[n](s,s.exports,a),s.exports}(4613)})})();