diff --git a/src/lib/components/LexiconEntryView.svelte b/src/lib/components/LexiconEntryView.svelte index 1d84d8822..3e8bb5515 100644 --- a/src/lib/components/LexiconEntryView.svelte +++ b/src/lib/components/LexiconEntryView.svelte @@ -1,146 +1,9 @@ -
{@html xmlData}
+{#await lexicon.search(wordIds) then} + +
+
+        
+ {@html xmlData} +
+
+{/await} diff --git a/src/lib/components/LexiconLanguageTabs.svelte b/src/lib/components/LexiconLanguageTabs.svelte index 0d2de41eb..5d679f8f0 100644 --- a/src/lib/components/LexiconLanguageTabs.svelte +++ b/src/lib/components/LexiconLanguageTabs.svelte @@ -2,10 +2,7 @@ import { expoInOut } from 'svelte/easing'; import { fly } from 'svelte/transition'; - export let reversalLanguage; - export let selectedLanguage; - export let onSwitchLanguage; - export let vernacularLanguage; + let { reversalLanguage, selectedLanguage, onSwitchLanguage, vernacularLanguage } = $props();
@@ -13,8 +10,8 @@ role="button" tabindex="0" aria-pressed={selectedLanguage === vernacularLanguage} - on:click={() => onSwitchLanguage(vernacularLanguage)} - on:keydown={(e) => e.key === 'Enter' && onSwitchLanguage(vernacularLanguage)} + onclick={() => onSwitchLanguage(vernacularLanguage)} + onkeydown={(e) => e.key === 'Enter' && onSwitchLanguage(vernacularLanguage)} class="py-2.5 px-3.5 text-sm uppercase text-center relative dy-tabs dy-tabs-bordered mb-1" > {vernacularLanguage} @@ -29,8 +26,8 @@ role="button" tabindex="0" aria-pressed={selectedLanguage === reversalLanguage} - on:click={() => onSwitchLanguage(reversalLanguage)} - on:keydown={(e) => e.key === 'Enter' && onSwitchLanguage(reversalLanguage)} + onclick={() => onSwitchLanguage(reversalLanguage)} + onkeydown={(e) => e.key === 'Enter' && onSwitchLanguage(reversalLanguage)} class="py-2.5 px-3.5 text-sm uppercase text-center relative dy-tabs dy-tabs-bordered mb-1" > {reversalLanguage} diff --git a/src/lib/components/LexiconListViewHeader.svelte b/src/lib/components/LexiconListViewHeader.svelte index 1bcb4d382..b7e451983 100644 --- a/src/lib/components/LexiconListViewHeader.svelte +++ b/src/lib/components/LexiconListViewHeader.svelte @@ -2,12 +2,14 @@ import LexiconAlphabetStrip from './LexiconAlphabetStrip.svelte'; import LexiconLanguageTabs from './LexiconLanguageTabs.svelte'; - export let alphabet = []; - export let selectedLanguage; - export let vernacularLanguage; - export let reversalLanguage; - export let onSwitchLanguage; - export let onLetterChange; + let { + alphabet, + selectedLanguage, + vernacularLanguage, + reversalLanguage, + onSwitchLanguage, + onLetterChange + } = $props(); async function handleLetterSelect(letter) { onLetterChange(letter); diff --git a/src/lib/components/LexiconReversalListView.svelte b/src/lib/components/LexiconReversalListView.svelte deleted file mode 100644 index d1f756988..000000000 --- a/src/lib/components/LexiconReversalListView.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/src/lib/components/LexiconVernacularListView.svelte b/src/lib/components/LexiconVernacularListView.svelte deleted file mode 100644 index 6f9c54009..000000000 --- a/src/lib/components/LexiconVernacularListView.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/src/lib/components/TextSelectionToolbar.svelte b/src/lib/components/TextSelectionToolbar.svelte index 97fa2f794..0decc5ca6 100644 --- a/src/lib/components/TextSelectionToolbar.svelte +++ b/src/lib/components/TextSelectionToolbar.svelte @@ -34,7 +34,6 @@ TODO: let showHighlightPens = $state(false); let { oncopy } = $props(); - const isCopyEnabled = $derived( config.bookCollections.find((x) => x.id === $refs.collection).features['bc-allow-copy-text'] ); diff --git a/src/lib/components/WordNavigationStrip.svelte b/src/lib/components/WordNavigationStrip.svelte index c7eede9ad..db293ebe9 100644 --- a/src/lib/components/WordNavigationStrip.svelte +++ b/src/lib/components/WordNavigationStrip.svelte @@ -1,77 +1,52 @@ @@ -104,7 +72,7 @@
diff --git a/src/routes/lexicon/+page.ts b/src/routes/lexicon/+page.ts index ecc31378e..8188fee5e 100644 --- a/src/routes/lexicon/+page.ts +++ b/src/routes/lexicon/+page.ts @@ -1,12 +1,6 @@ -import { base } from '$app/paths'; import type { DictionaryConfig } from '$config'; import config from '$lib/data/config'; -import { - initializeDatabase, - vernacularLanguageStore, - vernacularWordsStore -} from '$lib/data/stores/lexicon'; -import type { ReversalIndex } from '$lib/lexicon'; +import { lexicon } from '$lib/data/lexicon.svelte'; export async function load({ fetch }) { if (!(config as DictionaryConfig).writingSystems) { @@ -14,91 +8,36 @@ export async function load({ fetch }) { } const dictionaryConfig = config as DictionaryConfig; - const vernacularWritingSystem = Object.values(dictionaryConfig.writingSystems).find((ws) => - ws.type.includes('main') - ); + const vernacularWritingSystem = Object.values(dictionaryConfig.writingSystems) + .find((ws) => + ws.type.includes('main') + ); if (!vernacularWritingSystem) { throw new Error('Vernacular language not found'); } const vernacularAlphabet = vernacularWritingSystem.alphabet; - const vernacularLanguage = vernacularWritingSystem.displayNames.default; const reversalWritingSystems = Object.entries(dictionaryConfig.writingSystems).filter( - ([key, ws]) => !ws.type.includes('main') + ([_key, ws]) => !ws.type.includes('main') ); if (!reversalWritingSystems) { throw new Error('Reversal language not found'); } - const reversalAlphabets = reversalWritingSystems.map(([key, ws]) => ({ [key]: ws.alphabet })); const reversalLanguages = reversalWritingSystems.map(([key, ws]) => ({ [key]: ws.displayNames.default })); - const reversalIndexes: { [language: string]: ReversalIndex } = {}; // Updated type for reversalIndexes - - for (const [key, ws] of Object.entries(dictionaryConfig.writingSystems)) { - if (!ws.type.includes('main')) { - const response = await fetch(`${base}/reversal/${key}/index.json`); - if (response.ok) { - reversalIndexes[key] = (await response.json()) as ReversalIndex; // Explicitly cast the JSON response - } else { - console.warn(`Failed to load reversal index for language: ${key}`); - } - } - } - - let db = await initializeDatabase({ fetch }); - let results = db.exec(`SELECT id, name, homonym_index, type, num_senses, summary FROM entries`); - - if (!results || results.length === 0) { - throw new Error('Vernacular query error'); - } - - let vernacularWordsList = []; - if (results[0]) { - vernacularWordsList = results[0].values.map((value) => { - const entry = results[0].columns.reduce((acc, column, index) => { - acc[column] = value[index]; - return acc; - }, {}); - let firstLetter = entry.name.charAt(0).toLowerCase(); - - let firstTwoChars; - let startingPosition = 0; - - if (firstLetter === '*' || firstLetter === '-') { - startingPosition = 1; - } - firstTwoChars = entry.name - .substring(startingPosition, 2 + startingPosition) - .toLowerCase(); - - if (vernacularAlphabet.includes(firstTwoChars)) { - firstLetter = firstTwoChars; - } else { - firstLetter = entry.name.charAt(startingPosition).toLowerCase(); - } - - if (!vernacularAlphabet.includes(firstLetter)) { - firstLetter = '*'; - } - - entry.letter = firstLetter; - return entry; - }); - vernacularLanguageStore.set(vernacularLanguage); - vernacularWordsStore.set(vernacularWordsList); - } + await lexicon.withFetch({ fetch }).setup( + dictionaryConfig + ); return { vernacularAlphabet, - reversalAlphabets, reversalLanguages, - reversalIndexes }; } diff --git a/src/routes/lexicon/search/+page.svelte b/src/routes/lexicon/search/+page.svelte index 67bd43918..75c6efd50 100644 --- a/src/routes/lexicon/search/+page.svelte +++ b/src/routes/lexicon/search/+page.svelte @@ -52,7 +52,7 @@ console.log(wordIds); } - function selectWord(word) { + function onSelectWord(word) { selectedWord = selectedWord && selectedWord.word === word ? null : word; wordIds = selectedWord.indexes ? selectedWord.indexes : [selectedWord.index]; } @@ -123,13 +123,13 @@ {#if selectedWord} - + {/if}
{#if wordIds && wordIds.length > 0} - + {:else if wordIds && wordIds.length == 0}
No results found.