use serde::{Deserialize, Serialize};
use jellyflow_core::core::CanvasPoint;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ViewportMoveKind {
PanDrag,
PanInertia,
PanScroll,
ZoomWheel,
ZoomPinch,
ZoomDoubleClick,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ViewportMoveEndOutcome {
Ended,
Canceled,
}
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct ViewportMoveStart {
pub kind: ViewportMoveKind,
pub pan: CanvasPoint,
pub zoom: f32,
}
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct ViewportMove {
pub kind: ViewportMoveKind,
pub pan: CanvasPoint,
pub zoom: f32,
}
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct ViewportMoveEnd {
pub kind: ViewportMoveKind,
pub pan: CanvasPoint,
pub zoom: f32,
pub outcome: ViewportMoveEndOutcome,
}