1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-03 15:46:23 -07:00
gochan/frontend/ts/boardevents.ts
2023-06-15 14:38:57 -07:00

54 lines
1.2 KiB
TypeScript

import $ from "jquery";
import { openQR } from "./dom/qr";
export function handleKeydown(e: JQuery.KeyDownEvent) {
const ta = e.target;
const isPostMsg = ta.nodeName === "TEXTAREA" && ta.name === "postmsg";
const inForm = ta.form !== undefined;
if(!inForm && !e.ctrlKey && e.key === "q") {
openQR();
} else if(isPostMsg && e.ctrlKey) {
applyBBCode(e);
}
}
export function applyBBCode(e: JQuery.KeyDownEvent) {
let tag = "";
switch(e.key) {
case "Enter":
// trigger the form submit event, whether the QR post box or the static post box is currently
$(e.target).parents("form#postform,form#qrpostform").trigger("submit");
break;
case "b":
tag = "b"; // bold
break;
case "i":
tag = "i"; // italics
break;
case "r":
tag = "s"; // strikethrough
break;
case "s":
tag = "?";
break;
case "u":
tag = "u"; // underline
break;
}
if(tag === "") return;
e.preventDefault();
const ta = e.target;
const val = ta.value;
const ss = ta.selectionStart;
const se = ta.selectionEnd;
const r = se + 2 + tag.length;
ta.value = val.slice(0, ss) +
`[${tag}]` +
val.slice(ss, se) +
`[/${tag}]` +
val.slice(se);
ta.setSelectionRange(r, r);
$(ta).text(ta.value);
}