mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-25 22:58:11 +08:00
Refactor the TypeScript data flow for full type safety and auto-generation of Rust types (#3865)
* Migrate Specta to Tsify to auto-generate messages.ts, working except colors and widgets * Adopt the generated FillColor/Color/GradientStops * Fix widget typing * Separate WidgetGroup enum variants into wrapper structs * Small rename * Simplify widgets further * Clean up message type references * Switch type imports to the auto-generated file * Remove lowercase serde rename * Fix FillChoice deserialization * Fix small regression from #3837 * Improve type safety * Make WidgetSpan type-safe * More cleanup and type safety * More type safety * More type safety * Get the rest to type-check without errors; improve widget builder macro to have optional icons; improve Svelte 5 configs * Cargo fmt * Fix imports * Update outdated readme info * Fix lint command rename references * Fix typos * One more typos fix * Remove unnecessary dep: prefix from the edited Cargo.toml files * Remove excess parts from Cargo.toml * Fix compiling on desktop * Revert "Remove excess parts from Cargo.toml" This reverts commit 6b711117b3a5d5d8a3ee20f36a43bc74930b7c82. * Update dev docs with simpler, more accurate instructions
This commit is contained in:
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
/* eslint-disable @typescript-eslint/consistent-type-definitions */
|
||||
|
||||
// Graphite's custom properties added to the global `window` object
|
||||
interface Window {
|
||||
imageCanvases: Record<string, HTMLCanvasElement>;
|
||||
receiveNativeMessage?: (buffer: ArrayBuffer) => void;
|
||||
}
|
||||
|
||||
// Graphite's custom "pointerlockmove" event dispatched by input.ts for pointer lock in the CEF desktop app
|
||||
interface WindowEventMap {
|
||||
pointerlockmove: CustomEvent<{ x: number; y: number }>;
|
||||
}
|
||||
|
||||
// Experimental Keyboard API: https://developer.mozilla.org/en-US/docs/Web/API/Keyboard
|
||||
interface Navigator {
|
||||
keyboard?: Keyboard;
|
||||
}
|
||||
interface Keyboard {
|
||||
lock(keyCodes?: string[]): Promise<void>;
|
||||
unlock(): void;
|
||||
getLayoutMap(): Promise<KeyboardLayoutMap>;
|
||||
}
|
||||
interface KeyboardLayoutMap {
|
||||
entries(): IterableIterator<[string, string]>;
|
||||
get(key: string): string | undefined;
|
||||
has(key: string): boolean;
|
||||
readonly size: number;
|
||||
}
|
||||
|
||||
// Experimental EyeDropper API: https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper
|
||||
interface Window {
|
||||
EyeDropper?: typeof EyeDropper;
|
||||
}
|
||||
declare class EyeDropper {
|
||||
constructor();
|
||||
open(options?: { signal?: AbortSignal }): Promise<{ sRGBHex: string }>;
|
||||
}
|
||||
|
||||
// Experimental "clipboard-read" Permission: https://developer.mozilla.org/en-US/docs/Web/API/Permissions
|
||||
interface Permissions {
|
||||
query(permissionDesc: { name: "clipboard-read" }): Promise<PermissionStatus>;
|
||||
}
|
||||
|
||||
// Non-standard Stack Trace Limit API: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stackTraceLimit
|
||||
interface ErrorConstructor {
|
||||
stackTraceLimit?: number;
|
||||
}
|
||||
Reference in New Issue
Block a user