| ︙ | | | ︙ | |
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
}
const bcl = document.body.classList;
const resized = function(){
const wh = window.innerHeight,
com = bcl.contains('chat-only-mode');
var ht;
if(com){
ht = wh - 10/*fudge value*/;
}else{
f.extra = 0;
[f.eHead, f.eMenu, f.eFoot].forEach(f.measure);
ht = wh - f.extra - 10/*fudge value*/;
}
f.contentArea.style.height =
f.contentArea.style.maxHeight = (ht>=100 ? ht : 100)+"px";
if(false){
console.debug("resized.",wh, f.extra, ht,
window.getComputedStyle(f.contentArea).maxHeight,
f.contentArea);
}
};
var doit;
|
|
|
|
>
>
>
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
}
const bcl = document.body.classList;
const resized = function(){
const wh = window.innerHeight,
com = bcl.contains('chat-only-mode');
var ht;
if(com){
ht = wh;
}else{
f.extra = 0;
[f.eHead, f.eMenu, f.eFoot].forEach(f.measure);
ht = wh - f.extra;
}
f.contentArea.style.height =
f.contentArea.style.maxHeight = [
"calc(", (ht>=100 ? ht : 100), "px",
" - 1em"/*fudge value*/,")"
].join('');
if(false){
console.debug("resized.",wh, f.extra, ht,
window.getComputedStyle(f.contentArea).maxHeight,
f.contentArea);
}
};
var doit;
|
| ︙ | | | ︙ | |
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
messagesWrapper: E1('#chat-messages-wrapper'),
inputForm: E1('#chat-form'),
btnSubmit: E1('#chat-message-submit'),
inputSingle: E1('#chat-input-single'),
inputMulti: E1('#chat-input-multi'),
inputCurrent: undefined/*one of inputSingle or inputMulti*/,
inputFile: E1('#chat-input-file'),
contentDiv: E1('div.content')
},
me: F.user.name,
mxMsg: F.config.chat.initSize ? -F.config.chat.initSize : -50,
mnMsg: undefined/*lowest message ID we've seen so far (for history loading)*/,
pageIsActive: 'visible'===document.visibilityState,
changesSincePageHidden: 0,
notificationBubbleColor: 'white',
|
|
>
>
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
messagesWrapper: E1('#chat-messages-wrapper'),
inputForm: E1('#chat-form'),
btnSubmit: E1('#chat-message-submit'),
inputSingle: E1('#chat-input-single'),
inputMulti: E1('#chat-input-multi'),
inputCurrent: undefined/*one of inputSingle or inputMulti*/,
inputFile: E1('#chat-input-file'),
contentDiv: E1('div.content'),
btnMsgHome: E1('#chat-scroll-top'),
btnMsgEnd: E1('#chat-scroll-bottom')
},
me: F.user.name,
mxMsg: F.config.chat.initSize ? -F.config.chat.initSize : -50,
mnMsg: undefined/*lowest message ID we've seen so far (for history loading)*/,
pageIsActive: 'visible'===document.visibilityState,
changesSincePageHidden: 0,
notificationBubbleColor: 'white',
|
| ︙ | | | ︙ | |
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
}else if(Chat.e.newestMessage){
Chat.e.newestMessage.scrollIntoView(false);
}
},
toggleChatOnlyMode: function(){
return this.chatOnlyMode(!this.isChatOnlyMode());
},
settings:{
get: (k,dflt)=>F.storage.get(k,dflt),
getBool: (k,dflt)=>F.storage.getBool(k,dflt),
set: (k,v)=>F.storage.set(k,v),
defaults:{
"images-inline": !!F.config.chat.imagesInline,
"monospace-messages": false
|
>
>
>
>
>
>
>
>
|
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
}else if(Chat.e.newestMessage){
Chat.e.newestMessage.scrollIntoView(false);
}
},
toggleChatOnlyMode: function(){
return this.chatOnlyMode(!this.isChatOnlyMode());
},
/* Turn the message area top/bottom buttons on (yes===true), off
(yes==false), or toggle them (no arguments). Returns this. */
toggleNavButtons: function(yes){
const e = [this.e.btnMsgHome, this.e.btnMsgEnd], c = 'hidden';
if(0===arguments.length) D.toggleClass(e, c);
else if(!arguments[0]) D.addClass(e, c);
else D.removeClass(e, c);
},
settings:{
get: (k,dflt)=>F.storage.get(k,dflt),
getBool: (k,dflt)=>F.storage.getBool(k,dflt),
set: (k,v)=>F.storage.set(k,v),
defaults:{
"images-inline": !!F.config.chat.imagesInline,
"monospace-messages": false
|
| ︙ | | | ︙ | |
315
316
317
318
319
320
321
322
323
324
325
326
327
328
|
if(window.innerWidth<window.innerHeight){
/* Alignment of 'my' messages: right alignment is conventional
for mobile chat apps but can be difficult to read in wide
windows (desktop/tablet landscape mode), so we default to a
layout based on the apparently "orientation" of the window:
tall vs wide. Can be toggled via settings popup. */
document.body.classList.add('my-messages-right');
}
if(cs.settings.getBool('monospace-messages',false)){
document.body.classList.add('monospace-messages');
}
cs.e.inputCurrent = cs.e.inputSingle;
cs.pageTitleOrig = cs.e.pageTitle.innerText;
|
>
|
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
|
if(window.innerWidth<window.innerHeight){
/* Alignment of 'my' messages: right alignment is conventional
for mobile chat apps but can be difficult to read in wide
windows (desktop/tablet landscape mode), so we default to a
layout based on the apparently "orientation" of the window:
tall vs wide. Can be toggled via settings popup. */
document.body.classList.add('my-messages-right');
cs.toggleNavButtons(false);
}
if(cs.settings.getBool('monospace-messages',false)){
document.body.classList.add('monospace-messages');
}
cs.e.inputCurrent = cs.e.inputSingle;
cs.pageTitleOrig = cs.e.pageTitle.innerText;
|
| ︙ | | | ︙ | |
783
784
785
786
787
788
789
790
791
792
793
794
795
796
|
},{
label: "Left-align my posts",
boolValue: ()=>!document.body.classList.contains('my-messages-right'),
callback: function f(){
document.body.classList.toggle('my-messages-right');
}
},{
label: "Images inline",
boolValue: ()=>Chat.settings.getBool('images-inline'),
callback: function(){
const v = Chat.settings.getBool('images-inline',true);
Chat.settings.set('images-inline', !v);
F.toast.message("Image mode set to "+(v ? "hyperlink" : "inline")+".");
}
|
>
>
>
>
|
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
|
},{
label: "Left-align my posts",
boolValue: ()=>!document.body.classList.contains('my-messages-right'),
callback: function f(){
document.body.classList.toggle('my-messages-right');
}
},{
label: "Message home/end buttons",
boolValue: ()=>!Chat.e.btnMsgHome.classList.contains('hidden'),
callback: ()=>Chat.toggleNavButtons()
},{
label: "Images inline",
boolValue: ()=>Chat.settings.getBool('images-inline'),
callback: function(){
const v = Chat.settings.getBool('images-inline',true);
Chat.settings.set('images-inline', !v);
F.toast.message("Image mode set to "+(v ? "hyperlink" : "inline")+".");
}
|
| ︙ | | | ︙ | |