mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-27 08:08:12 +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:
@@ -3,7 +3,8 @@ use std::ops::{Add, Div, Mul, Sub};
|
||||
use crate::messages::prelude::*;
|
||||
use crate::messages::tool::tool_messages::tool_prelude::DVec2;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type, ExtractField)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, ExtractField)]
|
||||
pub struct ViewportMessageHandler {
|
||||
bounds: Bounds,
|
||||
// Ratio of logical pixels to physical pixels
|
||||
@@ -157,7 +158,8 @@ pub trait Position {
|
||||
fn y(&self) -> f64;
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
|
||||
struct Point {
|
||||
x: f64,
|
||||
y: f64,
|
||||
@@ -183,7 +185,8 @@ impl Position for Point {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
|
||||
pub struct LogicalPoint {
|
||||
inner: Point,
|
||||
scale: f64,
|
||||
@@ -217,7 +220,8 @@ impl FromWithScale<Point> for LogicalPoint {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
|
||||
pub struct PhysicalPoint {
|
||||
inner: Point,
|
||||
scale: f64,
|
||||
@@ -258,7 +262,8 @@ pub trait Rect<P: Position>: Position {
|
||||
fn height(&self) -> f64;
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type, ExtractField)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, ExtractField)]
|
||||
struct Bounds {
|
||||
offset: Point,
|
||||
size: Point,
|
||||
@@ -286,7 +291,8 @@ impl Rect<Point> for Bounds {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
|
||||
pub struct LogicalBounds {
|
||||
offset: Point,
|
||||
size: Point,
|
||||
@@ -338,7 +344,8 @@ impl FromWithScale<Bounds> for LogicalBounds {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize, specta::Type)]
|
||||
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, serde::Serialize, serde::Deserialize)]
|
||||
pub struct PhysicalBounds {
|
||||
offset: Point,
|
||||
size: Point,
|
||||
|
||||
Reference in New Issue
Block a user