@@ -25,24 +25,49 @@
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This can inadvertently influence our flexbox layouts, so move
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
it out of the way. */
27 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(document.body,dbg);
28 28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
29 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})();
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const ForceResizeKludge = 0 ? function(){} : (function(){
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const ForceResizeKludge = 0 ? function(){} : (function f(){
31 31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Workaround for Safari mayhem regarding use of vh CSS units....
32 32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
We tried to use vh units to set the content area size for the
33 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chat layout, but Safari chokes on that, so we calculate that
34 34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
height here: 85% when in "normal" mode and 95% in chat-only
35 35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mode. Larger than ~95% is too big for Firefox on Android,
36 36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
causing the input area to move off-screen. */
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const contentArea = E1('div.content'),
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- bcl = document.body.classList;
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!f.eHead){
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.eHead = document.querySelector('body > div.header');
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.eMenu = document.querySelector('body > div.mainmenu');
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.eFoot = document.querySelector('body > div.footer');
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.contentArea = E1('div.content');
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.extra = 0;
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.measure = function(e){
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(e){
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const m = window.getComputedStyle(e);
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.extra += parseFloat(m.height);
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const bcl = document.body.classList;
39 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const resized = function(){
40 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const wh = window.innerHeight,
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mult = bcl.contains('chat-only-mode') ? 0.95 : 0.85;
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- contentArea.style.height = contentArea.style.maxHeight = (wh * mult)+"px";
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.debug("resized.",wh, mult, window.getComputedStyle(contentArea).maxHeight);
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ com = bcl.contains('chat-only-mode');
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var ht;
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(com){
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ht = wh - 10/*fudge value*/;
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.extra = 0;
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ [f.eHead, f.eMenu, f.eFoot].forEach(f.measure);
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ht = wh - f.extra - 10/*fudge value*/;
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.contentArea.style.height =
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.contentArea.style.maxHeight = (ht>=100 ? ht : 100)+"px";
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(false){
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ console.debug("resized.",wh, f.extra, ht,
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ window.getComputedStyle(f.contentArea).maxHeight,
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.contentArea);
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
44 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
45 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
var doit;
46 71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
window.addEventListener('resize',function(ev){
47 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
clearTimeout(doit);
48 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
doit = setTimeout(resized, 100);
@@ -254,10 +279,23 @@
254 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(f.elemsToToggle, 'hidden');
255 280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(document.body, 'chat-only-mode');
256 281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
257 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ForceResizeKludge();
258 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this;
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ },
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Tries to scroll the message area to...
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <0 = top of the message list, >1 = bottom of the message list,
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0 == the newest message (normally the same position as >1).
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ scrollMessagesTo: function(where){
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(where<0){
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.e.messagesWrapper.scrollTop = 0;
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(where>0){
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.e.messagesWrapper.scrollTop = Chat.e.messagesWrapper.scrollHeight;
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(Chat.e.newestMessage){
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.e.newestMessage.scrollIntoView();
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
259 297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
260 298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
toggleChatOnlyMode: function(){
261 299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this.chatOnlyMode(!this.isChatOnlyMode());
262 300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
263 301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
settings:{
@@ -813,10 +851,22 @@
813 851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const rect = settingsButton.getBoundingClientRect();
814 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rect.top - popupSize.height -2;
815 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
816 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})()/*#chat-settings-button setup*/;
817 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (function(){ /* buttons to scroll to the begin/end of the messages. */
857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ E1('#chat-scroll-bottom').addEventListener('click',function(ev){
858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ev.preventDefault();
859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.scrollMessagesTo(1);
860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return false;
861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ E1('#chat-scroll-top').addEventListener('click',function(ev){
863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ev.preventDefault();
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.scrollMessagesTo(-1);
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return false;
866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ })();
818 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
819 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/** Callback for poll() to inject new content into the page. jx ==
820 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the response from /chat-poll. If atEnd is true, the message is
821 871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
appended to the end of the chat list, else the beginning (the
822 872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default). */
823 873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!