Ver código fonte

[add][Fixes #36] Sort emojis by use

B Thibault 8 anos atrás
pai
commit
70fc412ac4
2 arquivos alterados com 81 adições e 52 exclusões
  1. 37 8
      cli/emojiBar.js
  2. 44 44
      srv/public/slack.min.js

+ 37 - 8
cli/emojiBar.js

@@ -59,14 +59,38 @@ var EMOJI_BAR = (function() {
         return wrapEmojiLi(emojiName, domParent);
     }
 
+    /** @type {function(Object.<string,*>, Object.<string, number>):Array.<{name:string, pos:number, count:number}>} */
+    ,sortEmojis = function(emojiObj, favoriteEmojis) {
+        var names = []
+            ,index = 0;
+        for (var i in emojiObj)
+            names.push({
+                name: i,
+                pos: index,
+                count: favoriteEmojis[i] || 0
+            });
+        names = names.sort(function(a, b) {
+            var diff = b.count -a.count;
+            if (diff) return diff;
+            return a.pos -b.pos;
+        });
+        return names;
+    }
+
     /** @type function(string=):number */
     ,search = function(queryString) {
         var emojiCount = 0
-            ,toRemove = [];
+            ,toRemove = []
+            /** @type {Array.<{name:string, pos:number, count:number}>} */
+            ,sortedEmojiNames;
         queryString = queryString === undefined ? searchBar.value : queryString;
+
+        // Service emojis
         if (isSupported()) {
             /** @type {Object.<string, *>} */
             var foundEmojis = window['searchEmojis'](queryString);
+
+            sortedEmojiNames = sortEmojis(foundEmojis, SLACK.context.self.prefs.favoriteEmojis);
             for (var i in emojiCache.unicode) {
                 if (emojiCache.unicode[i].visible) {
                     // We remove every item to reorder them (add them in order)
@@ -74,10 +98,11 @@ var EMOJI_BAR = (function() {
                     unicodeEmojis.removeChild(emojiCache.unicode[i].dom);
                 }
             }
-            for (var i in foundEmojis) {
-                var e = emojiCache.unicode[i];
+            for (var i =0, nbEmojis = sortedEmojiNames.length; i < nbEmojis; i++) {
+                var emojiName = sortedEmojiNames[i].name
+                    ,e = emojiCache.unicode[emojiName];
                 if (!e)
-                    e = emojiCache.unicode[i] = makeUnicodeEmojiLi(i, foundEmojis[i]);
+                    e = emojiCache.unicode[emojiName] = makeUnicodeEmojiLi(emojiName, foundEmojis[emojiName]);
                 if (!e.visible) {
                     e.visible = true;
                     unicodeEmojis.appendChild(e.dom);
@@ -85,17 +110,21 @@ var EMOJI_BAR = (function() {
                 emojiCount++;
             }
         }
+
+        // Custom emojis
         for (var i in emojiCache.custom) {
             if (emojiCache.custom[i].visible) {
                 emojiCache.custom[i].visible = false;
                 customEmojis.removeChild(emojiCache.custom[i].dom);
             }
         }
-        for (var i in SLACK.context.emojis) {
-            if ((queryString === '' || i.substr(0, queryString.length) === queryString) && SLACK.context.emojis[i].substr(0, 6) !== 'alias:') {
-                var e = emojiCache.custom[i];
+        sortedEmojiNames = sortEmojis(SLACK.context.emojis, SLACK.context.self.prefs.favoriteEmojis);
+        for (var i =0, nbEmojis = sortedEmojiNames.length; i < nbEmojis; i++) {
+            var emojiName = sortedEmojiNames[i].name;
+            if ((queryString === '' || emojiName.substr(0, queryString.length) === queryString) && SLACK.context.emojis[emojiName].substr(0, 6) !== 'alias:') {
+                var e = emojiCache.custom[emojiName];
                 if (!e)
-                    e = emojiCache.custom[i] = makeCustomEmoji(i, SLACK.context.emojis[i]);
+                    e = emojiCache.custom[emojiName] = makeCustomEmoji(emojiName, SLACK.context.emojis[emojiName]);
                 if (!e.visible) {
                     e.visible = true;
                     customEmojis.appendChild(e.dom);

+ 44 - 44
srv/public/slack.min.js

@@ -1,45 +1,45 @@
-function aa(a){this.id=a.id;this.name=a.name}function ba(a,b){this.id=a.id;this.name=a.name;this.b=parseFloat(a.last_read);this.a={};if(a.members)for(var d=0,c=a.members.length;d<c;d++){var f=h(b,a.members[d]);this.a[f.id]=f;f.f[this.id]=this}}function ca(a,b){var d=[];this.id=b.id;this.a={};for(var c=0,f=b.members.length;c<f;c++){var e=h(a,b.members[c]);this.a[b.members[c]]=e;e.f[this.id]=this;d.push(e.name)}this.name=d.join(", ");this.b=parseFloat(b.last_read)}
-function da(a,b){this.id=b.id;this.c=a;this.b=parseFloat(b.last_read)}function ea(a){this.id=a.id;this.name=a.name;this.status=a.status;this.b={J:a.profile.image_24,K:a.profile.image_32,l:a.profile.image_48,F:a.profile.image_72,I:a.profile.image_192,M:a.profile.image_512};this.f={};this.a=null}function fa(a){JSON.parse(a.emoji_use);a.highlight_words&&(a.highlight_words||"").split(",").filter(function(a){return""!==a.trim()})}
-function ga(a){this.id=a.id;this.name=a.name;this.b={L:a.icons.image_36,l:a.icons.image_48,F:a.icons.image_72};this.f={};this.a=null}function q(){this.s=null;this.f={};this.h={};this.o={};this.a={};this.b=null;this.i={};this.c={}}function h(a,b){return a.a[b]||a.i[b]||null}function v(a,b){return a.f[b]||a.o[b]||a.h[b]||null}"undefined"!==typeof module&&(module.D.G=q);function ha(a,b){this.i=a.user;this.id=a.ts;this.c=b||parseFloat(a.ts);this.type=a.type;this.h=a.subtype;this.b=a;this.a={};var d=this;a.reactions&&a.reactions.forEach(function(a){d.a[a.name]=[];a.users.forEach(function(b){d.a[a.name].push(b)})})}function w(a,b,d){this.id="string"===typeof a?a:a.id;this.a=[];this.b=b;d&&x(this,d)}function ia(a,b,d){a.a[b]&&(1===a.a[b].length?delete a.a[b]:a.a[b]=a.a[b].filter(function(a){return a!==d}))}
-function x(a,b){var d=0;b.forEach(function(a){d=Math.max(this.push(a),d)}.bind(a));ja(a)}w.prototype.push=function(a){for(var b=parseFloat(a.ts),d=0,c=this.a.length;d<c;d++)if(this.a[d].c===b)return b;for(this.a.push(new ha(a,b));this.a.length>this.b;)this.a.shift();if("reaction_added"===a.type){if(d=z(this,parseFloat(a.item.ts)))c=a.reaction,a=a.user,d.a[c]||(d.a[c]=[]),d.a[c].push(a)}else"reaction_removed"===a.type&&(d=z(this,parseFloat(a.item.ts)))&&ia(d,a.reaction,a.user);return b};
-function z(a,b){for(var d=0,c=a.a.length;d<c&&b>=a.a[d].c;d++)if(a.a[d].c===b)return a.a[d];return null}function ja(a){a.a.sort(function(a,d){return a.c-d.c})}"undefined"!==typeof module&&(module.D.H=w);var A={},C;function ka(){var a;if(!a){for(var b=0,d=navigator.languages.length;b<d;b++)if(A.hasOwnProperty(navigator.languages[b])){a=navigator.languages[b];break}a||(a="en")}C=A[a];console.log("Loading language pack: "+a);if(C.g)for(b in C.g)document.getElementById(b).textContent=C.g[b]};A.fr={C:"Utilisateur inconnu",B:"Channel inconnu",w:"Nouveau message",u:"Reseau",g:{fileUploadCancel:"Annuler",neterror:"Impossible de se connecter au chat !"}};A.en={C:"Unknown member",B:"Unknown channel",w:"New message",u:"Network",g:{fileUploadCancel:"Cancel",neterror:"Cannot connect to chat !"}};var F=null,G=0;
+function aa(a){this.id=a.id;this.name=a.name}function ba(a,b){this.id=a.id;this.name=a.name;this.b=parseFloat(a.last_read);this.a={};if(a.members)for(var d=0,c=a.members.length;d<c;d++){var f=n(b,a.members[d]);this.a[f.id]=f;f.f[this.id]=this}}function ca(a,b){var d=[];this.id=b.id;this.a={};for(var c=0,f=b.members.length;c<f;c++){var e=n(a,b.members[c]);this.a[b.members[c]]=e;e.f[this.id]=this;d.push(e.name)}this.name=d.join(", ");this.b=parseFloat(b.last_read)}
+function da(a,b){this.id=b.id;this.c=a;this.b=parseFloat(b.last_read)}function ea(a){this.id=a.id;this.name=a.name;this.status=a.status;this.b={L:a.profile.image_24,M:a.profile.image_32,l:a.profile.image_48,H:a.profile.image_72,K:a.profile.image_192,O:a.profile.image_512};this.f={};this.a=null}function fa(a){this.G=JSON.parse(a.emoji_use);a.highlight_words&&(a.highlight_words||"").split(",").filter(function(a){return""!==a.trim()})}
+function ga(a){this.id=a.id;this.name=a.name;this.b={N:a.icons.image_36,l:a.icons.image_48,H:a.icons.image_72};this.f={};this.a=null}function q(){this.s=null;this.f={};this.h={};this.o={};this.a={};this.b=null;this.i={};this.c={}}function n(a,b){return a.a[b]||a.i[b]||null}function w(a,b){return a.f[b]||a.o[b]||a.h[b]||null}"undefined"!==typeof module&&(module.F.I=q);function ha(a,b){this.i=a.user;this.id=a.ts;this.c=b||parseFloat(a.ts);this.type=a.type;this.h=a.subtype;this.b=a;this.a={};var d=this;a.reactions&&a.reactions.forEach(function(a){d.a[a.name]=[];a.users.forEach(function(b){d.a[a.name].push(b)})})}function y(a,b,d){this.id="string"===typeof a?a:a.id;this.a=[];this.b=b;d&&z(this,d)}function ia(a,b,d){a.a[b]&&(1===a.a[b].length?delete a.a[b]:a.a[b]=a.a[b].filter(function(a){return a!==d}))}
+function z(a,b){var d=0;b.forEach(function(a){d=Math.max(this.push(a),d)}.bind(a));ja(a)}y.prototype.push=function(a){for(var b=parseFloat(a.ts),d=0,c=this.a.length;d<c;d++)if(this.a[d].c===b)return b;for(this.a.push(new ha(a,b));this.a.length>this.b;)this.a.shift();if("reaction_added"===a.type){if(d=A(this,parseFloat(a.item.ts)))c=a.reaction,a=a.user,d.a[c]||(d.a[c]=[]),d.a[c].push(a)}else"reaction_removed"===a.type&&(d=A(this,parseFloat(a.item.ts)))&&ia(d,a.reaction,a.user);return b};
+function A(a,b){for(var d=0,c=a.a.length;d<c&&b>=a.a[d].c;d++)if(a.a[d].c===b)return a.a[d];return null}function ja(a){a.a.sort(function(a,d){return a.c-d.c})}"undefined"!==typeof module&&(module.F.J=y);var B={},D;function ka(){var a;if(!a){for(var b=0,d=navigator.languages.length;b<d;b++)if(B.hasOwnProperty(navigator.languages[b])){a=navigator.languages[b];break}a||(a="en")}D=B[a];console.log("Loading language pack: "+a);if(D.g)for(b in D.g)document.getElementById(b).textContent=D.g[b]};B.fr={D:"Utilisateur inconnu",C:"Channel inconnu",w:"Nouveau message",u:"Reseau",g:{fileUploadCancel:"Annuler",neterror:"Impossible de se connecter au chat !"}};B.en={D:"Unknown member",C:"Unknown channel",w:"New message",u:"Network",g:{fileUploadCancel:"Cancel",neterror:"Cannot connect to chat !"}};var F=null,G=0;
 function la(){var a=document.createDocumentFragment(),b=H.a.b?Object.keys(H.a.b.f):[];b.sort(function(a,b){return a[0]!==b[0]?a[0]-b[0]:(H.a.f[a]||H.a.h[a]).name.localeCompare((H.a.f[b]||H.a.h[b]).name)});b.forEach(function(b){b=H.a.f[b]||H.a.h[b];var c=document.createElement("li"),d=document.createElement("a");c.id=b.id;d.href="#"+b.id;"D"===b.id[0]?c.className="slack-context-room slack-ims":"G"===b.id[0]?c.className="slack-context-room slack-group":"C"===b.id[0]&&(c.className="slack-context-room slack-channel");d.textContent=
-b.name;c.appendChild(d);c&&a.appendChild(c)});b=H.a.a?Object.keys(H.a.a):[];b.sort(function(a,b){return H.a.a[a].name.localeCompare(H.a.a[b].name)});b.forEach(function(b){b=H.a.a[b].a;var c=document.createElement("li"),d=document.createElement("a");c.id=b.id;d.href="#"+b.id;c.className="slack-context-room";d.textContent=b.c.name;c.appendChild(d);c&&a.appendChild(c)});document.getElementById("chanList").textContent="";document.getElementById("chanList").appendChild(a);L();M()}
-function N(a){a?document.body.classList.remove("no-network"):document.body.classList.add("no-network");M()}function O(){if(F){document.body.classList.add("replyingTo");var a=document.getElementById("replyToContainer"),b=document.createElement("a");b.addEventListener("click",function(){F=null;O()});b.className="replyto-close";b.textContent="x";a.textContent="";a.appendChild(b);a.appendChild(P("reply_"+Q.id,F,!0))}else document.body.classList.remove("replyingTo")}
-function ma(a,b,d,c){var f=R(d);if(f){for(var e=document.createElement("li"),l=document.createElement("a"),g=document.createElement("span"),k=document.createElement("span"),m=[],n=0,p=c.length;n<p;n++){var r=h(H.a,c[n]);r&&m.push(r.name)}m.sort();k.textContent=m.join(", ");g.appendChild(f);g.className="emoji-small";l.href="javascript:toggleReaction('"+a+"', '"+b+"', '"+d+"')";l.appendChild(g);l.appendChild(k);e.className="slackmsg-reaction-item";e.appendChild(l);return e}return null}
-window.toggleReaction=function(a,b,d){var c=H.b[a];if(c){a:{for(var f=0,e=c.a.length;f<e;f++)if(c.a[f].id==b){c=c.a[f];break a}c=null}c&&(f=H.a.b.id,c.a[d]&&-1!==c.a[d].indexOf(f)?(c=new XMLHttpRequest,c.open("DELETE","api/reaction?room="+a+"&msg="+b+"&reaction="+encodeURIComponent(d),!0),c.send(null)):S(a,b,d))}};
-function T(a,b,d){var c=document.createElement("div"),f=document.createElement("div"),e=document.createElement("div"),l=document.createElement("div"),g=document.createElement("img"),k=document.createElement("span"),m=document.createElement("ul"),n=document.createElement("li"),p=document.createElement("ul"),r=document.createElement("ul"),t=b.b.user?H.a.a[b.b.user]:H.a.i[b.b.bot_id];c.id=a+"_"+b.c;c.className="slackmsg-item";f.className="slackmsg-ts";e.className="slackmsg-msg";l.className="slackmsg-author";
-g.className="slackmsg-author-img";k.className="slackmsg-author-name";m.className="slackmsg-hover";n.className="slackmsg-hover-reply";f.innerHTML=U(b.c);e.innerHTML=V(b.b.text||"");k.textContent=t?t.name:b.b.username||"?";t||b.b.username||(e.textContent=b.b.subtype||JSON.stringify(b.b));g.src=t?t.b.l:"";l.appendChild(g);l.appendChild(k);m.appendChild(n);"makeEmoji"in window?(g=document.createElement("li"),k=window.makeEmoji("arrow_heading_down"),t=window.makeEmoji("smile"),g.className="slackmsg-hover-reaction",
-t?(g.classList.add("emoji-small"),g.appendChild(t)):g.style.backgroundImage='url("smile.svg")',k?(n.classList.add("emoji-small"),n.appendChild(k)):n.style.backgroundImage='url("repl.svg")',m.appendChild(g)):n.style.backgroundImage='url("repl.svg")';c.appendChild(l);c.appendChild(e);c.appendChild(f);c.appendChild(p);c.appendChild(r);p.className="slackmsg-attachments";r.className="slackmsg-reactions";if(!0!==d){if(b.a)for(var u in b.a)(d=ma(a,b.id,u,b.a[u]))&&r.appendChild(d);b.b.attachments&&b.b.attachments.forEach(function(a){var b=
-document.createElement("li"),c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("a"),f=document.createElement("div"),g=document.createElement("img"),y=document.createElement("a"),l=document.createElement("div"),t=document.createElement("div"),k=document.createElement("img"),m=document.createElement("img"),n=document.createElement("div"),u=document.createElement("img"),r=document.createElement("span"),K=document.createElement("span");b.className="slackmsg-attachment";
-var E="#e3e4e6";a.color&&("#"===a.color[0]?E=a.color[0]:"good"===a.color?E="#2fa44f":"warning"===a.color?E="#de9e31":"danger"===a.color&&(E="#d50200"));c.style.borderColor=E;d.className="slackmsg-attachment-pretext";a.pretext?d.innerHTML=V(a.pretext):d.classList.add("hidden");e.target="_blank";a.title?(e.innerHTML=V(a.title),a.title_link&&(e.href=a.title_link),e.className="slackmsg-attachment-title"):e.className="hidden slackmsg-attachment-title";y.target="_blank";f.className="slackmsg-author";a.author_name?
-(y.innerHTML=V(a.author_name),y.href=a.author_link||"",y.className="slackmsg-author-name",g.className="slackmsg-author-img",a.author_icon?g.src=a.author_icon:g.classList.add("hidden")):f.classList.add("hidden");t.innerHTML=V(a.text||"");t.a="slackmsg-attachment-text";k.className="slackmsg-attachment-thumb";a.thumb_url?k.src=a.thumb_url:k.classList.add("hidden");m.className="slackmsg-attachment-img";a.image_url?m.src=a.image_url:m.classList.add("hidden");n.className="slackmsg-attachment-footer";r.className=
-"slackmsg-attachment-footer-text";u.className="slackmsg-attachment-footer-icon";a.footer?(r.innerHTML=V(a.footer),a.footer_icon?u.src=a.footer_icon:u.classList.add("hidden")):(u.classList.add("hidden"),r.classList.add("hidden"));K.className="slackmsg-ts";a.ts?K.innerHTML=U(a.ts):K.classList.add("hidden");f.appendChild(g);f.appendChild(y);l.appendChild(t);l.appendChild(k);n.appendChild(u);n.appendChild(r);n.appendChild(K);c.appendChild(e);c.appendChild(f);c.appendChild(l);c.appendChild(m);c.appendChild(n);
-b.appendChild(d);b.appendChild(c);b&&p.appendChild(b)})}c.appendChild(m);return c}function U(a){"string"!==typeof a&&(a=parseFloat(a));return(new Date(1E3*a)).toLocaleTimeString()}
-function R(a){a:{for(var b=a,d={};!d[b];){if(a=H.a.c[b])if("alias:"==a.substr(0,6))d[b]=!0,b=a.substr(6);else{b=document.createElement("span");b.className="emoji-custom emoji";b.style.backgroundImage="url('"+a+"')";a=b;break a}break}a=b}"string"===typeof a&&"makeEmoji"in window&&(a=window.makeEmoji(a));return"string"===typeof a?null:a}
-function na(a){return a.replace(/:([^ \t:]+):/g,function(b,d){var c=R(d);if(c){var f=document.createElement("span");f.className=b===a?"emoji-medium":"emoji-small";f.appendChild(c);return f.outerHTML}return b})}
-function V(a){a=a.split(/\r?\n/g);for(var b=0,d=a.length;b<d;b++){for(var c=a[b],f="",e={},l=!1,g=0,c=c.replace(RegExp("<([@#]?)([^>]*)>","g"),function(a,b,c){c=c.split("|");if("@"===b)c[1]?"@"!==c[1][0]&&(c[1]="@"+c[1]):(a=h(H.a,c[0]),c[1]=a?"@"+a.name:C.C),c[0]="#"+c[0],c[2]="slackmsg-link slackmsg-link-user";else if("#"===b)c[1]?"#"!==c[1][0]&&(c[1]="#"+c[1]):(a=v(H.a,c[0]),c[1]=a?"#"+a.name:C.B),c[0]="#"+c[0],c[2]="slackmsg-link slackmsg-link-chan";else if(-1!==c[0].indexOf("://"))c[1]||(c[1]=
-c[0]),c[2]="slackmsg-link";else return a;return'<a href="'+c[0]+'" class="'+c[2]+'"'+(b?"":' target="_blank"')+">"+c[1]+"</a>"}),c=na(c),k=c.length,m=function(a,b,c){for(;a[b];){if(" "!=a[b]&&a[b]!=c&&a[b+1]==c)return!0;b++}return!1},n=function(a){return Object.keys(e).length?'<span class="'+Object.keys(a).join(" ")+'">':""};g<k&&(" "===c[g]||"\t"===c[g]);)g++;"&gt;"===c.substr(g,4)&&(l=!0,g+=4);for(;g<k;g++){var p=c[g];if("<"===p){do f+=c[g++];while(">"!==c[g-1]);g--}else if(!e["slackmsg-style-bold"]&&
-"*"===p&&c[g+1]&&m(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-bold"]=!0,f+=n(e);else if(!e["slackmsg-style-strike"]&&"~"===p&&c[g+1]&&m(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-strike"]=!0,f+=n(e);else if(!e["slackmsg-style-code"]&&"`"===p&&c[g+1]&&m(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-code"]=!0,f+=n(e);else if(!e["slackmsg-style-italic"]&&"_"===p&&c[g+1]&&m(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-italic"]=
-!0,f+=n(e);else{var r=!1,f=f+p;do{if(e["slackmsg-style-bold"]&&"*"!==p&&"*"===c[g+1])delete e["slackmsg-style-bold"],r=!0;else if(e["slackmsg-style-strike"]&&"~"!==p&&"~"===c[g+1])delete e["slackmsg-style-strike"],r=!0;else if(e["slackmsg-style-code"]&&"`"!==p&&"`"===c[g+1])delete e["slackmsg-style-code"],r=!0;else if(e["slackmsg-style-italic"]&&"_"!==p&&"_"===c[g+1])delete e["slackmsg-style-italic"],r=!0;else break;p=c[++g]}while(g<k);r&&(f+="</span>"+n(e))}}e&&(f+="</span>");a[b]=l?'<span class="slackmsg-style-quote">'+
-f+"</span>":f}return a.join("<br/>")}function P(a,b,d){"me_message"===b.h?(a=T(a,b,d),a.classList.add("slackmsg-me_message")):a=T(a,b,d);return a}function M(){var a=0,b=0,d="";if(W)d="!"+C.u+" - ",document.getElementById("linkFavicon").href="favicon_err.png";else{for(var c in X)X.hasOwnProperty(c)&&(a+=X[c].m,b+=X[c].j);b?d="(!"+b+") - ":a&&(d="("+a+") - ");document.getElementById("linkFavicon").href=b||a?"favicon.png?h="+b+"&m="+a:"favicon_ok.png"}d+=H.a.s.name;document.title=d}
-function oa(){if("Notification"in window)if("granted"===Notification.permission){var a=Date.now();if(G+3E4<a){var b=new Notification(C.w);G=a;setTimeout(function(){b.close()},5E3)}}else"denied"!==Notification.permission&&Notification.requestPermission()}
-function pa(){var a=document.createDocumentFragment(),b=Q.id;document.getElementById("chatWindow").textContent="";H.b[b]&&H.b[b].a.forEach(function(c){"message"===c.type&&(c=P(b,c),a.appendChild(c))});var d=document.getElementById("chatWindow");d.appendChild(a);d.scrollTop=d.scrollHeight-d.clientHeight}
-function qa(a){function b(a,b){for(b=b||a.target;b!==a.currentTarget&&b;){if(b.classList.contains("slackmsg-item"))return b.id;b=b.parentElement}}for(var d=a.target;d!==a.currentTarget&&d&&!d.classList.contains("slackmsg-hover");){if(d.parentElement&&d.parentElement.classList.contains("slackmsg-hover")){if(a=b(a,d)){a=parseFloat(a.split("_")[1]);var c=z(H.b[Q.id],a);c&&d.classList.contains("slackmsg-hover-reply")?F!==c&&(F=c,O()):c&&d.classList.contains("slackmsg-hover-reaction")&&ra.A(document.body,
-function(a){a&&S(Q.id,c.id,a)})}break}d=d.parentElement}}function Y(){document.getElementById("msgInput").focus()}function L(){var a=document.location.hash.substr(1),b=v(H.a,a),a=h(H.a,a);b&&b!==Q?sa(b):a&&a.a&&sa(a.a)}
-document.addEventListener("DOMContentLoaded",function(){ka();document.getElementById("chatWindow").addEventListener("click",qa);window.addEventListener("hashchange",function(){document.location.hash&&"#"===document.location.hash[0]&&L()});document.getElementById("fileUploadCancel").addEventListener("click",function(a){a.preventDefault();document.getElementById("fileUploadError").classList.add("hidden");document.getElementById("fileUploadContainer").classList.add("hidden");document.getElementById("fileUploadInput").value=
-"";return!1});document.getElementById("fileUploadForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("fileUploadInput");var b=a.value;b&&(b=b.substr(b.lastIndexOf("\\")+1),ta(b,a.files[0],function(a){var b=document.getElementById("fileUploadError");a?(b.textContent=a,b.classList.remove("hidden")):(b.classList.add("hidden"),document.getElementById("fileUploadInput").value="",document.getElementById("fileUploadContainer").classList.add("hidden"))}));return!1});
-document.getElementById("attachFile").addEventListener("click",function(a){a.preventDefault();Q&&document.getElementById("fileUploadContainer").classList.remove("hidden");return!1});document.getElementById("msgForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("msgInput");if(Q&&a.value){var b=Q,d=F,c=new XMLHttpRequest,f="api/msg?room="+b.id+"&text="+encodeURIComponent(a.value);if(d){var e=h(H.a,d.i),l="Message";"C"===b.id[0]?l="Channel message":"D"===b.id[0]?
-l="Direct message":"G"===b.id[0]&&(l="Group message");f+="&attachments="+encodeURIComponent(JSON.stringify([{fallback:d.b.text||"",author_name:"<@"+e.id+"|"+e.name+">",author_icon:e.b.l,text:d.b.text||"",footer:l,ts:d.c}]))}c.open("POST",f,!0);c.send(null);a.value="";F&&(F=null,O())}Y();return!1});window.addEventListener("blur",function(){window.hasFocus=!1});window.addEventListener("focus",function(){window.hasFocus=!0;G=0;Q&&ua();Y()});window.hasFocus=!0;(function(){var a=document.getElementById("emojiButton");
-if("makeEmoji"in window){var b=window.makeEmoji("smile");b?a.innerHTML="<span class='emoji-small'>"+b.outerHTML+"</span>":a.style.backgroundImage='url("smile.svg")';(b=window.makeEmoji("paperclip"))?document.getElementById("attachFile").innerHTML="<span class='emoji-small'>"+b.outerHTML+"</span>":document.getElementById("attachFile").style.backgroundImage='url("public/paperclip.svg")';a.addEventListener("click",function(){ra.A(document.body,function(a){a&&(document.getElementById("msgInput").value+=
-":"+a+":");Y()})})}else a.classList.add("hidden")})();Z()});var ra=function(){function a(a,b){for(var c=a.target;c!==g&&c&&"LI"!==c.nodeName;)c=c.parentElement;c&&"LI"===c.nodeName&&c.id&&"emojibar-"===c.id.substr(0,9)?b(c.id.substr(9)):b(null)}function b(){if(!d())return!1;D&&D(null);return!0}function d(){return g.parentElement?(g.parentElement.removeChild(k),g.parentElement.removeChild(g),!0):!1}function c(a){var b=0;a=void 0===a?r.value:a;if(l()){var c=window.searchEmojis(a),d;for(d in t)t[d].visible&&(t[d].visible=!1,n.removeChild(t[d].g));for(d in c){var e=
-t[d];if(!e){var e=t,g=d,k;k=d;var m=window.makeEmoji(c[d]),B=document.createElement("span");B.appendChild(m);B.className="emoji-medium";k=f(k,B);e=e[g]=k}e.visible||(e.visible=!0,n.appendChild(e.g));b++}}for(d in u)u[d].visible&&(u[d].visible=!1,p.removeChild(u[d].g));for(d in H.a.c)""!==a&&d.substr(0,a.length)!==a||"alias:"===H.a.c[d].substr(0,6)||(e=u[d],e||(c=u,g=e=d,k=H.a.c[d],m=document.createElement("span"),B=document.createElement("span"),m.className="emoji emoji-custom",m.style.backgroundImage=
-'url("'+k+'")',B.appendChild(m),B.className="emoji-medium",g=f(g,B),e=c[e]=g),e.visible||(e.visible=!0,p.appendChild(e.g)),b++);return b}function f(a,b){var c=document.createElement("li");c.appendChild(b);c.className="emojibar-list-item";c.id="emojibar-"+a;return{visible:!1,g:c}}function e(a){var b=document.createElement("img"),c=document.createElement("div");b.src=a;c.appendChild(b);c.className="emojibar-header";return c}function l(){return"searchEmojis"in window}var g=document.createElement("div"),
-k=document.createElement("div"),m=document.createElement("div"),n=document.createElement("ul"),p=document.createElement("ul"),r=document.createElement("input"),t={},u={},y=document.createElement("div"),I=document.createElement("span"),J=document.createElement("span"),D;k.addEventListener("click",function(a){var c=g.getBoundingClientRect();(a.screenY<c.top||a.screenY>c.bottom||a.screenX<c.left||a.screenX>c.right)&&b()});k.className="emojibar-overlay";g.className="emojibar";m.className="emojibar-emojis";
-y.className="emojibar-detail";I.className="emojibar-detail-img";J.className="emojibar-detail-name";n.className=p.className="emojibar-list";r.className="emojibar-search";y.appendChild(I);y.appendChild(J);m.appendChild(e(window.emojiProviderHeader));m.appendChild(n);m.appendChild(e("emojicustom.png"));m.appendChild(p);g.appendChild(m);g.appendChild(y);g.appendChild(r);r.addEventListener("keyup",function(){c()});g.addEventListener("mousemove",function(b){a(b,function(a){var b=a?t[a]||u[a]:null;b?(I.innerHTML=
-b.g.outerHTML,J.textContent=":"+a+":"):(I.textContent="",J.textContent="")})});g.addEventListener("click",function(b){a(b,function(a){a&&d()&&D&&D(a)})});return{isSupported:l,A:function(a,b){return l()?(D=b,a.appendChild(k),a.appendChild(g),r.value="",c(),r.focus(),!0):!1},search:c,close:b}}();var H,X={};function va(a,b){if(a&&(a!==Q||!window.hasFocus)){var d=new RegExp("<@"+H.a.b.id),c=!1,f=!1;X[a.id]||(X[a.id]={j:0,m:0});b.forEach(function(b){"message"===b.type&&b.text&&("D"===a.id[0]||b.text.match(d)?(f|=!X[a.id].j,X[a.id].j++,c=!0):X[a.id].m++)});M();document.getElementById(a.id).classList.add("unread");c&&document.getElementById(a.id).classList.add("unreadHi");f&&!window.hasFocus&&oa()}}
-function ua(){var a=Q;X[a.id]&&(X[a.id]={j:0,m:0},M());a=document.getElementById(a.id);a.classList.remove("unread");a.classList.remove("unreadHi")}H=new function(){this.c=0;this.a=new q;this.b={}};var W=0,Q=null;function wa(a){var b=new XMLHttpRequest;b.timeout=6E4;b.onreadystatechange=function(){if(4===b.readyState)if(b.status){var d=null,c=2===Math.floor(b.status/100);if(c){W&&(W=0,N(!0));d=b.response;try{d=JSON.parse(d)}catch(f){d=null}}else W?(W+=Math.floor((W||5)/2),W=Math.min(60,W)):(W=5,N(!1));a(c,d)}else W&&(W=0,N(!0)),wa(a)};b.open("GET","api?v="+H.c,!0);b.send(null)}
-function xa(a,b){if(a){if(b){var d=H;b.v&&(d.c=b.v);if(b["static"]){for(var c=d.a,f=b["static"],e=0,l=f.bots.length;e<l;e++)c.i[f.bots[e].id]=new ga(f.bots[e]);e=0;for(l=f.users.length;e<l;e++)c.a[f.users[e].id]=new ea(f.users[e]);e=0;for(l=f.ims.length;e<l;e++){var g=h(c,f.ims[e].user);g&&(g.a=new da(g,f.ims[e]),c.o[g.a.id]=g.a)}e=0;for(l=f.channels.length;e<l;e++)c.f[f.channels[e].id]=new ba(f.channels[e],c);e=0;for(l=f.groups.length;e<l;e++)c.h[f.groups[e].id]=new ca(c,f.groups[e]);c.c=f.emojis;
-c.s=new aa(f.team);c.b=h(c,f.self.id);c.b.c=new fa(f.self.prefs);la()}if(b.live){for(var k in b.live)(c=d.b[k])?x(c,b.live[k]):d.b[k]=new w(k,250,b.live[k]);for(var m in b.live)va(v(d.a,m),b.live[m]),Q&&b.live[Q.id]&&pa()}}Z()}else setTimeout(Z,1E3*W)}function Z(){wa(xa)}
-function sa(a){Q&&document.getElementById(Q.id).classList.remove("selected");document.getElementById(a.id).classList.add("selected");document.body.classList.remove("no-room-selected");Q=a;a=Q.name||(Q.c?Q.c.name:void 0);if(!a){a=[];for(var b in Q.a)a.push(Q.a[b].name);a=a.join(", ")}document.getElementById("currentRoomTitle").textContent=a;pa();Y();document.getElementById("fileUploadContainer").classList.add("hidden");ua();F&&(F=null,O());Q.b&&!H.b[Q.id]&&(b=new XMLHttpRequest,b.open("GET","api/hist?room="+
-Q.id,!0),b.send(null))}function ta(a,b,d){var c=Q;new FileReader;var f=new FormData,e=new XMLHttpRequest;f.append("file",b);f.append("filename",a);e.onreadystatechange=function(){4===e.readyState&&(204===e.status?d(null):d(e.statusText))};e.open("POST","api/file?room="+c.id);e.send(f)}function S(a,b,d){var c=new XMLHttpRequest;c.open("POST","api/reaction?room="+a+"&msg="+b+"&reaction="+encodeURIComponent(d),!0);c.send(null)};
+b.name;c.appendChild(d);c&&a.appendChild(c)});b=H.a.a?Object.keys(H.a.a):[];b.sort(function(a,b){return H.a.a[a].name.localeCompare(H.a.a[b].name)});b.forEach(function(b){b=H.a.a[b].a;var c=document.createElement("li"),d=document.createElement("a");c.id=b.id;d.href="#"+b.id;c.className="slack-context-room";d.textContent=b.c.name;c.appendChild(d);c&&a.appendChild(c)});document.getElementById("chanList").textContent="";document.getElementById("chanList").appendChild(a);M();N()}
+function O(a){a?document.body.classList.remove("no-network"):document.body.classList.add("no-network");N()}function P(){if(F){document.body.classList.add("replyingTo");var a=document.getElementById("replyToContainer"),b=document.createElement("a");b.addEventListener("click",function(){F=null;P()});b.className="replyto-close";b.textContent="x";a.textContent="";a.appendChild(b);a.appendChild(Q("reply_"+R.id,F,!0))}else document.body.classList.remove("replyingTo")}
+function ma(a,b,d,c){var f=T(d);if(f){for(var e=document.createElement("li"),m=document.createElement("a"),g=document.createElement("span"),h=document.createElement("span"),l=[],k=0,p=c.length;k<p;k++){var r=n(H.a,c[k]);r&&l.push(r.name)}l.sort();h.textContent=l.join(", ");g.appendChild(f);g.className="emoji-small";m.href="javascript:toggleReaction('"+a+"', '"+b+"', '"+d+"')";m.appendChild(g);m.appendChild(h);e.className="slackmsg-reaction-item";e.appendChild(m);return e}return null}
+window.toggleReaction=function(a,b,d){var c=H.b[a];if(c){a:{for(var f=0,e=c.a.length;f<e;f++)if(c.a[f].id==b){c=c.a[f];break a}c=null}c&&(f=H.a.b.id,c.a[d]&&-1!==c.a[d].indexOf(f)?(c=new XMLHttpRequest,c.open("DELETE","api/reaction?room="+a+"&msg="+b+"&reaction="+encodeURIComponent(d),!0),c.send(null)):U(a,b,d))}};
+function na(a,b,d){var c=document.createElement("div"),f=document.createElement("div"),e=document.createElement("div"),m=document.createElement("div"),g=document.createElement("img"),h=document.createElement("span"),l=document.createElement("ul"),k=document.createElement("li"),p=document.createElement("ul"),r=document.createElement("ul"),t=b.b.user?H.a.a[b.b.user]:H.a.i[b.b.bot_id];c.id=a+"_"+b.c;c.className="slackmsg-item";f.className="slackmsg-ts";e.className="slackmsg-msg";m.className="slackmsg-author";
+g.className="slackmsg-author-img";h.className="slackmsg-author-name";l.className="slackmsg-hover";k.className="slackmsg-hover-reply";f.innerHTML=oa(b.c);e.innerHTML=V(b.b.text||"");h.textContent=t?t.name:b.b.username||"?";t||b.b.username||(e.textContent=b.b.subtype||JSON.stringify(b.b));g.src=t?t.b.l:"";m.appendChild(g);m.appendChild(h);l.appendChild(k);"makeEmoji"in window?(g=document.createElement("li"),h=window.makeEmoji("arrow_heading_down"),t=window.makeEmoji("smile"),g.className="slackmsg-hover-reaction",
+t?(g.classList.add("emoji-small"),g.appendChild(t)):g.style.backgroundImage='url("smile.svg")',h?(k.classList.add("emoji-small"),k.appendChild(h)):k.style.backgroundImage='url("repl.svg")',l.appendChild(g)):k.style.backgroundImage='url("repl.svg")';c.appendChild(m);c.appendChild(e);c.appendChild(f);c.appendChild(p);c.appendChild(r);p.className="slackmsg-attachments";r.className="slackmsg-reactions";if(!0!==d){if(b.a)for(var u in b.a)(d=ma(a,b.id,u,b.a[u]))&&r.appendChild(d);b.b.attachments&&b.b.attachments.forEach(function(a){var b=
+document.createElement("li"),c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("a"),f=document.createElement("div"),g=document.createElement("img"),v=document.createElement("a"),h=document.createElement("div"),m=document.createElement("div"),t=document.createElement("img"),L=document.createElement("img"),k=document.createElement("div"),l=document.createElement("img"),u=document.createElement("span"),r=document.createElement("span");b.className="slackmsg-attachment";
+var E="#e3e4e6";a.color&&("#"===a.color[0]?E=a.color[0]:"good"===a.color?E="#2fa44f":"warning"===a.color?E="#de9e31":"danger"===a.color&&(E="#d50200"));c.style.borderColor=E;d.className="slackmsg-attachment-pretext";a.pretext?d.innerHTML=V(a.pretext):d.classList.add("hidden");e.target="_blank";a.title?(e.innerHTML=V(a.title),a.title_link&&(e.href=a.title_link),e.className="slackmsg-attachment-title"):e.className="hidden slackmsg-attachment-title";v.target="_blank";f.className="slackmsg-author";a.author_name?
+(v.innerHTML=V(a.author_name),v.href=a.author_link||"",v.className="slackmsg-author-name",g.className="slackmsg-author-img",a.author_icon?g.src=a.author_icon:g.classList.add("hidden")):f.classList.add("hidden");m.innerHTML=V(a.text||"");m.a="slackmsg-attachment-text";t.className="slackmsg-attachment-thumb";a.thumb_url?t.src=a.thumb_url:t.classList.add("hidden");L.className="slackmsg-attachment-img";a.image_url?L.src=a.image_url:L.classList.add("hidden");k.className="slackmsg-attachment-footer";u.className=
+"slackmsg-attachment-footer-text";l.className="slackmsg-attachment-footer-icon";a.footer?(u.innerHTML=V(a.footer),a.footer_icon?l.src=a.footer_icon:l.classList.add("hidden")):(l.classList.add("hidden"),u.classList.add("hidden"));r.className="slackmsg-ts";a.ts?r.innerHTML=oa(a.ts):r.classList.add("hidden");f.appendChild(g);f.appendChild(v);h.appendChild(m);h.appendChild(t);k.appendChild(l);k.appendChild(u);k.appendChild(r);c.appendChild(e);c.appendChild(f);c.appendChild(h);c.appendChild(L);c.appendChild(k);
+b.appendChild(d);b.appendChild(c);b&&p.appendChild(b)})}c.appendChild(l);return c}function oa(a){"string"!==typeof a&&(a=parseFloat(a));return(new Date(1E3*a)).toLocaleTimeString()}
+function T(a){a:{for(var b=a,d={};!d[b];){if(a=H.a.c[b])if("alias:"==a.substr(0,6))d[b]=!0,b=a.substr(6);else{b=document.createElement("span");b.className="emoji-custom emoji";b.style.backgroundImage="url('"+a+"')";a=b;break a}break}a=b}"string"===typeof a&&"makeEmoji"in window&&(a=window.makeEmoji(a));return"string"===typeof a?null:a}
+function pa(a){return a.replace(/:([^ \t:]+):/g,function(b,d){var c=T(d);if(c){var f=document.createElement("span");f.className=b===a?"emoji-medium":"emoji-small";f.appendChild(c);return f.outerHTML}return b})}
+function V(a){a=a.split(/\r?\n/g);for(var b=0,d=a.length;b<d;b++){for(var c=a[b],f="",e={},m=!1,g=0,c=c.replace(RegExp("<([@#]?)([^>]*)>","g"),function(a,b,c){c=c.split("|");if("@"===b)c[1]?"@"!==c[1][0]&&(c[1]="@"+c[1]):(a=n(H.a,c[0]),c[1]=a?"@"+a.name:D.D),c[0]="#"+c[0],c[2]="slackmsg-link slackmsg-link-user";else if("#"===b)c[1]?"#"!==c[1][0]&&(c[1]="#"+c[1]):(a=w(H.a,c[0]),c[1]=a?"#"+a.name:D.C),c[0]="#"+c[0],c[2]="slackmsg-link slackmsg-link-chan";else if(-1!==c[0].indexOf("://"))c[1]||(c[1]=
+c[0]),c[2]="slackmsg-link";else return a;return'<a href="'+c[0]+'" class="'+c[2]+'"'+(b?"":' target="_blank"')+">"+c[1]+"</a>"}),c=pa(c),h=c.length,l=function(a,b,c){for(;a[b];){if(" "!=a[b]&&a[b]!=c&&a[b+1]==c)return!0;b++}return!1},k=function(a){return Object.keys(e).length?'<span class="'+Object.keys(a).join(" ")+'">':""};g<h&&(" "===c[g]||"\t"===c[g]);)g++;"&gt;"===c.substr(g,4)&&(m=!0,g+=4);for(;g<h;g++){var p=c[g];if("<"===p){do f+=c[g++];while(">"!==c[g-1]);g--}else if(!e["slackmsg-style-bold"]&&
+"*"===p&&c[g+1]&&l(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-bold"]=!0,f+=k(e);else if(!e["slackmsg-style-strike"]&&"~"===p&&c[g+1]&&l(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-strike"]=!0,f+=k(e);else if(!e["slackmsg-style-code"]&&"`"===p&&c[g+1]&&l(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-code"]=!0,f+=k(e);else if(!e["slackmsg-style-italic"]&&"_"===p&&c[g+1]&&l(c,g,p))Object.keys(e).length&&(f+="</span>"),e["slackmsg-style-italic"]=
+!0,f+=k(e);else{var r=!1,f=f+p;do{if(e["slackmsg-style-bold"]&&"*"!==p&&"*"===c[g+1])delete e["slackmsg-style-bold"],r=!0;else if(e["slackmsg-style-strike"]&&"~"!==p&&"~"===c[g+1])delete e["slackmsg-style-strike"],r=!0;else if(e["slackmsg-style-code"]&&"`"!==p&&"`"===c[g+1])delete e["slackmsg-style-code"],r=!0;else if(e["slackmsg-style-italic"]&&"_"!==p&&"_"===c[g+1])delete e["slackmsg-style-italic"],r=!0;else break;p=c[++g]}while(g<h);r&&(f+="</span>"+k(e))}}e&&(f+="</span>");a[b]=m?'<span class="slackmsg-style-quote">'+
+f+"</span>":f}return a.join("<br/>")}function Q(a,b,d){"me_message"===b.h?(a=na(a,b,d),a.classList.add("slackmsg-me_message")):a=na(a,b,d);return a}function N(){var a=0,b=0,d="";if(W)d="!"+D.u+" - ",document.getElementById("linkFavicon").href="favicon_err.png";else{for(var c in X)X.hasOwnProperty(c)&&(a+=X[c].m,b+=X[c].j);b?d="(!"+b+") - ":a&&(d="("+a+") - ");document.getElementById("linkFavicon").href=b||a?"favicon.png?h="+b+"&m="+a:"favicon_ok.png"}d+=H.a.s.name;document.title=d}
+function qa(){if("Notification"in window)if("granted"===Notification.permission){var a=Date.now();if(G+3E4<a){var b=new Notification(D.w);G=a;setTimeout(function(){b.close()},5E3)}}else"denied"!==Notification.permission&&Notification.requestPermission()}
+function ra(){var a=document.createDocumentFragment(),b=R.id;document.getElementById("chatWindow").textContent="";H.b[b]&&H.b[b].a.forEach(function(c){"message"===c.type&&(c=Q(b,c),a.appendChild(c))});var d=document.getElementById("chatWindow");d.appendChild(a);d.scrollTop=d.scrollHeight-d.clientHeight}
+function sa(a){function b(a,b){for(b=b||a.target;b!==a.currentTarget&&b;){if(b.classList.contains("slackmsg-item"))return b.id;b=b.parentElement}}for(var d=a.target;d!==a.currentTarget&&d&&!d.classList.contains("slackmsg-hover");){if(d.parentElement&&d.parentElement.classList.contains("slackmsg-hover")){if(a=b(a,d)){a=parseFloat(a.split("_")[1]);var c=A(H.b[R.id],a);c&&d.classList.contains("slackmsg-hover-reply")?F!==c&&(F=c,P()):c&&d.classList.contains("slackmsg-hover-reaction")&&ta.B(document.body,
+function(a){a&&U(R.id,c.id,a)})}break}d=d.parentElement}}function Y(){document.getElementById("msgInput").focus()}function M(){var a=document.location.hash.substr(1),b=w(H.a,a),a=n(H.a,a);b&&b!==R?ua(b):a&&a.a&&ua(a.a)}
+document.addEventListener("DOMContentLoaded",function(){ka();document.getElementById("chatWindow").addEventListener("click",sa);window.addEventListener("hashchange",function(){document.location.hash&&"#"===document.location.hash[0]&&M()});document.getElementById("fileUploadCancel").addEventListener("click",function(a){a.preventDefault();document.getElementById("fileUploadError").classList.add("hidden");document.getElementById("fileUploadContainer").classList.add("hidden");document.getElementById("fileUploadInput").value=
+"";return!1});document.getElementById("fileUploadForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("fileUploadInput");var b=a.value;b&&(b=b.substr(b.lastIndexOf("\\")+1),va(b,a.files[0],function(a){var b=document.getElementById("fileUploadError");a?(b.textContent=a,b.classList.remove("hidden")):(b.classList.add("hidden"),document.getElementById("fileUploadInput").value="",document.getElementById("fileUploadContainer").classList.add("hidden"))}));return!1});
+document.getElementById("attachFile").addEventListener("click",function(a){a.preventDefault();R&&document.getElementById("fileUploadContainer").classList.remove("hidden");return!1});document.getElementById("msgForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("msgInput");if(R&&a.value){var b=R,d=F,c=new XMLHttpRequest,f="api/msg?room="+b.id+"&text="+encodeURIComponent(a.value);if(d){var e=n(H.a,d.i),m="Message";"C"===b.id[0]?m="Channel message":"D"===b.id[0]?
+m="Direct message":"G"===b.id[0]&&(m="Group message");f+="&attachments="+encodeURIComponent(JSON.stringify([{fallback:d.b.text||"",author_name:"<@"+e.id+"|"+e.name+">",author_icon:e.b.l,text:d.b.text||"",footer:m,ts:d.c}]))}c.open("POST",f,!0);c.send(null);a.value="";F&&(F=null,P())}Y();return!1});window.addEventListener("blur",function(){window.hasFocus=!1});window.addEventListener("focus",function(){window.hasFocus=!0;G=0;R&&wa();Y()});window.hasFocus=!0;(function(){var a=document.getElementById("emojiButton");
+if("makeEmoji"in window){var b=window.makeEmoji("smile");b?a.innerHTML="<span class='emoji-small'>"+b.outerHTML+"</span>":a.style.backgroundImage='url("smile.svg")';(b=window.makeEmoji("paperclip"))?document.getElementById("attachFile").innerHTML="<span class='emoji-small'>"+b.outerHTML+"</span>":document.getElementById("attachFile").style.backgroundImage='url("public/paperclip.svg")';a.addEventListener("click",function(){ta.B(document.body,function(a){a&&(document.getElementById("msgInput").value+=
+":"+a+":");Y()})})}else a.classList.add("hidden")})();Z()});var ta=function(){function a(a,b){for(var c=a.target;c!==h&&c&&"LI"!==c.nodeName;)c=c.parentElement;c&&"LI"===c.nodeName&&c.id&&"emojibar-"===c.id.substr(0,9)?b(c.id.substr(9)):b(null)}function b(){if(!d())return!1;x&&x(null);return!0}function d(){return h.parentElement?(h.parentElement.removeChild(l),h.parentElement.removeChild(h),!0):!1}function c(a){var b=0,c;a=void 0===a?t.value:a;if(g()){var d=window.searchEmojis(a);c=f(d);for(var h in u)u[h].visible&&(u[h].visible=!1,p.removeChild(u[h].g));
+h=0;for(var m=c.length;h<m;h++){var k=c[h].name,l=u[k];if(!l){var l=u,S=k,x=k,k=window.makeEmoji(d[k]),C=document.createElement("span");C.appendChild(k);C.className="emoji-medium";k=e(x,C);l=l[S]=k}l.visible||(l.visible=!0,p.appendChild(l.g));b++}}for(h in v)v[h].visible&&(v[h].visible=!1,r.removeChild(v[h].g));c=f(H.a.c);h=0;for(m=c.length;h<m;h++)k=c[h].name,""!==a&&k.substr(0,a.length)!==a||"alias:"===H.a.c[k].substr(0,6)||(l=v[k],l||(d=v,S=l=k,k=H.a.c[k],x=document.createElement("span"),C=document.createElement("span"),
+x.className="emoji emoji-custom",x.style.backgroundImage='url("'+k+'")',C.appendChild(x),C.className="emoji-medium",k=e(S,C),l=d[l]=k),l.visible||(l.visible=!0,r.appendChild(l.g)),b++);return b}function f(a){var b=H.a.b.c.G,c=[],d;for(d in a)c.push({name:d,A:0,count:b[d]||0});return c=c.sort(function(a,b){var c=b.count-a.count;return c?c:a.A-b.A})}function e(a,b){var c=document.createElement("li");c.appendChild(b);c.className="emojibar-list-item";c.id="emojibar-"+a;return{visible:!1,g:c}}function m(a){var b=
+document.createElement("img"),c=document.createElement("div");b.src=a;c.appendChild(b);c.className="emojibar-header";return c}function g(){return"searchEmojis"in window}var h=document.createElement("div"),l=document.createElement("div"),k=document.createElement("div"),p=document.createElement("ul"),r=document.createElement("ul"),t=document.createElement("input"),u={},v={},I=document.createElement("div"),J=document.createElement("span"),K=document.createElement("span"),x;l.addEventListener("click",
+function(a){var c=h.getBoundingClientRect();(a.screenY<c.top||a.screenY>c.bottom||a.screenX<c.left||a.screenX>c.right)&&b()});l.className="emojibar-overlay";h.className="emojibar";k.className="emojibar-emojis";I.className="emojibar-detail";J.className="emojibar-detail-img";K.className="emojibar-detail-name";p.className=r.className="emojibar-list";t.className="emojibar-search";I.appendChild(J);I.appendChild(K);k.appendChild(m(window.emojiProviderHeader));k.appendChild(p);k.appendChild(m("emojicustom.png"));
+k.appendChild(r);h.appendChild(k);h.appendChild(I);h.appendChild(t);t.addEventListener("keyup",function(){c()});h.addEventListener("mousemove",function(b){a(b,function(a){var b=a?u[a]||v[a]:null;b?(J.innerHTML=b.g.outerHTML,K.textContent=":"+a+":"):(J.textContent="",K.textContent="")})});h.addEventListener("click",function(b){a(b,function(a){a&&d()&&x&&x(a)})});return{isSupported:g,B:function(a,b){return g()?(x=b,a.appendChild(l),a.appendChild(h),t.value="",c(),t.focus(),!0):!1},search:c,close:b}}();var H,X={};function xa(a,b){if(a&&(a!==R||!window.hasFocus)){var d=new RegExp("<@"+H.a.b.id),c=!1,f=!1;X[a.id]||(X[a.id]={j:0,m:0});b.forEach(function(b){"message"===b.type&&b.text&&("D"===a.id[0]||b.text.match(d)?(f|=!X[a.id].j,X[a.id].j++,c=!0):X[a.id].m++)});N();document.getElementById(a.id).classList.add("unread");c&&document.getElementById(a.id).classList.add("unreadHi");f&&!window.hasFocus&&qa()}}
+function wa(){var a=R;X[a.id]&&(X[a.id]={j:0,m:0},N());a=document.getElementById(a.id);a.classList.remove("unread");a.classList.remove("unreadHi")}H=new function(){this.c=0;this.a=new q;this.b={}};var W=0,R=null;function ya(a){var b=new XMLHttpRequest;b.timeout=6E4;b.onreadystatechange=function(){if(4===b.readyState)if(b.status){var d=null,c=2===Math.floor(b.status/100);if(c){W&&(W=0,O(!0));d=b.response;try{d=JSON.parse(d)}catch(f){d=null}}else W?(W+=Math.floor((W||5)/2),W=Math.min(60,W)):(W=5,O(!1));a(c,d)}else W&&(W=0,O(!0)),ya(a)};b.open("GET","api?v="+H.c,!0);b.send(null)}
+function za(a,b){if(a){if(b){var d=H;b.v&&(d.c=b.v);if(b["static"]){for(var c=d.a,f=b["static"],e=0,m=f.bots.length;e<m;e++)c.i[f.bots[e].id]=new ga(f.bots[e]);e=0;for(m=f.users.length;e<m;e++)c.a[f.users[e].id]=new ea(f.users[e]);e=0;for(m=f.ims.length;e<m;e++){var g=n(c,f.ims[e].user);g&&(g.a=new da(g,f.ims[e]),c.o[g.a.id]=g.a)}e=0;for(m=f.channels.length;e<m;e++)c.f[f.channels[e].id]=new ba(f.channels[e],c);e=0;for(m=f.groups.length;e<m;e++)c.h[f.groups[e].id]=new ca(c,f.groups[e]);c.c=f.emojis;
+c.s=new aa(f.team);c.b=n(c,f.self.id);c.b.c=new fa(f.self.prefs);la()}if(b.live){for(var h in b.live)(c=d.b[h])?z(c,b.live[h]):d.b[h]=new y(h,250,b.live[h]);for(var l in b.live)xa(w(d.a,l),b.live[l]),R&&b.live[R.id]&&ra()}}Z()}else setTimeout(Z,1E3*W)}function Z(){ya(za)}
+function ua(a){R&&document.getElementById(R.id).classList.remove("selected");document.getElementById(a.id).classList.add("selected");document.body.classList.remove("no-room-selected");R=a;a=R.name||(R.c?R.c.name:void 0);if(!a){a=[];for(var b in R.a)a.push(R.a[b].name);a=a.join(", ")}document.getElementById("currentRoomTitle").textContent=a;ra();Y();document.getElementById("fileUploadContainer").classList.add("hidden");wa();F&&(F=null,P());R.b&&!H.b[R.id]&&(b=new XMLHttpRequest,b.open("GET","api/hist?room="+
+R.id,!0),b.send(null))}function va(a,b,d){var c=R;new FileReader;var f=new FormData,e=new XMLHttpRequest;f.append("file",b);f.append("filename",a);e.onreadystatechange=function(){4===e.readyState&&(204===e.status?d(null):d(e.statusText))};e.open("POST","api/file?room="+c.id);e.send(f)}function U(a,b,d){var c=new XMLHttpRequest;c.open("POST","api/reaction?room="+a+"&msg="+b+"&reaction="+encodeURIComponent(d),!0);c.send(null)};