Browse Source

[add][Refs #24] translation core

B Thibault 8 years ago
parent
commit
83bba4d0fa
6 changed files with 67 additions and 30 deletions
  1. 5 0
      Makefile
  2. 13 0
      cli/lang/core.js
  3. 9 0
      cli/lang/en.js
  4. 9 0
      cli/lang/fr.js
  5. 4 3
      cli/ui.js
  6. 27 27
      srv/public/slack.min.js

+ 5 - 0
Makefile

@@ -1,6 +1,11 @@
 
 SRC=		srv/src/slackData.js	\
 			srv/src/slackHistory.js	\
+			\
+			cli/lang/core.js		\
+			cli/lang/fr.js			\
+			cli/lang/en.js			\
+			\
 			cli/resources.js		\
 			cli/ui.js				\
 			cli/data.js				\

+ 13 - 0
cli/lang/core.js

@@ -0,0 +1,13 @@
+var lang = {}
+    ,locale;
+
+/**
+ * @param {string} lg
+**/
+function initLang(lg) {
+    locale = lang[lg];
+    if (locale.dom)
+        for (var i in locale.dom)
+            document.getElementById(i).textContent = locale.dom[i];
+}
+

+ 9 - 0
cli/lang/en.js

@@ -0,0 +1,9 @@
+lang["en"] = {
+    unknownMember: "Unknown member"
+    ,unknownChannel: "Unknown channel"
+    ,newMessage: "New message"
+
+    ,dom: {
+    }
+};
+

+ 9 - 0
cli/lang/fr.js

@@ -0,0 +1,9 @@
+lang["fr"] = {
+    unknownMember: "Utilisateur inconnu"
+    ,unknownChannel: "Channel inconnu"
+    ,newMessage: "Nouveau message"
+
+    ,dom: {
+    }
+};
+

+ 4 - 3
cli/ui.js

@@ -297,7 +297,7 @@ function formatSlackText(fullText) {
                 if (type === '@') {
                     if (!sub[1]) {
                         var user = SLACK.context.getMember(sub[0]);
-                        sub[1] = user ? ('@' +user.name) : "Unknown member"; // TODO locale
+                        sub[1] = user ? ('@' +user.name) : locale.unknownMember;
                     } else if ('@' !== sub[1][0]) {
                         sub[1] = '@' +sub[1];
                     }
@@ -306,7 +306,7 @@ function formatSlackText(fullText) {
                 } else if (type === '#') {
                     if (!sub[1]) {
                         var chan = SLACK.context.getChannel(sub[0]);
-                        sub[1] = chan ? ('#' +chan.name) : "Unknown channel"; // TODO locale
+                        sub[1] = chan ? ('#' +chan.name) : locale.unknownChannel;
                     } else if ('#' !== sub[1][0]) {
                         sub[1] = '#' +sub[1];
                     }
@@ -521,7 +521,7 @@ function spawnNotification() {
         var now = Date.now();
 
         if (lastNotificationSpawn + NOTIFICATION_COOLDOWN < now) {
-            var n = new Notification("New updates"); // TODO locale
+            var n = new Notification(locale.newMessage);
             lastNotificationSpawn = now;
             setTimeout(function() {
                 n.close();
@@ -602,6 +602,7 @@ function setRoomFromHashBang() {
 }
 
 document.addEventListener('DOMContentLoaded', function() {
+    initLang('en');
     document.getElementById(R.id.currentRoom.content).addEventListener("click", chatClickDelegate);
     window.addEventListener("hashchange", function(e) {
         if (document.location.hash && document.location.hash[0] === '#') {

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

@@ -1,32 +1,32 @@
 function h(a){this.id=a.id;this.name=a.name}function l(a,b){this.id=a.id;this.name=a.name;this.b=parseFloat(a.last_read);this.a={};if(a.members)for(var e=0,c=a.members.length;e<c;e++){var f=t(b,a.members[e]);this.a[f.id]=f;f.f[this.id]=this}}function u(a,b){var e=[];this.id=b.id;this.a={};for(var c=0,f=b.members.length;c<f;c++){var d=t(a,b.members[c]);this.a[b.members[c]]=d;d.f[this.id]=this;e.push(d.name)}this.name=e.join(", ");this.b=parseFloat(b.last_read)}
-function v(a,b){this.id=b.id;this.c=a;this.b=parseFloat(b.last_read)}function w(a){this.id=a.id;this.name=a.name;this.status=a.status;this.b={B:a.profile.image_24,C:a.profile.image_32,i:a.profile.image_48,s:a.profile.image_72,A:a.profile.image_192,F:a.profile.image_512};this.f={};this.a=null}function aa(a){this.id=a.id;this.name=a.name;this.b={D:a.icons.image_36,i:a.icons.image_48,s:a.icons.image_72};this.f={};this.a=null}
-function x(){this.m=null;this.f={};this.b={};this.l={};this.a={};this.c=null;this.g={}}function t(a,b){return a.a[b]||a.g[b]||null}function A(a,b){return a.f[b]||a.l[b]||a.b[b]||null}"undefined"!==typeof module&&(module.o.u=x);function ba(a){this.g=a.user;this.b=parseFloat(a.ts);this.type=a.type;this.c=a.subtype;this.a=a}function D(a,b,e){this.id="string"===typeof a?a:a.id;this.a=[];this.b=b;e&&E(this,e)}function E(a,b){var e=0;b.forEach(function(a){e=Math.max(this.push(a),e)}.bind(a));ca(a)}D.prototype.push=function(a){for(var b=parseFloat(a.ts),e=0,c=this.a.length;e<c;e++)if(this.a[e].b===b)return b;for(this.a.push(new ba(a));this.a.length>this.b;)this.a.shift();return b};
-function ca(a){a.a.sort(function(a,e){return a.b-e.b})}"undefined"!==typeof module&&(module.o.w=D);var F=null,G=0;
-function da(){var a=document.createDocumentFragment(),b=I.a.c?Object.keys(I.a.c.f):[];b.sort(function(a,b){return a[0]!==b[0]?a[0]-b[0]:(I.a.f[a]||I.a.b[a]).name.localeCompare((I.a.f[b]||I.a.b[b]).name)});b.forEach(function(b){b=I.a.f[b]||I.a.b[b];var c=document.createElement("li"),e=document.createElement("a");c.id=b.id;e.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");e.textContent=
-b.name;c.appendChild(e);c&&a.appendChild(c)});b=I.a.a?Object.keys(I.a.a):[];b.sort(function(a,b){return I.a.a[a].name.localeCompare(I.a.a[b].name)});b.forEach(function(b){b=I.a.a[b].a;var c=document.createElement("li"),e=document.createElement("a");c.id=b.id;e.href="#"+b.id;c.className="slack-context-room";e.textContent=b.c.name;c.appendChild(e);c&&a.appendChild(c)});document.getElementById("chanList").textContent="";document.getElementById("chanList").appendChild(a);J()}
+function aa(a,b){this.id=b.id;this.c=a;this.b=parseFloat(b.last_read)}function ba(a){this.id=a.id;this.name=a.name;this.status=a.status;this.b={G:a.profile.image_24,H:a.profile.image_32,j:a.profile.image_48,B:a.profile.image_72,F:a.profile.image_192,J:a.profile.image_512};this.f={};this.a=null}function ca(a){this.id=a.id;this.name=a.name;this.b={I:a.icons.image_36,j:a.icons.image_48,B:a.icons.image_72};this.f={};this.a=null}
+function v(){this.o=null;this.f={};this.b={};this.m={};this.a={};this.c=null;this.g={}}function t(a,b){return a.a[b]||a.g[b]||null}function w(a,b){return a.f[b]||a.m[b]||a.b[b]||null}"undefined"!==typeof module&&(module.A.C=v);function da(a){this.g=a.user;this.b=parseFloat(a.ts);this.type=a.type;this.c=a.subtype;this.a=a}function x(a,b,e){this.id="string"===typeof a?a:a.id;this.a=[];this.b=b;e&&y(this,e)}function y(a,b){var e=0;b.forEach(function(a){e=Math.max(this.push(a),e)}.bind(a));ea(a)}x.prototype.push=function(a){for(var b=parseFloat(a.ts),e=0,c=this.a.length;e<c;e++)if(this.a[e].b===b)return b;for(this.a.push(new da(a));this.a.length>this.b;)this.a.shift();return b};
+function ea(a){a.a.sort(function(a,e){return a.b-e.b})}"undefined"!==typeof module&&(module.A.D=x);var B={},E;function fa(){E=B.en;if(E.h)for(var a in E.h)document.getElementById(a).textContent=E.h[a]};B.fr={w:"Utilisateur inconnu",u:"Channel inconnu",s:"Nouveau message",h:{}};B.en={w:"Unknown member",u:"Unknown channel",s:"New message",h:{}};var F=null,G=0;
+function ga(){var a=document.createDocumentFragment(),b=H.a.c?Object.keys(H.a.c.f):[];b.sort(function(a,b){return a[0]!==b[0]?a[0]-b[0]:(H.a.f[a]||H.a.b[a]).name.localeCompare((H.a.f[b]||H.a.b[b]).name)});b.forEach(function(b){b=H.a.f[b]||H.a.b[b];var c=document.createElement("li"),e=document.createElement("a");c.id=b.id;e.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");e.textContent=
+b.name;c.appendChild(e);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"),e=document.createElement("a");c.id=b.id;e.href="#"+b.id;c.className="slack-context-room";e.textContent=b.c.name;c.appendChild(e);c&&a.appendChild(c)});document.getElementById("chanList").textContent="";document.getElementById("chanList").appendChild(a);I()}
 function K(a){a?document.body.classList.remove("no-network"):document.body.classList.add("no-network")}function L(){if(F){document.body.classList.add("replyingTo");var a=document.getElementById("replyToContainer"),b=document.createElement("a");b.addEventListener("click",function(){F=null;L()});b.className="replyto-close";b.textContent="x";a.textContent="";a.appendChild(b);a.appendChild(M("reply_"+N.id,F,!0))}else document.body.classList.remove("replyingTo")}
-function O(a,b,e){var c=document.createElement("div"),f=document.createElement("div"),d=document.createElement("div"),k=document.createElement("div"),g=document.createElement("img"),n=document.createElement("span"),p=document.createElement("ul"),r=document.createElement("li"),m=document.createElement("ul"),q=b.a.user?I.a.a[b.a.user]:I.a.g[b.a.bot_id];c.id=a+"_"+b.b;c.className="slackmsg-item";f.className="slackmsg-ts";d.className="slackmsg-msg";k.className="slackmsg-author";g.className="slackmsg-author-img";
-n.className="slackmsg-author-name";p.className="slackmsg-hover";r.className="slackmsg-hover-reply";f.innerHTML=P(b.b);d.innerHTML=Q(b.a.text||"");n.textContent=q?q.name:b.a.username||"?";q||b.a.username||(d.textContent=b.a.subtype||JSON.stringify(b.a));g.src=q?q.b.i:"";k.appendChild(g);k.appendChild(n);p.appendChild(r);c.appendChild(k);c.appendChild(d);c.appendChild(f);c.appendChild(m);m.className="slackmsg-attachments";!0!==e&&b.a.attachments&&b.a.attachments.forEach(function(a){var b=document.createElement("li"),
-c=document.createElement("div"),e=document.createElement("div"),d=document.createElement("a"),f=document.createElement("div"),g=document.createElement("img"),k=document.createElement("a"),H=document.createElement("div"),n=document.createElement("div"),p=document.createElement("img"),q=document.createElement("img"),r=document.createElement("div"),y=document.createElement("img"),B=document.createElement("span"),C=document.createElement("span");b.className="slackmsg-attachment";var z="#e3e4e6";a.color&&
-("#"===a.color[0]?z=a.color[0]:"good"===a.color?z="#2fa44f":"warning"===a.color?z="#de9e31":"danger"===a.color&&(z="#d50200"));c.style.borderColor=z;e.className="slackmsg-attachment-pretext";a.pretext?e.innerHTML=Q(a.pretext):e.classList.add("hidden");d.target="_blank";a.title?(d.innerHTML=Q(a.title),a.title_link&&(d.href=a.title_link),d.className="slackmsg-attachment-title"):d.className="hidden slackmsg-attachment-title";k.target="_blank";f.className="slackmsg-author";a.author_name?(k.innerHTML=
-Q(a.author_name),k.href=a.author_link||"",k.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");n.innerHTML=Q(a.text||"");n.a="slackmsg-attachment-text";p.className="slackmsg-attachment-thumb";a.thumb_url?p.src=a.thumb_url:p.classList.add("hidden");q.className="slackmsg-attachment-img";a.image_url?q.src=a.image_url:q.classList.add("hidden");r.className="slackmsg-attachment-footer";B.className="slackmsg-attachment-footer-text";
-y.className="slackmsg-attachment-footer-icon";a.footer?(B.innerHTML=Q(a.footer),a.footer_icon?y.src=a.footer_icon:y.classList.add("hidden")):(y.classList.add("hidden"),B.classList.add("hidden"));C.className="slackmsg-ts";a.ts?C.innerHTML=P(a.ts):C.classList.add("hidden");f.appendChild(g);f.appendChild(k);H.appendChild(n);H.appendChild(p);r.appendChild(y);r.appendChild(B);r.appendChild(C);c.appendChild(d);c.appendChild(f);c.appendChild(H);c.appendChild(q);c.appendChild(r);b.appendChild(e);b.appendChild(c);
+function O(a,b,e){var c=document.createElement("div"),f=document.createElement("div"),d=document.createElement("div"),k=document.createElement("div"),g=document.createElement("img"),n=document.createElement("span"),p=document.createElement("ul"),r=document.createElement("li"),m=document.createElement("ul"),q=b.a.user?H.a.a[b.a.user]:H.a.g[b.a.bot_id];c.id=a+"_"+b.b;c.className="slackmsg-item";f.className="slackmsg-ts";d.className="slackmsg-msg";k.className="slackmsg-author";g.className="slackmsg-author-img";
+n.className="slackmsg-author-name";p.className="slackmsg-hover";r.className="slackmsg-hover-reply";f.innerHTML=P(b.b);d.innerHTML=Q(b.a.text||"");n.textContent=q?q.name:b.a.username||"?";q||b.a.username||(d.textContent=b.a.subtype||JSON.stringify(b.a));g.src=q?q.b.j:"";k.appendChild(g);k.appendChild(n);p.appendChild(r);c.appendChild(k);c.appendChild(d);c.appendChild(f);c.appendChild(m);m.className="slackmsg-attachments";!0!==e&&b.a.attachments&&b.a.attachments.forEach(function(a){var b=document.createElement("li"),
+c=document.createElement("div"),e=document.createElement("div"),d=document.createElement("a"),f=document.createElement("div"),g=document.createElement("img"),k=document.createElement("a"),J=document.createElement("div"),n=document.createElement("div"),p=document.createElement("img"),q=document.createElement("img"),r=document.createElement("div"),z=document.createElement("img"),C=document.createElement("span"),D=document.createElement("span");b.className="slackmsg-attachment";var A="#e3e4e6";a.color&&
+("#"===a.color[0]?A=a.color[0]:"good"===a.color?A="#2fa44f":"warning"===a.color?A="#de9e31":"danger"===a.color&&(A="#d50200"));c.style.borderColor=A;e.className="slackmsg-attachment-pretext";a.pretext?e.innerHTML=Q(a.pretext):e.classList.add("hidden");d.target="_blank";a.title?(d.innerHTML=Q(a.title),a.title_link&&(d.href=a.title_link),d.className="slackmsg-attachment-title"):d.className="hidden slackmsg-attachment-title";k.target="_blank";f.className="slackmsg-author";a.author_name?(k.innerHTML=
+Q(a.author_name),k.href=a.author_link||"",k.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");n.innerHTML=Q(a.text||"");n.a="slackmsg-attachment-text";p.className="slackmsg-attachment-thumb";a.thumb_url?p.src=a.thumb_url:p.classList.add("hidden");q.className="slackmsg-attachment-img";a.image_url?q.src=a.image_url:q.classList.add("hidden");r.className="slackmsg-attachment-footer";C.className="slackmsg-attachment-footer-text";
+z.className="slackmsg-attachment-footer-icon";a.footer?(C.innerHTML=Q(a.footer),a.footer_icon?z.src=a.footer_icon:z.classList.add("hidden")):(z.classList.add("hidden"),C.classList.add("hidden"));D.className="slackmsg-ts";a.ts?D.innerHTML=P(a.ts):D.classList.add("hidden");f.appendChild(g);f.appendChild(k);J.appendChild(n);J.appendChild(p);r.appendChild(z);r.appendChild(C);r.appendChild(D);c.appendChild(d);c.appendChild(f);c.appendChild(J);c.appendChild(q);c.appendChild(r);b.appendChild(e);b.appendChild(c);
 b&&m.appendChild(b)});c.appendChild(p);return c}function P(a){"string"!==typeof a&&(a=parseFloat(a));return(new Date(1E3*a)).toLocaleTimeString()}
 function Q(a){a=a.split(/\r?\n/g);for(var b=0,e=a.length;b<e;b++){for(var c=a[b],f="",d={},k=!1,g=0,n=c.length,p=function(a,b,c){for(;a[b];){if(" "!=a[b]&&a[b]!=c&&a[b+1]==c)return!0;b++}return!1},r=function(a){return Object.keys(d).length?'<span class="'+Object.keys(a).join(" ")+'">':""};g<n&&(" "===c[g]||"\t"===c[g]);)g++;"&gt;"===c.substr(g,4)&&(k=!0,g+=4);for(;g<n;g++){var m=c[g];if(!d["slackmsg-style-bold"]&&"*"===m&&c[g+1]&&p(c,g,m))Object.keys(d).length&&(f+="</span>"),d["slackmsg-style-bold"]=
 !0,f+=r(d);else if(!d["slackmsg-style-strike"]&&"~"===m&&c[g+1]&&p(c,g,m))Object.keys(d).length&&(f+="</span>"),d["slackmsg-style-strike"]=!0,f+=r(d);else if(!d["slackmsg-style-code"]&&"`"===m&&c[g+1]&&p(c,g,m))Object.keys(d).length&&(f+="</span>"),d["slackmsg-style-code"]=!0,f+=r(d);else if(!d["slackmsg-style-italic"]&&"_"===m&&c[g+1]&&p(c,g,m))Object.keys(d).length&&(f+="</span>"),d["slackmsg-style-italic"]=!0,f+=r(d);else{var q=!1,f=f+m;do{if(d["slackmsg-style-bold"]&&"*"!==m&&"*"===c[g+1])delete d["slackmsg-style-bold"],
-q=!0;else if(d["slackmsg-style-strike"]&&"~"!==m&&"~"===c[g+1])delete d["slackmsg-style-strike"],q=!0;else if(d["slackmsg-style-code"]&&"`"!==m&&"`"===c[g+1])delete d["slackmsg-style-code"],q=!0;else if(d["slackmsg-style-italic"]&&"_"!==m&&"_"===c[g+1])delete d["slackmsg-style-italic"],q=!0;else break;m=c[++g]}while(g<n);q&&(f+="</span>"+r(d))}}d&&(f+="</span>");f=f.replace(RegExp("<([@#]?)([^>]*)>","g"),function(a,b,c){c=c.split("|");if("@"===b)c[1]?"@"!==c[1][0]&&(c[1]="@"+c[1]):(a=t(I.a,c[0]),
-c[1]=a?"@"+a.name:"Unknown member"),c[0]="#"+c[0],c[2]="slackmsg-link slackmsg-link-user";else if("#"===b)c[1]?"#"!==c[1][0]&&(c[1]="#"+c[1]):(a=A(I.a,c[0]),c[1]=a?"#"+a.name:"Unknown channel"),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>"});a[b]=k?'<span class="slackmsg-style-quote">'+f+"</span>":f}return a.join("<br/>")}
-function M(a,b,e){"me_message"===b.c?(a=O(a,b,e),a.classList.add("slackmsg-me_message")):a=O(a,b,e);return a}function R(){var a=0,b=0,e="",c;for(c in S)S.hasOwnProperty(c)&&(a+=S[c].j,b+=S[c].h);b?e="(!"+b+") - ":a&&(e="("+a+") - ");e+=I.a.m.name;document.title=e}
-function ea(){if("Notification"in window)if("granted"===Notification.permission){var a=Date.now();if(G+3E4<a){var b=new Notification("New updates");G=a;setTimeout(function(){b.close()},5E3)}}else"denied"!==Notification.permission&&Notification.requestPermission()}
-function T(){var a=document.createDocumentFragment(),b=N.id;document.getElementById("chatWindow").textContent="";I.b[b]&&I.b[b].a.forEach(function(c){"message"===c.type&&(c=M(b,c),a.appendChild(c))});var e=document.getElementById("chatWindow");e.appendChild(a);e.scrollTop=e.scrollHeight-e.clientHeight}
-function fa(a){for(var b=a.target;b!==a.currentTarget&&b&&!b.classList.contains("slackmsg-hover");){if(b.classList.contains("slackmsg-hover-reply")){a:{for(b=b||a.target;b!==a.currentTarget&&b;){if(b.classList.contains("slackmsg-item")){a=b.id;break a}b=b.parentElement}a=void 0}if(a){a=parseFloat(a.split("_")[1]);for(var b=I.b[N.id].a,e=0,c=b.length;e<c&&b[e].b<=a;e++)if(b[e].b===a){F!==b[e]&&(F=b[e],L());break}}break}b=b.parentElement}}function U(){document.getElementById("msgInput").focus()}
-function J(){var a=document.location.hash.substr(1),b=A(I.a,a),a=t(I.a,a);b&&b!==N?V(b):a&&a.a&&V(a.a)}
-document.addEventListener("DOMContentLoaded",function(){document.getElementById("chatWindow").addEventListener("click",fa);window.addEventListener("hashchange",function(){document.location.hash&&"#"===document.location.hash[0]&&J()});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),ga(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();N&&document.getElementById("fileUploadContainer").classList.remove("hidden");return!1});document.getElementById("msgForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("msgInput");if(N&&a.value){var b=N,e=F,c=new XMLHttpRequest,f="api/msg?room="+b.id+"&text="+encodeURIComponent(a.value);if(e){var d=t(I.a,e.g),k="Message";"C"===b.id[0]?k="Channel message":"D"===b.id[0]?
-k="Direct message":"G"===b.id[0]&&(k="Group message");f+="&attachments="+encodeURIComponent(JSON.stringify([{fallback:e.a.text||"",author_name:"<@"+d.id+"|"+d.name+">",author_icon:d.b.i,text:e.a.text||"",footer:k,ts:e.b}]))}c.open("POST",f,!0);c.send(null);a.value="";F&&(F=null,L())}U();return!1});window.addEventListener("blur",function(){window.hasFocus=!1});window.addEventListener("focus",function(){window.hasFocus=!0;G=0;N&&W();U()});window.hasFocus=!0;X()});var I,S={};function ha(a,b){if(a&&(a!==N||!window.hasFocus)){var e=new RegExp("<@"+I.a.c.id),c=!1,f=!1;S[a.id]||(S[a.id]={h:0,j:0});b.forEach(function(b){"message"===b.type&&b.text&&("D"===a.id[0]||b.text.match(e)?(f|=!S[a.id].h,S[a.id].h++,c=!0):S[a.id].j++)});R();document.getElementById(a.id).classList.add("unread");c&&document.getElementById(a.id).classList.add("unreadHi");f&&!window.hasFocus&&ea()}}
-function W(){var a=N;S[a.id]&&(S[a.id]={h:0,j:0},R());a=document.getElementById(a.id);a.classList.remove("unread");a.classList.remove("unreadHi")}I=new function(){this.c=0;this.a=new x;this.b={}};var Y=0,N=null;function Z(a){var b=new XMLHttpRequest;b.timeout=6E4;b.onreadystatechange=function(){if(4===b.readyState)if(b.status){var e=null,c=2===Math.floor(b.status/100);if(c){Y&&(Y=0,K(!0));e=b.response;try{e=JSON.parse(e)}catch(f){e=null}}else Y?(Y+=Math.floor((Y||5)/2),Y=Math.min(60,Y)):(Y=5,K(!1));a(c,e)}else Y&&(Y=0,K(!0)),Z(a)};b.open("GET","api?v="+I.c,!0);b.send(null)}
-function ia(a,b){if(a){if(b){var e=I;b.v&&(e.c=b.v);if(b["static"]){for(var c=e.a,f=b["static"],d=0,k=f.bots.length;d<k;d++)c.g[f.bots[d].id]=new aa(f.bots[d]);d=0;for(k=f.users.length;d<k;d++)c.a[f.users[d].id]=new w(f.users[d]);d=0;for(k=f.ims.length;d<k;d++){var g=t(c,f.ims[d].user);g&&(g.a=new v(g,f.ims[d]),c.l[g.a.id]=g.a)}d=0;for(k=f.channels.length;d<k;d++)c.f[f.channels[d].id]=new l(f.channels[d],c);d=0;for(k=f.groups.length;d<k;d++)c.b[f.groups[d].id]=new u(c,f.groups[d]);c.m=new h(f.team);
-c.c=t(c,f.self.id);da()}if(b.live){for(var n in b.live)(c=e.b[n])?E(c,b.live[n]):e.b[n]=new D(n,250,b.live[n]);for(var p in b.live)ha(A(e.a,p),b.live[p]),N&&b.live[N.id]&&T()}}X()}else setTimeout(X,1E3*Y)}function X(){Z(ia)}
-function V(a){N&&document.getElementById(N.id).classList.remove("selected");document.getElementById(a.id).classList.add("selected");document.body.classList.remove("no-room-selected");N=a;a=N.name||(N.c?N.c.name:void 0);if(!a){a=[];for(var b in N.a)a.push(N.a[b].name);a=a.join(", ")}document.getElementById("currentRoomTitle").textContent=a;T();U();document.getElementById("fileUploadContainer").classList.add("hidden");W();F&&(F=null,L());N.b&&!I.b[N.id]&&(b=new XMLHttpRequest,b.open("GET","api/hist?room="+
-N.id,!0),b.send(null))}function ga(a,b,e){var c=N;new FileReader;var f=new FormData,d=new XMLHttpRequest;f.append("file",b);f.append("filename",a);d.onreadystatechange=function(){4===d.readyState&&(204===d.status?e(null):e(d.statusText))};d.open("POST","api/file?room="+c.id);d.send(f)};
+q=!0;else if(d["slackmsg-style-strike"]&&"~"!==m&&"~"===c[g+1])delete d["slackmsg-style-strike"],q=!0;else if(d["slackmsg-style-code"]&&"`"!==m&&"`"===c[g+1])delete d["slackmsg-style-code"],q=!0;else if(d["slackmsg-style-italic"]&&"_"!==m&&"_"===c[g+1])delete d["slackmsg-style-italic"],q=!0;else break;m=c[++g]}while(g<n);q&&(f+="</span>"+r(d))}}d&&(f+="</span>");f=f.replace(RegExp("<([@#]?)([^>]*)>","g"),function(a,b,c){c=c.split("|");if("@"===b)c[1]?"@"!==c[1][0]&&(c[1]="@"+c[1]):(a=t(H.a,c[0]),
+c[1]=a?"@"+a.name:E.w),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:E.u),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>"});a[b]=k?'<span class="slackmsg-style-quote">'+f+"</span>":f}return a.join("<br/>")}
+function M(a,b,e){"me_message"===b.c?(a=O(a,b,e),a.classList.add("slackmsg-me_message")):a=O(a,b,e);return a}function R(){var a=0,b=0,e="",c;for(c in S)S.hasOwnProperty(c)&&(a+=S[c].l,b+=S[c].i);b?e="(!"+b+") - ":a&&(e="("+a+") - ");e+=H.a.o.name;document.title=e}
+function ha(){if("Notification"in window)if("granted"===Notification.permission){var a=Date.now();if(G+3E4<a){var b=new Notification(E.s);G=a;setTimeout(function(){b.close()},5E3)}}else"denied"!==Notification.permission&&Notification.requestPermission()}
+function T(){var a=document.createDocumentFragment(),b=N.id;document.getElementById("chatWindow").textContent="";H.b[b]&&H.b[b].a.forEach(function(c){"message"===c.type&&(c=M(b,c),a.appendChild(c))});var e=document.getElementById("chatWindow");e.appendChild(a);e.scrollTop=e.scrollHeight-e.clientHeight}
+function ia(a){for(var b=a.target;b!==a.currentTarget&&b&&!b.classList.contains("slackmsg-hover");){if(b.classList.contains("slackmsg-hover-reply")){a:{for(b=b||a.target;b!==a.currentTarget&&b;){if(b.classList.contains("slackmsg-item")){a=b.id;break a}b=b.parentElement}a=void 0}if(a){a=parseFloat(a.split("_")[1]);for(var b=H.b[N.id].a,e=0,c=b.length;e<c&&b[e].b<=a;e++)if(b[e].b===a){F!==b[e]&&(F=b[e],L());break}}break}b=b.parentElement}}function U(){document.getElementById("msgInput").focus()}
+function I(){var a=document.location.hash.substr(1),b=w(H.a,a),a=t(H.a,a);b&&b!==N?V(b):a&&a.a&&V(a.a)}
+document.addEventListener("DOMContentLoaded",function(){fa();document.getElementById("chatWindow").addEventListener("click",ia);window.addEventListener("hashchange",function(){document.location.hash&&"#"===document.location.hash[0]&&I()});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),ja(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();N&&document.getElementById("fileUploadContainer").classList.remove("hidden");return!1});document.getElementById("msgForm").addEventListener("submit",function(a){a.preventDefault();a=document.getElementById("msgInput");if(N&&a.value){var b=N,e=F,c=new XMLHttpRequest,f="api/msg?room="+b.id+"&text="+encodeURIComponent(a.value);if(e){var d=t(H.a,e.g),k="Message";"C"===b.id[0]?k="Channel message":"D"===b.id[0]?
+k="Direct message":"G"===b.id[0]&&(k="Group message");f+="&attachments="+encodeURIComponent(JSON.stringify([{fallback:e.a.text||"",author_name:"<@"+d.id+"|"+d.name+">",author_icon:d.b.j,text:e.a.text||"",footer:k,ts:e.b}]))}c.open("POST",f,!0);c.send(null);a.value="";F&&(F=null,L())}U();return!1});window.addEventListener("blur",function(){window.hasFocus=!1});window.addEventListener("focus",function(){window.hasFocus=!0;G=0;N&&W();U()});window.hasFocus=!0;X()});var H,S={};function ka(a,b){if(a&&(a!==N||!window.hasFocus)){var e=new RegExp("<@"+H.a.c.id),c=!1,f=!1;S[a.id]||(S[a.id]={i:0,l:0});b.forEach(function(b){"message"===b.type&&b.text&&("D"===a.id[0]||b.text.match(e)?(f|=!S[a.id].i,S[a.id].i++,c=!0):S[a.id].l++)});R();document.getElementById(a.id).classList.add("unread");c&&document.getElementById(a.id).classList.add("unreadHi");f&&!window.hasFocus&&ha()}}
+function W(){var a=N;S[a.id]&&(S[a.id]={i:0,l:0},R());a=document.getElementById(a.id);a.classList.remove("unread");a.classList.remove("unreadHi")}H=new function(){this.c=0;this.a=new v;this.b={}};var Y=0,N=null;function Z(a){var b=new XMLHttpRequest;b.timeout=6E4;b.onreadystatechange=function(){if(4===b.readyState)if(b.status){var e=null,c=2===Math.floor(b.status/100);if(c){Y&&(Y=0,K(!0));e=b.response;try{e=JSON.parse(e)}catch(f){e=null}}else Y?(Y+=Math.floor((Y||5)/2),Y=Math.min(60,Y)):(Y=5,K(!1));a(c,e)}else Y&&(Y=0,K(!0)),Z(a)};b.open("GET","api?v="+H.c,!0);b.send(null)}
+function la(a,b){if(a){if(b){var e=H;b.v&&(e.c=b.v);if(b["static"]){for(var c=e.a,f=b["static"],d=0,k=f.bots.length;d<k;d++)c.g[f.bots[d].id]=new ca(f.bots[d]);d=0;for(k=f.users.length;d<k;d++)c.a[f.users[d].id]=new ba(f.users[d]);d=0;for(k=f.ims.length;d<k;d++){var g=t(c,f.ims[d].user);g&&(g.a=new aa(g,f.ims[d]),c.m[g.a.id]=g.a)}d=0;for(k=f.channels.length;d<k;d++)c.f[f.channels[d].id]=new l(f.channels[d],c);d=0;for(k=f.groups.length;d<k;d++)c.b[f.groups[d].id]=new u(c,f.groups[d]);c.o=new h(f.team);
+c.c=t(c,f.self.id);ga()}if(b.live){for(var n in b.live)(c=e.b[n])?y(c,b.live[n]):e.b[n]=new x(n,250,b.live[n]);for(var p in b.live)ka(w(e.a,p),b.live[p]),N&&b.live[N.id]&&T()}}X()}else setTimeout(X,1E3*Y)}function X(){Z(la)}
+function V(a){N&&document.getElementById(N.id).classList.remove("selected");document.getElementById(a.id).classList.add("selected");document.body.classList.remove("no-room-selected");N=a;a=N.name||(N.c?N.c.name:void 0);if(!a){a=[];for(var b in N.a)a.push(N.a[b].name);a=a.join(", ")}document.getElementById("currentRoomTitle").textContent=a;T();U();document.getElementById("fileUploadContainer").classList.add("hidden");W();F&&(F=null,L());N.b&&!H.b[N.id]&&(b=new XMLHttpRequest,b.open("GET","api/hist?room="+
+N.id,!0),b.send(null))}function ja(a,b,e){var c=N;new FileReader;var f=new FormData,d=new XMLHttpRequest;f.append("file",b);f.append("filename",a);d.onreadystatechange=function(){4===d.readyState&&(204===d.status?e(null):e(d.statusText))};d.open("POST","api/file?room="+c.id);d.send(f)};