diff --git a/src/components/textarea.svelte b/src/components/textarea.svelte index ac8e49c..be991a1 100644 --- a/src/components/textarea.svelte +++ b/src/components/textarea.svelte @@ -9,22 +9,22 @@ import { cacheShortforms, expandShortform } from '../modules/shortforms'; import { defaultExpanders } from '../modules/keyboard'; import { db, type Shortform } from '../db/main'; - import { liveQuery } from "dexie"; + import { liveQuery } from 'dexie'; - import * as Select from "$lib/components/ui/select/index.js"; + import * as Select from '$lib/components/ui/select/index.js'; let styles = $derived({ - "text-bg": "#333333", - "text-fg": "#baff00", - "text-font": textSettings.font, - "text-size": textSettings.size + "px" - }) + 'text-bg': '#333333', + 'text-fg': '#baff00', + 'text-font': textSettings.font, + 'text-size': textSettings.size + 'px' + }); - let selectedStandardList = {} + let selectedStandardList = {}; const selectedStandardListChanged = (v) => { - shortforms.standardList = v.value + shortforms.standardList = v.value; shortforms.cache = cacheShortforms([Number(v.value)]); - } + }; let state = { capitalizeNext: true, currentWord: '' @@ -33,7 +33,7 @@ let textarea: HTMLTextAreaElement; onMount(() => { - initShortformState() + initShortformState(); shortforms.cache = cacheShortforms([890324]); if (browser) { let t = document.getElementById('doc') as HTMLTextAreaElement; @@ -44,20 +44,24 @@ }, 25); } } - }); - const standardLists = $derived(liveQuery( async () => { - return await db.lists.toArray() - })) + const standardLists = $derived( + liveQuery(async () => { + return await db.lists.toArray(); + }) + ); let css = Object.entries(styles) - .map(([key, value]) => `--${key}:${value}`) - .join(';') - const cssVarStyles = $derived({css}) + .map(([key, value]) => `--${key}:${value}`) + .join(';'); + const cssVarStyles = $derived({ css }); const expand = (e: InputEvent) => { - const expander = e.data as string; + let expander = e.data as string; // console.log("expander:", expander); + if (e.inputType == 'insertLineBreak') { + expander = '\n'; + } if (defaultExpanders.has(expander)) { const expanderRules = defaultExpanders.get(expander)!; const currentWord = getCurrentWord(textarea).trim(); @@ -67,7 +71,9 @@ state.capitalizeNext = true; } if (expandedPhrase != '') { - insertExpandedPhrase(textarea, expander, currentWord.length, expandedPhrase); + const pos = insertExpandedPhrase(textarea, expander, currentWord.length, expandedPhrase); + textarea.blur(); + textarea.focus(); e.preventDefault(); } } @@ -84,20 +90,21 @@ if (e.inputType == 'insertText') { const key = e.data || ''; if (e.data == null) return; - if (state.capitalizeNext) { + if (key != ' ' && state.capitalizeNext) { insertText(textarea, key.toUpperCase()); state.capitalizeNext = false; e.preventDefault(); } expand(e); } - if (e.inputType == 'insertText') { + if (e.inputType == 'insertLineBreak') { + expand(e); } }; -