@@ -1118,20 +1118,32 @@
1118 1118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
1119 1119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dragenter: function(ev){
1120 1120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.preventDefault();
1121 1121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.dataTransfer.dropEffect = "copy";
1122 1122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.addClass(dropHighlight, 'dragover');
1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return false;
1123 1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
1124 1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dragleave: function(ev){
1125 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(dropHighlight, 'dragover');
1126 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
1127 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dragend: function(ev){
1128 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(dropHighlight, 'dragover');
1129 1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const cancelEvent = function(ev){
1133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* contenteditable tries to do its own thing with dropped data,
1134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ which is not compatible with how we use it, so... */
1135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //if(ev.dataTransfer) ev.dataTransfer.dropEffect = 'none';
1136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ev.preventDefault();
1137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ev.stopPropagation();
1138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return false;
1130 1139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1131 1140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Object.keys(dropEvents).forEach(
1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (k)=>Chat.e.inputFile.addEventListener(k, dropEvents[k], true)
1141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (k)=>{
1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.e.inputFile.addEventListener(k, dropEvents[k], true);
1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.inputElement().addEventListener(k, cancelEvent, false);
1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1133 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1134 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return bxs;
1135 1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})()/*drag/drop*/;
1136 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1137 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const tzOffsetToString = function(off){
@@ -1203,23 +1215,20 @@
1203 1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const inputWidgetKeydown = function f(ev){
1204 1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!f.$toggleCtrl){
1205 1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.$toggleCtrl = function(currentMode){
1206 1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentMode = !currentMode;
1207 1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.settings.set('edit-ctrl-send', currentMode);
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- F.toast.message((currentMode ? "Ctrl-" : "")
1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- +"Enter submits messages.");
1210 1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1211 1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.$toggleCompact = function(currentMode){
1212 1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentMode = !currentMode;
1213 1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.settings.set('edit-compact-mode', currentMode);
1214 1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1215 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.debug("Enter key event:", ev.keyCode, ev.ctrlKey, ev.shiftKey, ev);
1217 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(13 !== ev.keyCode) return;
1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const text = Chat.inputValue().trim();
1218 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const ctrlMode = Chat.settings.getBool('edit-ctrl-send', false);
1219 1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
//console.debug("Enter key event:", ctrlMode, ev.ctrlKey, ev.shiftKey, ev);
1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const text = Chat.inputValue().trim();
1221 1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(ev.shiftKey){
1222 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const compactMode = Chat.settings.getBool('edit-compact-mode', false);
1223 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.preventDefault();
1224 1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.stopPropagation();
1225 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Shift-enter will run preview mode UNLESS preview mode is
@@ -1232,25 +1241,32 @@
1232 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1233 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.e.btnPreview.click();
1234 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1235 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return false;
1236 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(0 && (!ctrlMode && ev.ctrlKey && text)){
1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Ctrl-enter in Enter-sends mode SHOULD, with this logic add a
1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- newline, but that is not happening, for reasons i don't
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- understand. Forcibly appending a newline do the input area
1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- does not work, also for unknown reasons.
1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1245 1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(ev.ctrlKey && !text){
1246 1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Ctrl-enter on an empty field toggles Enter/Ctrl-enter mode */
1247 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.preventDefault();
1248 1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.stopPropagation();
1249 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.$toggleCtrl(ctrlMode);
1250 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return false;
1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if((!ctrlMode && !ev.ctrlKey) || (ev.ctrlKey && ctrlMode)){
1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!ctrlMode && ev.ctrlKey && text){
1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //console.debug("!ctrlMode && ev.ctrlKey && text.");
1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Ctrl-enter in Enter-sends mode SHOULD, with this logic add a
1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newline, but that is not happening, for unknown reasons
1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (possibly related to this element being a conteneditable DIV
1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ instead of a textarea). Forcibly appending a newline do the
1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ input area does not work, also for unknown reasons, and would
1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ only be suitable when we're at the end of the input.
1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Strangely, this approach DOES work for shift-enter, but we
1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ need shift-enter as a hotkey for preview mode.
1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if((!ctrlMode && !ev.ctrlKey) || (ev.ctrlKey && ctrlMode)){
1252 1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Ship it! */
1253 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.preventDefault();
1254 1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev.stopPropagation();
1255 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.submitMessage();
1256 1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return false;
@@ -1339,11 +1355,11 @@
1339 1355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"When the input field has focus, is empty, and preview "+
1340 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"mode is NOT active then Ctrl-Enter toggles this setting.",
1341 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: 'edit-ctrl-send'
1342 1358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},{
1343 1359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Compact mode",
1344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- hint: "Toggle between a space-saving and more spacious writing area. "+
1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hint: "Toggle between a space-saving or more spacious writing area. "+
1345 1361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"When the input field has focus, is empty, and preview mode "+
1346 1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"is NOT active then Shift-Enter toggles this setting.",
1347 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
boolValue: 'edit-compact-mode'
1348 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},{
1349 1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
label: "Left-align my posts",
@@ -1500,10 +1516,16 @@
1500 1516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
1501 1517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.settings.addListener('edit-compact-mode',function(s){
1502 1518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.e.inputLine.classList[
1503 1519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.value ? 'add' : 'remove'
1504 1520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
]('compact');
1521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
1522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.settings.addListener('edit-ctrl-send',function(s){
1523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const label = (s.value ? "Ctrl-" : "")+"Enter submits messages.";
1524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const eInput = Chat.inputElement();
1525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eInput.dataset.placeholder = eInput.dataset.placeholder0 + " " +label;
1526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ F.toast.message(label);
1505 1527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
1506 1528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const valueKludges = {
1507 1529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Convert certain string-format values to other types... */
1508 1530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"false": false,
1509 1531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"true": true
1510 1532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!