mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import type { PixelImage } from "$lib/core/types";
|
||
import type { FileResult, InputMode, ResultKind } from "$lib/registry";
|
||
|
||
export type PreviewTranslate = (key: string) => string;
|
||
|
||
export type SchemaPreviewModelInput = {
|
||
inputMode: InputMode;
|
||
resultKind: ResultKind;
|
||
source: PixelImage | null;
|
||
result: PixelImage | null;
|
||
fileResult: FileResult | null;
|
||
textResult: string | null;
|
||
};
|
||
|
||
export type SchemaPreviewModel = {
|
||
sourceValue: string;
|
||
resultValue: string;
|
||
hasResult: boolean;
|
||
};
|
||
|
||
export function buildSchemaPreviewModel(
|
||
input: SchemaPreviewModelInput,
|
||
translate: PreviewTranslate,
|
||
): SchemaPreviewModel {
|
||
const { inputMode, resultKind, source, result, fileResult, textResult } =
|
||
input;
|
||
const sourceValue =
|
||
inputMode === "none"
|
||
? "—"
|
||
: inputMode === "text"
|
||
? translate("textInput.heading")
|
||
: source
|
||
? `${source.width} × ${source.height} px`
|
||
: "—";
|
||
const hasFiles = Boolean(fileResult && fileResult.files.length > 0);
|
||
const resultValue =
|
||
resultKind === "image"
|
||
? result
|
||
? `${result.width} × ${result.height} px`
|
||
: "—"
|
||
: resultKind === "files"
|
||
? hasFiles
|
||
? `${fileResult?.files.length} ${translate("resultCard.parts")}`
|
||
: "—"
|
||
: textResult
|
||
? translate("textInput.heading")
|
||
: "—";
|
||
return {
|
||
sourceValue,
|
||
resultValue,
|
||
hasResult:
|
||
resultKind === "image"
|
||
? Boolean(result)
|
||
: resultKind === "files"
|
||
? hasFiles
|
||
: Boolean(textResult),
|
||
};
|
||
}
|