mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-04 03:28:28 -05:00 
			
		
		
		
	* add vitest * initialize lib w/ tests * move to dev dep * run tests in CI * update file names * move api folder to lib * move api and api types to same folder * update generator outpath * rm husky * i guess i _did_ need those types * reorg types * extract validators into testable components * (WIP) start composable testing * fix import type * fix linter complaint * simplify icon type def * fix linter errors (maybe?) * rename client file for sorting
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { OcrTsvResponse } from "~/lib/api/types/ocr";
 | 
						|
import { Recipe } from "~/lib/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;
 | 
						|
  }[];
 | 
						|
}[];
 |