@@ -901,14 +901,14 @@
901 901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eXFrom.addEventListener('click', ()=>this.e.tab.click(), false);
902 902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}*/
903 903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this;
904 904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
905 905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Event handler for clicking .message-user elements to show their
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- timestamps. */
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ timestamps and a set of actions. */
907 907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
_handleLegendClicked: function f(ev){
908 908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!f.popup){
909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Timestamp popup widget */
909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* "Popup" widget */
910 910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.popup = {
911 911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e: D.addClass(D.div(), 'chat-message-popup'),
912 912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
refresh:function(){
913 913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const eMsg = this.$eMsg/*.message-widget element*/;
914 914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!eMsg) return;
@@ -973,11 +973,31 @@
973 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
y: 'a'
974 974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}), "User's Timeline"),
975 975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'target', '_blank'
976 976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
977 977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(toolbar2, timelineLink);
978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(Chat.filterState.activeUser &&
979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.filterState.match(eMsg.dataset.xfrom)){
980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a button to jump to clear user filter
981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ and jump to this message in context. */
982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(
983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ this.e,
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(
985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.addClass(D.div(), 'toolbar'),
986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.button(
987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Message in context",
988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ function(){
989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ self.hide();
990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.setUserFilter(false);
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eMsg.scrollIntoView(false);
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.flashNTimes(eMsg, 3);
993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ })
994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ )
995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }/*jump-to button*/
978 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
979 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const tab = eMsg.querySelector('.message-widget-tab');
980 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(tab, this.e);
981 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(this.e, 'hidden');
982 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}/*refresh()*/,
983 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hide: function(){
@@ -1176,13 +1196,37 @@
1176 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
? Chat.e.viewMessages : Chat.e.viewConfig);
1177 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return false;
1178 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1179 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.attr(settingsButton, 'role', 'button').addEventListener('click', cbToggle, false);
1180 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.e.viewConfig.querySelector('button').addEventListener('click', cbToggle, false);
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Settings menu entries... Remember that they will be rendered in reverse
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- order and the most frequently-needed ones should be closer to the start
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- of this list. */
1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Internal acrobatics to allow certain settings toggles to access
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ related toggles. */
1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const namedOptions = {
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ activeUsers:{
1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ label: "Show active users list",
1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ boolValue: ()=>!Chat.e.activeUserListWrapper.classList.contains('hidden'),
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ persistentSetting: 'active-user-list',
1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ callback: function(){
1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.toggleClass(Chat.e.activeUserListWrapper,'hidden');
1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(Chat.e.activeUserListWrapper.classList.contains('hidden')){
1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* When hiding this element, undo all filtering */
1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.removeClass(Chat.e.viewMessages.querySelectorAll('.message-widget.hidden'), 'hidden');
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*Ideally we'd scroll the final message into view
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ now, but because viewMessages is currently hidden behind
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ viewConfig, scrolling is a no-op. */
1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.scrollMessagesTo(1);
1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.updateActiveUserList();
1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Settings menu entries... Remember that they will be rendered in
1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reverse order and the most frequently-needed ones "should"
1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (arguably) be closer to the start of this list so that they
1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ will be rendered within easier reach of the settings button. */
1184 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const settingsOps = [{
1185 1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Multi-line input",
1186 1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: ()=>Chat.inputElement()===Chat.e.inputMulti,
1187 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
persistentSetting: 'edit-multiline',
1188 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback: function(){
@@ -1200,32 +1244,25 @@
1200 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback: function(){
1201 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const v = Chat.settings.toggle('images-inline');
1202 1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.toast.message("Image mode set to "+(v ? "inline" : "hyperlink")+".");
1203 1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1204 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},{
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- label: "Show timestamps in recent activity list",
1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ label: "Timestamps in active users list",
1206 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: ()=>Chat.e.activeUserList.classList.contains('timestamps'),
1207 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
persistentSetting: 'active-user-list-timestamps',
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- callback: ()=>D.toggleClass(Chat.e.activeUserList,'timestamps')
1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- },{
1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- label: "Show recent activity list",
1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- boolValue: ()=>!Chat.e.activeUserListWrapper.classList.contains('hidden'),
1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- persistentSetting: 'active-user-list',
1213 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback: function(){
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.toggleClass(Chat.e.activeUserListWrapper,'hidden');
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(Chat.e.activeUserListWrapper.classList.contains('hidden')){
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* When hiding this element, undo all filtering */
1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.removeClass(Chat.e.viewMessages.querySelectorAll('.message-widget.hidden'), 'hidden');
1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*Ideally we'd scroll the final message into view
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- now, but because viewMessages is currently hidden behind
1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- viewConfig, scrolling is a no-op. */
1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.scrollMessagesTo(1);
1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.updateActiveUserList();
1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.toggleClass(Chat.e.activeUserList,'timestamps');
1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the timestamp option is activated but optActiveUsers is not
1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ currently checked then toggle that option on as well. */
1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(Chat.e.activeUserList.classList.contains('timestamps')
1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !namedOptions.activeUsers.boolValue()){
1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ namedOptions.activeUsers.checkbox.checked = true;
1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ namedOptions.activeUsers.callback();
1224 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1225 1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- },{
1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ },
1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ namedOptions.activeUsers,{
1227 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Monospace message font",
1228 1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: ()=>document.body.classList.contains('monospace-messages'),
1229 1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
persistentSetting: 'monospace-messages',
1230 1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback: function(){
1231 1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
document.body.classList.toggle('monospace-messages');
@@ -1287,12 +1324,13 @@
1287 1324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(line, btn, op.select);
1288 1325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op.select.addEventListener('change', callback, false);
1289 1326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if(op.hasOwnProperty('boolValue')){
1290 1327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(undefined === f.$id) f.$id = 0;
1291 1328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++f.$id;
1292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const check = D.attr(D.checkbox(1, op.boolValue()),
1293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 'aria-label', op.label);
1329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const check = op.checkbox
1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ = D.attr(D.checkbox(1, op.boolValue()),
1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 'aria-label', op.label);
1294 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const id = 'cfgopt'+f.$id;
1295 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(op.boolValue()) check.checked = true;
1296 1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.attr(check, 'id', id);
1297 1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.attr(btn, 'for', id);
1298 1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(line, check);
1299 1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!