- Better handle newline paste

- Resize whenever box gets emptied
This commit is contained in:
Infi
2025-10-01 20:29:00 +02:00
parent 14336a9417
commit d7326896b1
@@ -5,12 +5,33 @@
let textarea: HTMLTextAreaElement;
let skipNextCheck: boolean = $state(false);
let requiresResize: boolean = $state(true);
subscribe(
() => chatInput,
(v) => {
if (skipNextCheck) {
skipNextCheck = false;
return;
}
// Input box has been reset to empty, so resize it back to smaller box
if (v.content === '') {
resize();
console.log("Empty chatbox, resize");
requiresResize = true;
return;
}
// Remove newline characters
let original = v.content;
v.content = v.content.replace(/(\r\n|\n|\r)/gm,"");
console.log(`${original.length} vs ${v.content.length}`);
let hasChanged = original.length != v.content.length;
if (hasChanged) {
skipNextCheck = true;
requiresResize = true;
}
}
);
@@ -36,8 +57,12 @@
textarea.style.height = `${textarea.scrollHeight + 10}px`; // with +10px extra padding
}
onMount(() => {
resize();
$effect(() => {
console.log(`Checking effect: ${requiresResize}`)
if (requiresResize) {
requiresResize = false;
resize();
}
})
</script>