mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-06-01 04:36:12 -04:00
* Add pytesseract * Add simple ocr endpoint replace extension argument * feat/ocr-editor gui * fix frontend linting issues * Add service unit tests * Add split text modes & single ingredient/instruction editing * make split mode really reactive * Remove default step and ingredient * make the linter haappy * Accept only image uploads * Add automatic recipe title suggestion * Correct regex * fix incorrect array.map method usage * make the linter happy again * Swap route to use asset name * Rearange buttons * fix test data * feat: Allow making image the recipe image * Add translation * Make the linter happy * Restrict function setPropertyValueByPath generic * Restrict template literal type * Add a more friendly icon to creation page * update poetry lock file * Correct sloppy ocr classes * Make MyPy happy * Rewrite safer tests * Add tesseract to backend test CI container dependencies * Make canvas element a component global * Remove unwanted spaces in selected text * Add way to know if recipe was created with ocr * Access to ocr-editor for ocr recipes * Update Alembic revision * Make the frontend build * Fix scrolling offset bug * Allow creation of recipes with custom settings * Fix rebasing mistakes * Add format_tsv_output test * Exclude the tests data directory only * Enforce camelCase for frontend functions * Remove import of unused component * Fix type and class initialization * Add multi-language support * Highlight words in mount * Fix image ratio bug * Better ocr creation page * Revert awkward feature to scroll in Selection mode * Rebasing alembic migrations sux * Remove obsolete getShared function * Add function docstring * Move down ocr creation option * Make toolbar icons more generic * Show help at the bottom of the page * move ocr types to own file * Use template ref for the canvas * Use i18n.tc to get strings directly * Correct naming mistake * Move Ocr editor to own directory * Create Ocr Editor parts * Safeguard recipe properties access * Add loading frontend animation due to longer request time * minor cleanup chores Co-authored-by: Miroito <alban.vachette@gmail.com>
74 lines
1.6 KiB
TypeScript
74 lines
1.6 KiB
TypeScript
import { OcrTsvResponse } from "~/types/api-types/ocr";
|
|
import { Recipe } from "~/types/api-types/recipe";
|
|
|
|
export type CanvasRect = {
|
|
startX: number;
|
|
startY: number;
|
|
w: number;
|
|
h: number;
|
|
};
|
|
|
|
export type ImagePosition = {
|
|
sx: number;
|
|
sy: number;
|
|
sWidth: number;
|
|
sHeight: number;
|
|
dx: number;
|
|
dy: number;
|
|
dWidth: number;
|
|
dHeight: number;
|
|
scale: number;
|
|
panStartPoint: {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
};
|
|
|
|
export type Mouse = {
|
|
current: {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
down: boolean;
|
|
};
|
|
|
|
// https://stackoverflow.com/questions/58434389/export typescript-deep-keyof-of-a-nested-object/58436959#58436959
|
|
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...0[]];
|
|
|
|
type Join<K, P> = K extends string | number
|
|
? P extends string | number
|
|
? `${K}${"" extends P ? "" : "."}${P}`
|
|
: never
|
|
: never;
|
|
|
|
export type Leaves<T, D extends number = 10> = [D] extends [never]
|
|
? never
|
|
: T extends object
|
|
? { [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T]
|
|
: "";
|
|
|
|
export type Paths<T, D extends number = 10> = [D] extends [never]
|
|
? never
|
|
: T extends object
|
|
? {
|
|
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K], Prev[D]>> : never;
|
|
}[keyof T]
|
|
: "";
|
|
|
|
export type SelectedRecipeLeaves = Leaves<Recipe>;
|
|
|
|
export type CanvasModes = "selection" | "panAndZoom";
|
|
|
|
export type SelectedTextSplitModes = keyof OcrTsvResponse | "flatten";
|
|
|
|
export type ToolbarIcons<T extends string> = {
|
|
sectionTitle: string;
|
|
eventHandler(mode: T): void;
|
|
highlight: T;
|
|
icons: {
|
|
name: T;
|
|
icon: string;
|
|
tooltip: string;
|
|
}[];
|
|
}[];
|