jellyflow_runtime/runtime/keyboard/
types.rs1use keyboard_types::Code as KeyCode;
2
3use crate::runtime::delete::DeleteSelectionError;
4use crate::runtime::drag::NodeNudgeRequest;
5use crate::runtime::store::{DispatchError, DispatchOutcome};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub enum KeyboardIntent {
10 DeleteSelection,
12 DeleteSelectionForKey(KeyCode),
14 NudgeSelection(NodeNudgeRequest),
16}
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
20pub enum KeyboardDeleteAction {
21 ExplicitSelectionDelete,
22 KeyBoundSelectionDelete(KeyCode),
23}
24
25#[derive(Debug, Clone)]
27pub enum KeyboardActionOutcome {
28 DeleteSelection {
29 action: KeyboardDeleteAction,
30 dispatch: DispatchOutcome,
31 },
32 NudgeSelection {
33 request: NodeNudgeRequest,
34 dispatch: DispatchOutcome,
35 },
36}
37
38#[derive(Debug, thiserror::Error)]
40pub enum KeyboardActionError {
41 #[error("delete selection keyboard action failed: {0}")]
42 DeleteSelection(#[from] DeleteSelectionError),
43 #[error("nudge selection keyboard action failed: {0}")]
44 NudgeSelection(#[from] DispatchError),
45}
46
47impl KeyboardActionOutcome {
48 pub fn dispatch(&self) -> &DispatchOutcome {
49 match self {
50 Self::DeleteSelection { dispatch, .. } | Self::NudgeSelection { dispatch, .. } => {
51 dispatch
52 }
53 }
54 }
55}