lös ut förkortningar vid ny rad, stor bokstav efter stort skiljetecken
This commit is contained in:
parent
31dec07683
commit
6fdbc88910
@ -9,22 +9,22 @@
|
|||||||
import { cacheShortforms, expandShortform } from '../modules/shortforms';
|
import { cacheShortforms, expandShortform } from '../modules/shortforms';
|
||||||
import { defaultExpanders } from '../modules/keyboard';
|
import { defaultExpanders } from '../modules/keyboard';
|
||||||
import { db, type Shortform } from '../db/main';
|
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({
|
let styles = $derived({
|
||||||
"text-bg": "#333333",
|
'text-bg': '#333333',
|
||||||
"text-fg": "#baff00",
|
'text-fg': '#baff00',
|
||||||
"text-font": textSettings.font,
|
'text-font': textSettings.font,
|
||||||
"text-size": textSettings.size + "px"
|
'text-size': textSettings.size + 'px'
|
||||||
})
|
});
|
||||||
|
|
||||||
let selectedStandardList = {}
|
let selectedStandardList = {};
|
||||||
const selectedStandardListChanged = (v) => {
|
const selectedStandardListChanged = (v) => {
|
||||||
shortforms.standardList = v.value
|
shortforms.standardList = v.value;
|
||||||
shortforms.cache = cacheShortforms([Number(v.value)]);
|
shortforms.cache = cacheShortforms([Number(v.value)]);
|
||||||
}
|
};
|
||||||
let state = {
|
let state = {
|
||||||
capitalizeNext: true,
|
capitalizeNext: true,
|
||||||
currentWord: ''
|
currentWord: ''
|
||||||
@ -33,7 +33,7 @@
|
|||||||
let textarea: HTMLTextAreaElement;
|
let textarea: HTMLTextAreaElement;
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
initShortformState()
|
initShortformState();
|
||||||
shortforms.cache = cacheShortforms([890324]);
|
shortforms.cache = cacheShortforms([890324]);
|
||||||
if (browser) {
|
if (browser) {
|
||||||
let t = document.getElementById('doc') as HTMLTextAreaElement;
|
let t = document.getElementById('doc') as HTMLTextAreaElement;
|
||||||
@ -44,20 +44,24 @@
|
|||||||
}, 25);
|
}, 25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const standardLists = $derived(liveQuery( async () => {
|
const standardLists = $derived(
|
||||||
return await db.lists.toArray()
|
liveQuery(async () => {
|
||||||
}))
|
return await db.lists.toArray();
|
||||||
|
})
|
||||||
|
);
|
||||||
let css = Object.entries(styles)
|
let css = Object.entries(styles)
|
||||||
.map(([key, value]) => `--${key}:${value}`)
|
.map(([key, value]) => `--${key}:${value}`)
|
||||||
.join(';')
|
.join(';');
|
||||||
const cssVarStyles = $derived({css})
|
const cssVarStyles = $derived({ css });
|
||||||
|
|
||||||
const expand = (e: InputEvent) => {
|
const expand = (e: InputEvent) => {
|
||||||
const expander = e.data as string;
|
let expander = e.data as string;
|
||||||
// console.log("expander:", expander);
|
// console.log("expander:", expander);
|
||||||
|
if (e.inputType == 'insertLineBreak') {
|
||||||
|
expander = '\n';
|
||||||
|
}
|
||||||
if (defaultExpanders.has(expander)) {
|
if (defaultExpanders.has(expander)) {
|
||||||
const expanderRules = defaultExpanders.get(expander)!;
|
const expanderRules = defaultExpanders.get(expander)!;
|
||||||
const currentWord = getCurrentWord(textarea).trim();
|
const currentWord = getCurrentWord(textarea).trim();
|
||||||
@ -67,7 +71,9 @@
|
|||||||
state.capitalizeNext = true;
|
state.capitalizeNext = true;
|
||||||
}
|
}
|
||||||
if (expandedPhrase != '') {
|
if (expandedPhrase != '') {
|
||||||
insertExpandedPhrase(textarea, expander, currentWord.length, expandedPhrase);
|
const pos = insertExpandedPhrase(textarea, expander, currentWord.length, expandedPhrase);
|
||||||
|
textarea.blur();
|
||||||
|
textarea.focus();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,19 +90,20 @@
|
|||||||
if (e.inputType == 'insertText') {
|
if (e.inputType == 'insertText') {
|
||||||
const key = e.data || '';
|
const key = e.data || '';
|
||||||
if (e.data == null) return;
|
if (e.data == null) return;
|
||||||
if (state.capitalizeNext) {
|
if (key != ' ' && state.capitalizeNext) {
|
||||||
insertText(textarea, key.toUpperCase());
|
insertText(textarea, key.toUpperCase());
|
||||||
state.capitalizeNext = false;
|
state.capitalizeNext = false;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
expand(e);
|
expand(e);
|
||||||
}
|
}
|
||||||
if (e.inputType == 'insertText') {
|
if (e.inputType == 'insertLineBreak') {
|
||||||
|
expand(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="docContainer h-full flex flex-col" role="application" id="docContainer">
|
<div class="docContainer flex h-full flex-col" role="application" id="docContainer">
|
||||||
<textarea
|
<textarea
|
||||||
bind:this={ref}
|
bind:this={ref}
|
||||||
style="
|
style="
|
||||||
@ -128,7 +135,7 @@
|
|||||||
.textarea {
|
.textarea {
|
||||||
color: var(--text-fg, black);
|
color: var(--text-fg, black);
|
||||||
background-color: var(--text-bg, white);
|
background-color: var(--text-bg, white);
|
||||||
font-family: var(--text-font, "Arial");
|
font-family: var(--text-font, 'Arial');
|
||||||
font-size: var(--text-size, "20px");
|
font-size: var(--text-size, '20px');
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -4,10 +4,11 @@ export const insertText = (textarea: HTMLTextAreaElement, text: string) => {
|
|||||||
textarea.setRangeText(text, start, end, "end");
|
textarea.setRangeText(text, start, end, "end");
|
||||||
};
|
};
|
||||||
|
|
||||||
export const insertExpandedPhrase = (textarea: HTMLTextAreaElement, expander: string, len: number, text: string) => {
|
export const insertExpandedPhrase = (textarea: HTMLTextAreaElement, expander: string, len: number, text: string): number => {
|
||||||
const start = textarea.selectionStart - len;
|
const start = textarea.selectionStart - len;
|
||||||
const end = textarea.selectionStart;
|
const end = textarea.selectionStart;
|
||||||
textarea.setRangeText(text.concat(expander), start, end, "end");
|
textarea.setRangeText(text.concat(expander), start, end, "end");
|
||||||
|
return end
|
||||||
};
|
};
|
||||||
|
|
||||||
const findIndexOfCurrentWord = (textarea: HTMLTextAreaElement) => {
|
const findIndexOfCurrentWord = (textarea: HTMLTextAreaElement) => {
|
||||||
|
@ -8,6 +8,11 @@ let fullscreen = true;
|
|||||||
export const defaultExpanders: Map<string, ExpanderType> = new Map();
|
export const defaultExpanders: Map<string, ExpanderType> = new Map();
|
||||||
export const hotkeys: Map<string, any> = new Map();
|
export const hotkeys: Map<string, any> = new Map();
|
||||||
|
|
||||||
|
defaultExpanders.set("\n", {
|
||||||
|
key: { keyCode: 13, shiftKey: false },
|
||||||
|
symbol: "\n",
|
||||||
|
fullstop: true,
|
||||||
|
});
|
||||||
defaultExpanders.set(" ", {
|
defaultExpanders.set(" ", {
|
||||||
key: { keyCode: 190, shiftKey: false },
|
key: { keyCode: 190, shiftKey: false },
|
||||||
symbol: " ",
|
symbol: " ",
|
||||||
@ -139,7 +144,7 @@ hotkeys.set("F11", {
|
|||||||
action: (e) => {
|
action: (e) => {
|
||||||
console.log("Toggle fullscreen")
|
console.log("Toggle fullscreen")
|
||||||
console.log(PUBLIC_TAURI)
|
console.log(PUBLIC_TAURI)
|
||||||
if(PUBLIC_TAURI == true) {
|
if (PUBLIC_TAURI == true) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
if (fullscreen) {
|
if (fullscreen) {
|
||||||
getCurrentWindow().setFullscreen(false).then(() => {
|
getCurrentWindow().setFullscreen(false).then(() => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user