summaryrefslogtreecommitdiff
path: root/src/zoom/logic/types.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/zoom/logic/types.ts')
-rw-r--r--src/zoom/logic/types.ts84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/zoom/logic/types.ts b/src/zoom/logic/types.ts
new file mode 100644
index 0000000..1342bc7
--- /dev/null
+++ b/src/zoom/logic/types.ts
@@ -0,0 +1,84 @@
+import type { NLP } from "sortug-ai";
+
+export type ViewLevel =
+ | "text"
+ | "paragraph"
+ | "sentence"
+ | "clause"
+ | "word"
+ | "syllable"
+ | "phoneme";
+export interface ViewState {
+ level: ViewLevel;
+ pIndex: number | null;
+ sIndex: number | null;
+ cIndex: number | null;
+ wIndex: number | null;
+ yIndex: number | null;
+ fIndex: number | null;
+}
+
+export interface ViewProps {
+ idx: number;
+ rawText: string;
+ context: Context;
+ doc: NLP.Spacy.SpacyRes;
+ stanza?: NLP.Stanza.StanzaRes | undefined;
+}
+export type Context = {
+ parentText: string;
+ segmented: string[];
+ idx: number;
+};
+export type DBWord = {
+ confidence: number;
+ frequency: number | null;
+ id: number;
+ ipa: string;
+ spelling: string;
+ type: ExpressionType;
+ syllables: number;
+ lang: string;
+ prosody: string;
+ senses_array: string;
+};
+
+export type WordData = {
+ confidence: number;
+ frequency: number | null;
+ id: number;
+ ipa: Array<{ ipa: string; tags?: string[] }>;
+ spelling: string;
+ type: ExpressionType;
+ syllables: number;
+ lang: string;
+ prosody: Prosody;
+ senses: Sense[];
+};
+export type Prosody = { stressedSyllable: number; rhyme: string };
+export type ExpressionType = "word" | "expression" | "syllable";
+export type Sense = {
+ etymology: string;
+ pos: string;
+ forms: Array<{ form: string; tags: string[] }>;
+ related: Related;
+ senses: SubSense[];
+};
+export type SubSense = {
+ glosses: string[];
+ raw_glosses: string[];
+ categories: string[];
+ examples: Example[];
+ links: Array<[string, string]>;
+ synonyms: RelatedEntry[];
+ tags: string[];
+};
+export type Example = { ref: string; text: string; type: "quote" };
+export type Related = {
+ related: RelatedEntry[];
+ antonyms: RelatedEntry[];
+ synonyms: RelatedEntry[];
+ derived: RelatedEntry[];
+};
+export type RelatedEntry = { word: string; source?: string };
+export type LoadingStatus = "pending" | "loading" | "success" | "error";