@@ -109,11 +109,12 @@
109 109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btnSubmit: E1('#chat-message-submit'),
110 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inputSingle: E1('#chat-input-single'),
111 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inputMulti: E1('#chat-input-multi'),
112 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inputCurrent: undefined/*one of inputSingle or inputMulti*/,
113 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inputFile: E1('#chat-input-file'),
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- contentDiv: E1('div.content')
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ contentDiv: E1('div.content'),
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configArea: E1('#chat-config')
115 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
116 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
me: F.user.name,
117 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxMsg: F.config.chat.initSize ? -F.config.chat.initSize : -50,
118 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mnMsg: undefined/*lowest message ID we've seen so far (for history loading)*/,
119 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pageIsActive: 'visible'===document.visibilityState,
@@ -385,11 +386,11 @@
385 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.
386 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
387 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
setNewMessageSound: function f(uri){
388 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
delete this.playNewMessageSound.audio;
389 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.playNewMessageSound.uri = uri;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- this.settings.set('audible-alert', !!uri);
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ this.settings.set('audible-alert', uri);
391 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this;
392 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
393 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
394 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch.beforesend = ()=>cs.ajaxStart();
395 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch.aftersend = ()=>cs.ajaxEnd();
@@ -950,14 +951,16 @@
950 951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
.replace('T',' ').replace(/\.\d+/,'').replace('Z', ' zulu');
951 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
952 953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
953 954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(function(){/*Set up #chat-settings-button */
954 955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const settingsButton = document.querySelector('#chat-settings-button');
955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- var popupSize = undefined/*placement workaround*/;
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const settingsPopup = new F.PopupWidget({
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cssClass: ['fossil-tooltip', 'chat-settings-popup']
958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- });
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const optionsMenu = E1('#chat-config-options');
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const cbToggle = function(){
958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.toggleClass([Chat.e.messagesWrapper, Chat.e.configArea], 'hidden');
959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.attr(settingsButton, 'role', 'button').addEventListener('click', cbToggle, false);
961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.e.configArea.querySelector('button').addEventListener('click', cbToggle, false);
959 962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Settings menu entries... */
960 963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const settingsOps = [{
961 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Multi-line input",
962 965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: ()=>Chat.inputElement()===Chat.e.inputMulti,
963 966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
persistentSetting: 'edit-multiline',
@@ -992,11 +995,11 @@
992 995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.toast.message("Image mode set to "+(v ? "inline" : "hyperlink")+".");
993 996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
994 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}];
995 998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
996 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/** Set up selection list of notification sounds. */
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(true/*flip this to false to enable selection of audio files*/){
1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(false/*flip this to false to enable selection of audio files*/){
998 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
settingsOps.push({
999 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Audible alerts",
1000 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: ()=>Chat.settings.getBool('audible-alert'),
1001 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback: function(){
1002 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const v = Chat.settings.toggle('audible-alert');
@@ -1009,103 +1012,73 @@
1009 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.settings.getBool('audible-alert') ? F.config.chat.alertSound : false
1010 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1011 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1012 1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Disabled per chatroom discussion: selection list of audio files for
1013 1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chat notification. */
1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const selectSound = settingsOps.selectSound = D.addClass(D.select(), 'menu-entry');
1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.disable(D.option(selectSound, "0", "Audible alert..."));
1017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ settingsOps.selectSound = D.addClass(D.div(), 'menu-entry');
1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const selectSound = D.select();
1019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(settingsOps.selectSound,
1020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(D.span(),"Audio alert"),
1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ selectSound);
1016 1022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.option(selectSound, "", "(no audio)");
1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const firstSoundIndex = selectSound.options.length;
1017 1024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.config.chat.alerts.forEach(function(a){
1018 1025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.option(selectSound, a);
1019 1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
1020 1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(true===Chat.settings.getBool('audible-alert')){
1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- selectSound.selectedIndex = 2/*first audio file in the list*/;
1028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ selectSound.selectedIndex = firstSoundIndex;
1022 1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1023 1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectSound.value = Chat.settings.get('audible-alert','');
1024 1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(selectSound.selectedIndex<0){
1025 1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*Missing file - removed after this setting was applied. Fall back
1026 1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
to the first sound in the list. */
1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- selectSound.selectedIndex = 2;
1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ selectSound.selectedIndex = firstSoundIndex;
1028 1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1029 1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1030 1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectSound.addEventListener('change',function(){
1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const v = this.selectedIndex>1 ? this.value : '';
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const v = this.value;
1032 1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.setNewMessageSound(v);
1033 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.toast.message("Audio notifications "+(v ? "enabled" : "disabled")+".");
1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(v) setTimeout(()=>Chat.playNewMessageSound(), 50);
1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.hide();
1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(v) setTimeout(()=>Chat.playNewMessageSound(), 0);
1036 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}, false);
1037 1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.setNewMessageSound(selectSound.value);
1038 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}/*audio notification config*/
1039 1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Rebuild the menu each time it's shown so that the toggles can
1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- show their current values.
1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.options.refresh = function(){
1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.clearElement(this.e);
1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsOps.forEach(function(op){
1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const line = D.addClass(D.span(), 'menu-entry');
1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const btn = D.append(D.addClass(D.span(), 'button'), op.label);
1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const callback = function(ev){
1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.hide();
1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- op.callback(ev);
1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(op.persistentSetting){
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.settings.set(op.persistentSetting, op.boolValue());
1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.append(line, btn);
1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(op.hasOwnProperty('boolValue')){
1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const check = D.attr(D.checkbox(1, op.boolValue()),
1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 'aria-label', op.label);
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.append(line, check);
1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.append(settingsPopup.e, line);
1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- line.addEventListener('click', callback);
1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- });
1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(settingsOps.selectSound){
1065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.append(settingsPopup.e, settingsOps.selectSound);
1066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.installHideHandlers(
1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- false, settingsOps.selectSound ? false : true,
1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- true)
1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /** Reminder: click-to-hide interferes with "?" embedded within
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- the popup, so cannot be used together with those. Enabling
1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- this means, however, that tapping the menu button to toggle
1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- the menu cannot work because tapping the menu button while the
1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- menu is opened will, because of the click-to-hide handler,
1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- hide the menu before the button gets an event saying to toggle
1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- it.
1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Reminder: because we need a SELECT element for the audio file
1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- selection (since that list can be arbitrarily long), we have
1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- to disable tap-outside-the-popup-to-close-it via passing false
1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- as the 2nd argument to installHideHandlers(). If we don't,
1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tapping on the select element is unreliable on desktop
1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- browsers and doesn't seem to work at all on mobile. */;
1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.attr(settingsButton, 'role', 'button');
1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsButton.addEventListener('click',function(ev){
1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //ev.preventDefault();
1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(settingsPopup.isShown()) settingsPopup.hide();
1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else settingsPopup.show(settingsButton);
1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Reminder: we cannot toggle the visibility from her
1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
1092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }, false);
1093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Find an ideal X/Y position for the popup, directly above the settings
1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- button, based on the size of the popup... */
1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.show(document.body);
1097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- popupSize = settingsPopup.e.getBoundingClientRect();
1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.hide();
1099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.options.adjustX = function(x){
1100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const rect = settingsButton.getBoundingClientRect();
1101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rect.right - popupSize.width;
1102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- settingsPopup.options.adjustY = function(y){
1104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const rect = settingsButton.getBoundingClientRect();
1105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rect.top - popupSize.height -2;
1106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Build list of options...
1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ settingsOps.forEach(function f(op){
1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const line = D.addClass(D.div(), 'menu-entry');
1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const btn = D.append(
1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.addClass(D.label(), 'cbutton'/*bootstrap skin hijacks 'button'*/),
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ op.label);
1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const callback = function(ev){
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ op.callback(ev);
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(op.persistentSetting){
1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.settings.set(op.persistentSetting, op.boolValue());
1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(op.hasOwnProperty('boolValue')){
1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(undefined === f.$id) f.$id = 0;
1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ++f.$id;
1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const check = D.attr(D.checkbox(1, op.boolValue()),
1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 'aria-label', op.label);
1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const id = 'cfgopt'+f.$id;
1065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(op.boolValue()) check.checked = true;
1066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.attr(check, 'id', id);
1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.attr(btn, 'for', id);
1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(line, check);
1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ check.addEventListener('change', callback);
1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ line.addEventListener('click', callback);
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(line, btn);
1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(optionsMenu, line);
1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(settingsOps.selectSound){
1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(optionsMenu, settingsOps.selectSound);
1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //settingsButton.click()/*for for development*/;
1107 1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})()/*#chat-settings-button setup*/;
1108 1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1109 1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/** Callback for poll() to inject new content into the page. jx ==
1110 1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the response from /chat-poll. If atEnd is true, the message is
1111 1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
appended to the end of the chat list (for loading older
1112 1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!