diff --git a/hierarchical_message_system_tree.txt b/hierarchical_message_system_tree.txt deleted file mode 100644 index e1ef1af94a..0000000000 --- a/hierarchical_message_system_tree.txt +++ /dev/null @@ -1,1740 +0,0 @@ -Message `editor\src\messages\message.rs` -├── Animation -│ ├── AnimationMessage `editor\src\messages\animation\animation_message.rs` -│ │ ├── ToggleLivePreview -│ │ ├── EnableLivePreview -│ │ ├── DisableLivePreview -│ │ ├── RestartAnimation -│ │ ├── SetFrameIndex -│ │ │ └── frame: f64 -│ │ ├── SetTime -│ │ │ └── time: f64 -│ │ ├── UpdateTime -│ │ ├── IncrementFrameCounter -│ │ └── SetAnimationTimeMode -│ │ └── animation_time_mode: AnimationTimeMode -│ └── AnimationMessageHandler `editor\src\messages\animation\animation_message_handler.rs` -│ ├── live_preview_recently_zero: bool -│ ├── timestamp: f64 -│ ├── frame_index: f64 -│ ├── animation_state: AnimationState -│ ├── fps: f64 -│ └── animation_time_mode: AnimationTimeMode -├── AppWindow -│ ├── AppWindowMessage `editor\src\messages\app_window\app_window_message.rs` -│ │ ├── AppWindowMinimize -│ │ ├── AppWindowMaximize -│ │ └── AppWindowClose -│ └── AppWindowMessageHandler `editor\src\messages\app_window\app_window_message_handler.rs` -│ ├── platform: AppWindowPlatform -│ ├── maximized: bool -│ └── viewport_hole_punch_active: bool -├── Broadcast -│ ├── BroadcastMessage `editor\src\messages\broadcast\broadcast_message.rs` -│ │ ├── TriggerEvent -│ │ │ ├── EventMessage `editor\src\messages\broadcast\event\event_message.rs` -│ │ │ │ ├── AnimationFrame -│ │ │ │ ├── CanvasTransformed -│ │ │ │ ├── ToolAbort -│ │ │ │ ├── SelectionChanged -│ │ │ │ └── WorkingColorChanged -│ │ │ ├── EventMessageHandler `editor\src\messages\broadcast\event\event_message_handler.rs` -│ │ │ └── EventMessageContext `editor\src\messages\broadcast\event\event_message_handler.rs` -│ │ │ └── listeners: &'a mut HashMap> -│ │ ├── SubscribeEvent -│ │ │ ├── on: EventMessage -│ │ │ └── send: Box -│ │ └── UnsubscribeEvent -│ │ ├── on: EventMessage -│ │ └── send: Box -│ └── BroadcastMessageHandler `editor\src\messages\broadcast\broadcast_message_handler.rs` -│ ├── event: EventMessageHandler -│ └── listeners: HashMap> -├── Debug -│ ├── DebugMessage `editor\src\messages\debug\debug_message.rs` -│ │ ├── ToggleTraceLogs -│ │ ├── MessageOff -│ │ ├── MessageNames -│ │ └── MessageContents -│ └── DebugMessageHandler `editor\src\messages\debug\debug_message_handler.rs` -│ └── message_logging_verbosity: MessageLoggingVerbosity -├── Defer -│ ├── DeferMessage `editor\src\messages\defer\defer_message.rs` -│ │ ├── SetGraphSubmissionIndex -│ │ │ └── execution_id: u64 -│ │ ├── TriggerGraphRun -│ │ │ ├── execution_id: u64 -│ │ │ └── document_id: DocumentId -│ │ ├── AfterGraphRun -│ │ │ └── messages: Vec -│ │ ├── TriggerNavigationReady -│ │ └── AfterNavigationReady -│ │ └── messages: Vec -│ ├── DeferMessageHandler `editor\src\messages\defer\defer_message_handler.rs` -│ │ ├── after_graph_run: HashMap> -│ │ ├── after_viewport_resize: Vec -│ │ └── current_graph_submission_id: u64 -│ └── DeferMessageContext `editor\src\messages\defer\defer_message_handler.rs` -│ └── portfolio: &'a PortfolioMessageHandler -├── Dialog -│ ├── DialogMessage `editor\src\messages\dialog\dialog_message.rs` -│ │ ├── ExportDialog -│ │ │ ├── ExportDialogMessage `editor\src\messages\dialog\export_dialog\export_dialog_message.rs` -│ │ │ │ ├── FileType -│ │ │ │ │ └── file_type: FileType -│ │ │ │ ├── ScaleFactor -│ │ │ │ │ └── factor: f64 -│ │ │ │ ├── TransparentBackground -│ │ │ │ │ └── transparent: bool -│ │ │ │ ├── ExportBounds -│ │ │ │ │ └── bounds: ExportBounds -│ │ │ │ └── Submit -│ │ │ ├── ExportDialogMessageHandler `editor\src\messages\dialog\export_dialog\export_dialog_message_handler.rs` -│ │ │ │ ├── file_type: FileType -│ │ │ │ ├── scale_factor: f64 -│ │ │ │ ├── bounds: ExportBounds -│ │ │ │ ├── transparent_background: bool -│ │ │ │ ├── artboards: HashMap -│ │ │ │ └── has_selection: bool -│ │ │ └── ExportDialogMessageContext `editor\src\messages\dialog\export_dialog\export_dialog_message_handler.rs` -│ │ │ └── portfolio: &'a PortfolioMessageHandler -│ │ ├── NewDocumentDialog -│ │ │ ├── NewDocumentDialogMessage `editor\src\messages\dialog\new_document_dialog\new_document_dialog_message.rs` -│ │ │ │ ├── Name -│ │ │ │ │ └── name: String -│ │ │ │ ├── Infinite -│ │ │ │ │ └── infinite: bool -│ │ │ │ ├── DimensionsX -│ │ │ │ │ └── width: f64 -│ │ │ │ ├── DimensionsY -│ │ │ │ │ └── height: f64 -│ │ │ │ └── Submit -│ │ │ ├── NewDocumentDialogMessageHandler `editor\src\messages\dialog\new_document_dialog\new_document_dialog_message_handler.rs` -│ │ │ │ ├── name: String -│ │ │ │ ├── infinite: bool -│ │ │ │ └── dimensions: UVec2 -│ │ │ └── NewDocumentDialogMessageContext `editor\src\messages\dialog\new_document_dialog\new_document_dialog_message_handler.rs` -│ │ │ └── viewport_bounds: &'a ViewportBounds -│ │ ├── PreferencesDialog -│ │ │ ├── PreferencesDialogMessage `editor\src\messages\dialog\preferences_dialog\preferences_dialog_message.rs` -│ │ │ │ └── Confirm -│ │ │ ├── PreferencesDialogMessageHandler `editor\src\messages\dialog\preferences_dialog\preferences_dialog_message_handler.rs` -│ │ │ └── PreferencesDialogMessageContext `editor\src\messages\dialog\preferences_dialog\preferences_dialog_message_handler.rs` -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── CloseAllDocumentsWithConfirmation -│ │ ├── CloseDialogAndThen -│ │ │ └── followups: Vec -│ │ ├── DisplayDialogError -│ │ │ ├── title: String -│ │ │ └── description: String -│ │ ├── RequestAboutGraphiteDialog -│ │ ├── RequestAboutGraphiteDialogWithLocalizedCommitDate -│ │ │ ├── localized_commit_date: String -│ │ │ └── localized_commit_year: String -│ │ ├── RequestComingSoonDialog -│ │ │ └── issue: Option -│ │ ├── RequestDemoArtworkDialog -│ │ ├── RequestExportDialog -│ │ ├── RequestLicensesDialogWithLocalizedCommitDate -│ │ │ └── localized_commit_year: String -│ │ ├── RequestNewDocumentDialog -│ │ └── RequestPreferencesDialog -│ ├── DialogMessageHandler `editor\src\messages\dialog\dialog_message_handler.rs` -│ │ ├── export_dialog: ExportDialogMessageHandler -│ │ ├── new_document_dialog: NewDocumentDialogMessageHandler -│ │ └── preferences_dialog: PreferencesDialogMessageHandler -│ └── DialogMessageContext `editor\src\messages\dialog\dialog_message_handler.rs` -│ ├── portfolio: &'a PortfolioMessageHandler -│ ├── viewport_bounds: &'a ViewportBounds -│ └── preferences: &'a PreferencesMessageHandler -├── Frontend -│ ├── FrontendMessage `editor\src\messages\frontend\frontend_message.rs` -│ │ ├── DisplayDialog -│ │ │ ├── title: String -│ │ │ └── icon: String -│ │ ├── DisplayDialogDismiss -│ │ ├── DisplayDialogPanic -│ │ │ └── panic_info: String -│ │ ├── DisplayEditableTextbox -│ │ │ ├── text: String -│ │ │ ├── line_height_ratio: f64 -│ │ │ ├── font_size: f64 -│ │ │ ├── color: Color -│ │ │ ├── url: String -│ │ │ ├── transform: [f64; 6] -│ │ │ ├── max_width: Option -│ │ │ ├── max_height: Option -│ │ │ └── align: TextAlign -│ │ ├── DisplayEditableTextboxTransform -│ │ │ └── transform: [f64; 6] -│ │ ├── DisplayRemoveEditableTextbox -│ │ ├── SendUIMetadata -│ │ │ ├── node_descriptions: Vec<(String, String)> -│ │ │ └── node_types: Vec -│ │ ├── TriggerAboutGraphiteLocalizedCommitDate -│ │ │ └── commit_date: String -│ │ ├── TriggerSaveDocument -│ │ │ ├── document_id: DocumentId -│ │ │ ├── name: String -│ │ │ ├── path: Option -│ │ │ └── content: Vec -│ │ ├── TriggerSaveFile -│ │ │ ├── name: String -│ │ │ └── content: Vec -│ │ ├── TriggerExportImage -│ │ │ ├── svg: String -│ │ │ ├── name: String -│ │ │ ├── mime: String -│ │ │ └── size: (f64, f64) -│ │ ├── TriggerFetchAndOpenDocument -│ │ │ ├── name: String -│ │ │ └── filename: String -│ │ ├── TriggerFontLoad -│ │ │ └── font: Font -│ │ ├── TriggerImport -│ │ ├── TriggerIndexedDbRemoveDocument -│ │ │ └── document_id: DocumentId -│ │ ├── TriggerIndexedDbWriteDocument -│ │ │ ├── document: String -│ │ │ └── details: FrontendDocumentDetails -│ │ ├── TriggerLoadFirstAutoSaveDocument -│ │ ├── TriggerLoadRestAutoSaveDocuments -│ │ ├── TriggerLoadPreferences -│ │ ├── TriggerOpenDocument -│ │ ├── TriggerPaste -│ │ ├── TriggerSavePreferences -│ │ │ └── preferences: PreferencesMessageHandler -│ │ ├── TriggerSaveActiveDocument -│ │ │ └── document_id: DocumentId -│ │ ├── TriggerTextCommit -│ │ ├── TriggerTextCopy -│ │ │ └── copy_text: String -│ │ ├── TriggerVisitLink -│ │ │ └── url: String -│ │ ├── UpdateActiveDocument -│ │ │ └── document_id: DocumentId -│ │ ├── UpdateImportsExports -│ │ │ ├── imports: Vec<(FrontendGraphOutput, i32, i32)> -│ │ │ ├── exports: Vec<(FrontendGraphInput, i32, i32)> -│ │ │ ├── add_import: Option<(i32, i32)> -│ │ │ └── add_export: Option<(i32, i32)> -│ │ ├── UpdateInSelectedNetwork -│ │ │ └── in_selected_network: bool -│ │ ├── UpdateBox -│ │ │ └── box_selection: Option -│ │ ├── UpdateContextMenuInformation -│ │ │ └── context_menu_information: Option -│ │ ├── UpdateClickTargets -│ │ │ └── click_targets: Option -│ │ ├── UpdateGraphViewOverlay -│ │ │ └── open: bool -│ │ ├── UpdateDataPanelState -│ │ │ └── open: bool -│ │ ├── UpdatePropertiesPanelState -│ │ │ └── open: bool -│ │ ├── UpdateLayersPanelState -│ │ │ └── open: bool -│ │ ├── UpdateDataPanelLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateImportReorderIndex -│ │ │ └── index: Option -│ │ ├── UpdateExportReorderIndex -│ │ │ └── index: Option -│ │ ├── UpdateLayerWidths -│ │ │ ├── layer_widths: HashMap -│ │ │ ├── chain_widths: HashMap -│ │ │ └── has_left_input_wire: HashMap -│ │ ├── UpdateDialogButtons -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateDialogColumn1 -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateDialogColumn2 -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateDocumentArtwork -│ │ │ └── svg: String -│ │ ├── UpdateImageData -│ │ │ └── image_data: Vec<(u64, Image)> -│ │ ├── UpdateDocumentBarLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateDocumentLayerDetails -│ │ │ └── data: LayerPanelEntry -│ │ ├── UpdateDocumentLayerStructure -│ │ │ └── data_buffer: RawBuffer -│ │ ├── UpdateDocumentLayerStructureJs -│ │ │ └── data_buffer: JsRawBuffer -│ │ ├── UpdateDocumentModeLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateDocumentRulers -│ │ │ ├── origin: (f64, f64) -│ │ │ ├── spacing: f64 -│ │ │ ├── interval: f64 -│ │ │ └── visible: bool -│ │ ├── UpdateDocumentScrollbars -│ │ │ ├── position: (f64, f64) -│ │ │ ├── size: (f64, f64) -│ │ │ └── multiplier: (f64, f64) -│ │ ├── UpdateEyedropperSamplingState -│ │ │ ├── mouse_position: Option<(f64, f64)> -│ │ │ ├── primary_color: String -│ │ │ ├── secondary_color: String -│ │ │ └── set_color_choice: Option -│ │ ├── UpdateGraphFadeArtwork -│ │ │ └── percentage: f64 -│ │ ├── UpdateInputHints -│ │ │ └── hint_data: HintData -│ │ ├── UpdateLayersPanelControlBarLeftLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateLayersPanelControlBarRightLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateLayersPanelBottomBarLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateMenuBarLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── layout: Vec -│ │ ├── UpdateMouseCursor -│ │ │ └── cursor: MouseCursorIcon -│ │ ├── UpdateNodeGraphNodes -│ │ │ └── nodes: Vec -│ │ ├── UpdateVisibleNodes -│ │ │ └── nodes: Vec -│ │ ├── UpdateNodeGraphWires -│ │ │ └── wires: Vec -│ │ ├── ClearAllNodeGraphWires -│ │ ├── UpdateNodeGraphControlBarLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateNodeGraphSelection -│ │ │ └── selected: Vec -│ │ ├── UpdateNodeGraphTransform -│ │ │ └── transform: Transform -│ │ ├── UpdateNodeThumbnail -│ │ │ ├── id: NodeId -│ │ │ └── value: String -│ │ ├── UpdateOpenDocumentsList -│ │ │ └── open_documents: Vec -│ │ ├── UpdatePropertiesPanelLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateToolOptionsLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateToolShelfLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdateWirePathInProgress -│ │ │ └── wire_path: Option -│ │ ├── UpdateWorkingColorsLayout -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── diff: Vec -│ │ ├── UpdatePlatform -│ │ │ └── platform: AppWindowPlatform -│ │ ├── UpdateMaximized -│ │ │ └── maximized: bool -│ │ ├── UpdateViewportHolePunch -│ │ │ └── active: bool -│ │ └── RenderOverlays -│ │ └── context: OverlayContext -├── Globals -│ ├── GlobalsMessage `editor\src\messages\globals\globals_message.rs` -│ │ └── SetPlatform -│ │ └── platform: Platform -│ └── GlobalsMessageHandler `editor\src\messages\globals\globals_message_handler.rs` -├── InputPreprocessor -│ ├── InputPreprocessorMessage `editor\src\messages\input_preprocessor\input_preprocessor_message.rs` -│ │ ├── BoundsOfViewports -│ │ │ └── bounds_of_viewports: Vec -│ │ ├── DoubleClick -│ │ │ ├── editor_mouse_state: EditorMouseState -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── KeyDown -│ │ │ ├── key: Key -│ │ │ ├── key_repeat: bool -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── KeyUp -│ │ │ ├── key: Key -│ │ │ ├── key_repeat: bool -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── PointerDown -│ │ │ ├── editor_mouse_state: EditorMouseState -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── PointerMove -│ │ │ ├── editor_mouse_state: EditorMouseState -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── PointerUp -│ │ │ ├── editor_mouse_state: EditorMouseState -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── PointerShake -│ │ │ ├── editor_mouse_state: EditorMouseState -│ │ │ └── modifier_keys: ModifierKeys -│ │ ├── CurrentTime -│ │ │ └── timestamp: u64 -│ │ └── WheelScroll -│ │ ├── editor_mouse_state: EditorMouseState -│ │ └── modifier_keys: ModifierKeys -│ ├── InputPreprocessorMessageHandler `editor\src\messages\input_preprocessor\input_preprocessor_message_handler.rs` -│ │ ├── frame_time: FrameTimeInfo -│ │ ├── time: u64 -│ │ ├── keyboard: KeyStates -│ │ ├── mouse: MouseState -│ │ └── viewport_bounds: ViewportBounds -│ └── InputPreprocessorMessageContext `editor\src\messages\input_preprocessor\input_preprocessor_message_handler.rs` -│ └── keyboard_platform: KeyboardPlatformLayout -├── KeyMapping -│ ├── KeyMappingMessage `editor\src\messages\input_mapper\key_mapping\key_mapping_message.rs` -│ │ ├── Lookup -│ │ │ ├── InputMapperMessage `editor\src\messages\input_mapper\input_mapper_message.rs` -│ │ │ │ ├── KeyDown -│ │ │ │ │ └── Key -│ │ │ │ ├── KeyUp -│ │ │ │ │ └── Key -│ │ │ │ ├── KeyDownNoRepeat -│ │ │ │ │ └── Key -│ │ │ │ ├── KeyUpNoRepeat -│ │ │ │ │ └── Key -│ │ │ │ ├── DoubleClick -│ │ │ │ │ └── MouseButton -│ │ │ │ ├── PointerMove -│ │ │ │ ├── PointerShake -│ │ │ │ └── WheelScroll -│ │ │ ├── InputMapperMessageHandler `editor\src\messages\input_mapper\input_mapper_message_handler.rs` -│ │ │ │ └── mapping: Mapping -│ │ │ └── InputMapperMessageContext `editor\src\messages\input_mapper\input_mapper_message_handler.rs` -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ └── actions: ActionList -│ │ └── ModifyMapping -│ │ └── mapping: MappingVariant -│ ├── KeyMappingMessageHandler `editor\src\messages\input_mapper\key_mapping\key_mapping_message_handler.rs` -│ │ └── mapping_handler: InputMapperMessageHandler -│ └── KeyMappingMessageContext `editor\src\messages\input_mapper\key_mapping\key_mapping_message_handler.rs` -│ ├── input: &'a InputPreprocessorMessageHandler -│ └── actions: ActionList -├── Layout -│ ├── LayoutMessage `editor\src\messages\layout\layout_message.rs` -│ │ ├── ResendActiveWidget -│ │ │ ├── layout_target: LayoutTarget -│ │ │ └── widget_id: WidgetId -│ │ ├── SendLayout -│ │ │ ├── layout: Layout -│ │ │ └── layout_target: LayoutTarget -│ │ ├── WidgetValueCommit -│ │ │ ├── layout_target: LayoutTarget -│ │ │ ├── widget_id: WidgetId -│ │ │ └── value: serde_json::Value -│ │ └── WidgetValueUpdate -│ │ ├── layout_target: LayoutTarget -│ │ ├── widget_id: WidgetId -│ │ └── value: serde_json::Value -│ ├── LayoutMessageHandler `editor\src\messages\layout\layout_message_handler.rs` -│ │ └── layouts: [Layout; LayoutTarget::LayoutTargetLength as usize] -│ └── LayoutMessageContext `editor\src\messages\layout\layout_message_handler.rs` -│ └── action_input_mapping: &'a dyn Fn(&MessageDiscriminant) -> Option -├── Portfolio -│ ├── PortfolioMessage `editor\src\messages\portfolio\portfolio_message.rs` -│ │ ├── MenuBar -│ │ │ ├── MenuBarMessage `editor\src\messages\portfolio\menu_bar\menu_bar_message.rs` -│ │ │ │ └── SendLayout -│ │ │ └── MenuBarMessageHandler `editor\src\messages\portfolio\menu_bar\menu_bar_message_handler.rs` -│ │ │ ├── has_active_document: bool -│ │ │ ├── canvas_tilted: bool -│ │ │ ├── canvas_flipped: bool -│ │ │ ├── rulers_visible: bool -│ │ │ ├── node_graph_open: bool -│ │ │ ├── has_selected_nodes: bool -│ │ │ ├── has_selected_layers: bool -│ │ │ ├── has_selection_history: (bool, bool) -│ │ │ ├── message_logging_verbosity: MessageLoggingVerbosity -│ │ │ ├── reset_node_definitions_on_open: bool -│ │ │ ├── make_path_editable_is_allowed: bool -│ │ │ ├── data_panel_open: bool -│ │ │ ├── layers_panel_open: bool -│ │ │ └── properties_panel_open: bool -│ │ ├── Document -│ │ │ ├── DocumentMessage `editor\src\messages\portfolio\document\document_message.rs` -│ │ │ │ ├── Noop -│ │ │ │ ├── GraphOperation -│ │ │ │ │ ├── GraphOperationMessage `editor\src\messages\portfolio\document\graph_operation\graph_operation_message.rs` -│ │ │ │ │ │ ├── FillSet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── fill: Fill -│ │ │ │ │ │ ├── BlendingFillSet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── fill: f64 -│ │ │ │ │ │ ├── OpacitySet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── opacity: f64 -│ │ │ │ │ │ ├── BlendModeSet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── blend_mode: BlendMode -│ │ │ │ │ │ ├── ClipModeToggle -│ │ │ │ │ │ │ └── layer: LayerNodeIdentifier -│ │ │ │ │ │ ├── StrokeSet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── stroke: Stroke -│ │ │ │ │ │ ├── TransformChange -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ ├── transform: DAffine2 -│ │ │ │ │ │ │ ├── transform_in: TransformIn -│ │ │ │ │ │ │ └── skip_rerender: bool -│ │ │ │ │ │ ├── TransformSet -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ ├── transform: DAffine2 -│ │ │ │ │ │ │ ├── transform_in: TransformIn -│ │ │ │ │ │ │ └── skip_rerender: bool -│ │ │ │ │ │ ├── Vector -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── modification_type: VectorModificationType -│ │ │ │ │ │ ├── Brush -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ └── strokes: Vec -│ │ │ │ │ │ ├── SetUpstreamToChain -│ │ │ │ │ │ │ └── layer: LayerNodeIdentifier -│ │ │ │ │ │ ├── NewArtboard -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ └── artboard: Artboard -│ │ │ │ │ │ ├── NewBitmapLayer -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ ├── image_frame: Table> -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── NewBooleanOperationLayer -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ ├── operation: graphene_std::path_bool::BooleanOperation -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── NewCustomLayer -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ ├── nodes: Vec<(NodeId, NodeTemplate)> -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── NewVectorLayer -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ ├── subpaths: Vec> -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── NewTextLayer -│ │ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ │ ├── text: String -│ │ │ │ │ │ │ ├── font: Font -│ │ │ │ │ │ │ ├── typesetting: TypesettingConfig -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── ResizeArtboard -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ ├── location: IVec2 -│ │ │ │ │ │ │ └── dimensions: IVec2 -│ │ │ │ │ │ ├── RemoveArtboards -│ │ │ │ │ │ └── NewSvg -│ │ │ │ │ │ ├── id: NodeId -│ │ │ │ │ │ ├── svg: String -│ │ │ │ │ │ ├── transform: DAffine2 -│ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ ├── GraphOperationMessageHandler `editor\src\messages\portfolio\document\graph_operation\graph_operation_message_handler.rs` -│ │ │ │ │ └── GraphOperationMessageContext `editor\src\messages\portfolio\document\graph_operation\graph_operation_message_handler.rs` -│ │ │ │ │ ├── network_interface: &'a mut NodeNetworkInterface -│ │ │ │ │ ├── collapsed: &'a mut CollapsedLayers -│ │ │ │ │ └── node_graph: &'a mut NodeGraphMessageHandler -│ │ │ │ ├── Navigation -│ │ │ │ │ ├── NavigationMessage `editor\src\messages\portfolio\document\navigation\navigation_message.rs` -│ │ │ │ │ │ ├── BeginCanvasPan -│ │ │ │ │ │ ├── BeginCanvasTilt -│ │ │ │ │ │ │ └── was_dispatched_from_menu: bool -│ │ │ │ │ │ ├── BeginCanvasZoom -│ │ │ │ │ │ ├── CanvasPan -│ │ │ │ │ │ │ └── delta: DVec2 -│ │ │ │ │ │ ├── CanvasPanAbortPrepare -│ │ │ │ │ │ │ └── x_not_y_axis: bool -│ │ │ │ │ │ ├── CanvasPanAbort -│ │ │ │ │ │ │ └── x_not_y_axis: bool -│ │ │ │ │ │ ├── CanvasPanByViewportFraction -│ │ │ │ │ │ │ └── delta: DVec2 -│ │ │ │ │ │ ├── CanvasPanMouseWheel -│ │ │ │ │ │ │ └── use_y_as_x: bool -│ │ │ │ │ │ ├── CanvasTiltResetAndZoomTo100Percent -│ │ │ │ │ │ ├── CanvasTiltSet -│ │ │ │ │ │ │ └── angle_radians: f64 -│ │ │ │ │ │ ├── CanvasZoomDecrease -│ │ │ │ │ │ │ └── center_on_mouse: bool -│ │ │ │ │ │ ├── CanvasZoomIncrease -│ │ │ │ │ │ │ └── center_on_mouse: bool -│ │ │ │ │ │ ├── CanvasZoomMouseWheel -│ │ │ │ │ │ ├── CanvasZoomSet -│ │ │ │ │ │ │ └── zoom_factor: f64 -│ │ │ │ │ │ ├── CanvasFlip -│ │ │ │ │ │ ├── EndCanvasPTZ -│ │ │ │ │ │ │ └── abort_transform: bool -│ │ │ │ │ │ ├── EndCanvasPTZWithClick -│ │ │ │ │ │ │ └── commit_key: Key -│ │ │ │ │ │ ├── FitViewportToBounds -│ │ │ │ │ │ │ ├── bounds: [DVec2; 2] -│ │ │ │ │ │ │ └── prevent_zoom_past_100: bool -│ │ │ │ │ │ ├── FitViewportToSelection -│ │ │ │ │ │ └── PointerMove -│ │ │ │ │ │ └── snap: Key -│ │ │ │ │ ├── NavigationMessageHandler `editor\src\messages\portfolio\document\navigation\navigation_message_handler.rs` -│ │ │ │ │ │ ├── navigation_operation: NavigationOperation -│ │ │ │ │ │ ├── mouse_position: ViewportPosition -│ │ │ │ │ │ ├── finish_operation_with_click: bool -│ │ │ │ │ │ └── abortable_pan_start: Option -│ │ │ │ │ └── NavigationMessageContext `editor\src\messages\portfolio\document\navigation\navigation_message_handler.rs` -│ │ │ │ │ ├── network_interface: &'a mut NodeNetworkInterface -│ │ │ │ │ ├── breadcrumb_network_path: &'a [NodeId] -│ │ │ │ │ ├── ipp: &'a InputPreprocessorMessageHandler -│ │ │ │ │ ├── document_ptz: &'a mut PTZ -│ │ │ │ │ ├── graph_view_overlay_open: bool -│ │ │ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ │ │ ├── NodeGraph -│ │ │ │ │ ├── NodeGraphMessage `editor\src\messages\portfolio\document\node_graph\node_graph_message.rs` -│ │ │ │ │ │ ├── AddNodes -│ │ │ │ │ │ │ ├── nodes: Vec<(NodeId, NodeTemplate)> -│ │ │ │ │ │ │ └── new_ids: HashMap -│ │ │ │ │ │ ├── AddPathNode -│ │ │ │ │ │ ├── AddImport -│ │ │ │ │ │ ├── AddExport -│ │ │ │ │ │ ├── Init -│ │ │ │ │ │ ├── SelectedNodesUpdated -│ │ │ │ │ │ ├── Copy -│ │ │ │ │ │ ├── CreateNodeInLayerNoTransaction -│ │ │ │ │ │ │ ├── node_type: String -│ │ │ │ │ │ │ └── layer: LayerNodeIdentifier -│ │ │ │ │ │ ├── CreateNodeInLayerWithTransaction -│ │ │ │ │ │ │ ├── node_type: String -│ │ │ │ │ │ │ └── layer: LayerNodeIdentifier -│ │ │ │ │ │ ├── CreateNodeFromContextMenu -│ │ │ │ │ │ │ ├── node_id: Option -│ │ │ │ │ │ │ ├── node_type: String -│ │ │ │ │ │ │ ├── xy: Option<(i32, i32)> -│ │ │ │ │ │ │ └── add_transaction: bool -│ │ │ │ │ │ ├── CreateWire -│ │ │ │ │ │ │ ├── output_connector: OutputConnector -│ │ │ │ │ │ │ └── input_connector: InputConnector -│ │ │ │ │ │ ├── ConnectUpstreamOutputToInput -│ │ │ │ │ │ │ ├── downstream_input: InputConnector -│ │ │ │ │ │ │ └── input_connector: InputConnector -│ │ │ │ │ │ ├── Cut -│ │ │ │ │ │ ├── DeleteNodes -│ │ │ │ │ │ │ ├── node_ids: Vec -│ │ │ │ │ │ │ └── delete_children: bool -│ │ │ │ │ │ ├── DeleteSelectedNodes -│ │ │ │ │ │ │ └── delete_children: bool -│ │ │ │ │ │ ├── DisconnectInput -│ │ │ │ │ │ │ └── input_connector: InputConnector -│ │ │ │ │ │ ├── DisconnectRootNode -│ │ │ │ │ │ ├── EnterNestedNetwork -│ │ │ │ │ │ ├── DuplicateSelectedNodes -│ │ │ │ │ │ ├── ExposeInput -│ │ │ │ │ │ │ ├── input_connector: InputConnector -│ │ │ │ │ │ │ ├── set_to_exposed: bool -│ │ │ │ │ │ │ └── start_transaction: bool -│ │ │ │ │ │ ├── InsertNode -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── node_template: NodeTemplate -│ │ │ │ │ │ ├── InsertNodeBetween -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ ├── input_connector: InputConnector -│ │ │ │ │ │ │ └── insert_node_input_index: usize -│ │ │ │ │ │ ├── MergeSelectedNodes -│ │ │ │ │ │ ├── MoveLayerToStack -│ │ │ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ │ │ └── insert_index: usize -│ │ │ │ │ │ ├── MoveNodeToChainStart -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── parent: LayerNodeIdentifier -│ │ │ │ │ │ ├── SetChainPosition -│ │ │ │ │ │ │ └── node_id: NodeId -│ │ │ │ │ │ ├── PasteNodes -│ │ │ │ │ │ │ └── serialized_nodes: String -│ │ │ │ │ │ ├── PointerDown -│ │ │ │ │ │ │ ├── shift_click: bool -│ │ │ │ │ │ │ ├── control_click: bool -│ │ │ │ │ │ │ ├── alt_click: bool -│ │ │ │ │ │ │ └── right_click: bool -│ │ │ │ │ │ ├── PointerMove -│ │ │ │ │ │ │ └── shift: Key -│ │ │ │ │ │ ├── PointerUp -│ │ │ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ │ │ └── shift: Key -│ │ │ │ │ │ ├── ShakeNode -│ │ │ │ │ │ ├── RemoveImport -│ │ │ │ │ │ │ └── import_index: usize -│ │ │ │ │ │ ├── RemoveExport -│ │ │ │ │ │ │ └── export_index: usize -│ │ │ │ │ │ ├── ReorderImport -│ │ │ │ │ │ │ ├── start_index: usize -│ │ │ │ │ │ │ └── end_index: usize -│ │ │ │ │ │ ├── ReorderExport -│ │ │ │ │ │ │ ├── start_index: usize -│ │ │ │ │ │ │ └── end_index: usize -│ │ │ │ │ │ ├── RunDocumentGraph -│ │ │ │ │ │ ├── ForceRunDocumentGraph -│ │ │ │ │ │ ├── SelectedNodesAdd -│ │ │ │ │ │ │ └── nodes: Vec -│ │ │ │ │ │ ├── SelectedNodesRemove -│ │ │ │ │ │ │ └── nodes: Vec -│ │ │ │ │ │ ├── SelectedNodesSet -│ │ │ │ │ │ │ └── nodes: Vec -│ │ │ │ │ │ ├── SendClickTargets -│ │ │ │ │ │ ├── EndSendClickTargets -│ │ │ │ │ │ ├── UnloadWires -│ │ │ │ │ │ ├── SendWires -│ │ │ │ │ │ ├── UpdateVisibleNodes -│ │ │ │ │ │ ├── SendGraph -│ │ │ │ │ │ ├── SetGridAlignedEdges -│ │ │ │ │ │ ├── SetInputValue -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ ├── input_index: usize -│ │ │ │ │ │ │ └── value: TaggedValue -│ │ │ │ │ │ ├── SetInput -│ │ │ │ │ │ │ ├── input_connector: InputConnector -│ │ │ │ │ │ │ └── input: NodeInput -│ │ │ │ │ │ ├── SetDisplayName -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ ├── alias: String -│ │ │ │ │ │ │ └── skip_adding_history_step: bool -│ │ │ │ │ │ ├── SetDisplayNameImpl -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── alias: String -│ │ │ │ │ │ ├── SetToNodeOrLayer -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── is_layer: bool -│ │ │ │ │ │ ├── ShiftNodePosition -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ ├── x: i32 -│ │ │ │ │ │ │ └── y: i32 -│ │ │ │ │ │ ├── ShiftSelectedNodes -│ │ │ │ │ │ │ ├── direction: Direction -│ │ │ │ │ │ │ └── rubber_band: bool -│ │ │ │ │ │ ├── ShiftSelectedNodesByAmount -│ │ │ │ │ │ │ ├── graph_delta: IVec2 -│ │ │ │ │ │ │ └── rubber_band: bool -│ │ │ │ │ │ ├── TogglePreview -│ │ │ │ │ │ │ └── node_id: NodeId -│ │ │ │ │ │ ├── TogglePreviewImpl -│ │ │ │ │ │ │ └── node_id: NodeId -│ │ │ │ │ │ ├── SetImportExportName -│ │ │ │ │ │ │ ├── name: String -│ │ │ │ │ │ │ └── index: ImportOrExport -│ │ │ │ │ │ ├── SetImportExportNameImpl -│ │ │ │ │ │ │ ├── name: String -│ │ │ │ │ │ │ └── index: ImportOrExport -│ │ │ │ │ │ ├── ToggleSelectedAsLayersOrNodes -│ │ │ │ │ │ ├── ToggleSelectedLocked -│ │ │ │ │ │ ├── ToggleLocked -│ │ │ │ │ │ │ └── node_id: NodeId -│ │ │ │ │ │ ├── SetLocked -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── locked: bool -│ │ │ │ │ │ ├── ToggleSelectedIsPinned -│ │ │ │ │ │ ├── ToggleSelectedVisibility -│ │ │ │ │ │ ├── ToggleVisibility -│ │ │ │ │ │ │ └── node_id: NodeId -│ │ │ │ │ │ ├── SetPinned -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── pinned: bool -│ │ │ │ │ │ ├── SetVisibility -│ │ │ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ │ │ └── visible: bool -│ │ │ │ │ │ ├── SetLockedOrVisibilitySideEffects -│ │ │ │ │ │ │ └── node_ids: Vec -│ │ │ │ │ │ ├── UpdateEdges -│ │ │ │ │ │ ├── UpdateBoxSelection -│ │ │ │ │ │ ├── UpdateImportsExports -│ │ │ │ │ │ ├── UpdateLayerPanel -│ │ │ │ │ │ ├── UpdateNewNodeGraph -│ │ │ │ │ │ ├── UpdateTypes -│ │ │ │ │ │ │ ├── resolved_types: ResolvedDocumentNodeTypesDelta -│ │ │ │ │ │ │ └── node_graph_errors: GraphErrors -│ │ │ │ │ │ ├── UpdateActionButtons -│ │ │ │ │ │ ├── UpdateGraphBarRight -│ │ │ │ │ │ ├── UpdateInSelectedNetwork -│ │ │ │ │ │ ├── UpdateHints -│ │ │ │ │ │ └── SendSelectedNodes -│ │ │ │ │ ├── NodeGraphMessageHandler `editor\src\messages\portfolio\document\node_graph\node_graph_message_handler.rs` -│ │ │ │ │ │ ├── network: Vec -│ │ │ │ │ │ ├── node_graph_errors: GraphErrors -│ │ │ │ │ │ ├── has_selection: bool -│ │ │ │ │ │ ├── widgets: [LayoutGroup; 2] -│ │ │ │ │ │ ├── begin_dragging: bool -│ │ │ │ │ │ ├── node_has_moved_in_drag: bool -│ │ │ │ │ │ ├── drag_start: Option<(DragStart, bool)> -│ │ │ │ │ │ ├── drag_start_chain_nodes: Vec -│ │ │ │ │ │ ├── box_selection_start: Option<(DVec2, bool)> -│ │ │ │ │ │ ├── selection_before_pointer_down: Vec -│ │ │ │ │ │ ├── shift_without_push: bool -│ │ │ │ │ │ ├── disconnecting: Option -│ │ │ │ │ │ ├── initial_disconnecting: bool -│ │ │ │ │ │ ├── select_if_not_dragged: Option -│ │ │ │ │ │ ├── wire_in_progress_from_connector: Option -│ │ │ │ │ │ ├── wire_in_progress_type: FrontendGraphDataType -│ │ │ │ │ │ ├── wire_in_progress_to_connector: Option -│ │ │ │ │ │ ├── context_menu: Option -│ │ │ │ │ │ ├── deselect_on_pointer_up: Option -│ │ │ │ │ │ ├── auto_panning: AutoPanning -│ │ │ │ │ │ ├── preview_on_mouse_up: Option -│ │ │ │ │ │ ├── reordering_import: Option -│ │ │ │ │ │ ├── reordering_export: Option -│ │ │ │ │ │ ├── end_index: Option -│ │ │ │ │ │ ├── frontend_nodes: Vec -│ │ │ │ │ │ └── frontend_wires: HashSet<(NodeId, usize)> -│ │ │ │ │ └── NodeGraphMessageContext `editor\src\messages\portfolio\document\node_graph\node_graph_message_handler.rs` -│ │ │ │ │ ├── network_interface: &'a mut NodeNetworkInterface -│ │ │ │ │ ├── selection_network_path: &'a [NodeId] -│ │ │ │ │ ├── breadcrumb_network_path: &'a [NodeId] -│ │ │ │ │ ├── document_id: DocumentId -│ │ │ │ │ ├── collapsed: &'a mut CollapsedLayers -│ │ │ │ │ ├── ipp: &'a InputPreprocessorMessageHandler -│ │ │ │ │ ├── graph_view_overlay_open: bool -│ │ │ │ │ ├── graph_fade_artwork_percentage: f64 -│ │ │ │ │ ├── navigation_handler: &'a NavigationMessageHandler -│ │ │ │ │ ├── preferences: &'a PreferencesMessageHandler -│ │ │ │ │ └── layers_panel_open: bool -│ │ │ │ ├── Overlays -│ │ │ │ │ ├── OverlaysMessage `editor\src\messages\portfolio\document\overlays\overlays_message.rs` -│ │ │ │ │ │ ├── Draw -│ │ │ │ │ │ ├── AddProvider -│ │ │ │ │ │ │ └── provider: OverlayProvider -│ │ │ │ │ │ └── RemoveProvider -│ │ │ │ │ │ └── provider: OverlayProvider -│ │ │ │ │ ├── OverlaysMessageHandler `editor\src\messages\portfolio\document\overlays\overlays_message_handler.rs` -│ │ │ │ │ │ └── overlay_providers: HashSet -│ │ │ │ │ └── OverlaysMessageContext `editor\src\messages\portfolio\document\overlays\overlays_message_handler.rs` -│ │ │ │ │ ├── visibility_settings: OverlaysVisibilitySettings -│ │ │ │ │ ├── ipp: &'a InputPreprocessorMessageHandler -│ │ │ │ │ └── device_pixel_ratio: f64 -│ │ │ │ ├── PropertiesPanel -│ │ │ │ │ ├── PropertiesPanelMessage `editor\src\messages\portfolio\document\properties_panel\properties_panel_message.rs` -│ │ │ │ │ │ ├── Clear -│ │ │ │ │ │ └── Refresh -│ │ │ │ │ ├── PropertiesPanelMessageHandler `editor\src\messages\portfolio\document\properties_panel\properties_panel_message_handler.rs` -│ │ │ │ │ └── PropertiesPanelMessageContext `editor\src\messages\portfolio\document\properties_panel\properties_panel_message_handler.rs` -│ │ │ │ │ ├── network_interface: &'a mut NodeNetworkInterface -│ │ │ │ │ ├── selection_network_path: &'a [NodeId] -│ │ │ │ │ ├── document_name: &'a str -│ │ │ │ │ ├── executor: &'a mut NodeGraphExecutor -│ │ │ │ │ ├── persistent_data: &'a PersistentData -│ │ │ │ │ └── properties_panel_open: bool -│ │ │ │ ├── DataPanel -│ │ │ │ │ ├── DataPanelMessage `editor\src\messages\portfolio\document\data_panel\data_panel_message.rs` -│ │ │ │ │ │ ├── UpdateLayout -│ │ │ │ │ │ │ └── inspect_result: InspectResult -│ │ │ │ │ │ ├── ClearLayout -│ │ │ │ │ │ ├── PushToElementPath -│ │ │ │ │ │ │ └── index: usize -│ │ │ │ │ │ ├── TruncateElementPath -│ │ │ │ │ │ │ └── len: usize -│ │ │ │ │ │ └── ViewVectorTableTab -│ │ │ │ │ │ └── tab: VectorTableTab -│ │ │ │ │ ├── DataPanelMessageHandler `editor\src\messages\portfolio\document\data_panel\data_panel_message_handler.rs` -│ │ │ │ │ │ ├── introspected_node: Option -│ │ │ │ │ │ ├── introspected_data: Option> -│ │ │ │ │ │ ├── element_path: Vec -│ │ │ │ │ │ └── active_vector_table_tab: VectorTableTab -│ │ │ │ │ └── DataPanelMessageContext `editor\src\messages\portfolio\document\data_panel\data_panel_message_handler.rs` -│ │ │ │ │ ├── network_interface: &'a mut NodeNetworkInterface -│ │ │ │ │ └── data_panel_open: bool -│ │ │ │ ├── AlignSelectedLayers -│ │ │ │ │ ├── axis: AlignAxis -│ │ │ │ │ └── aggregate: AlignAggregate -│ │ │ │ ├── RemoveArtboards -│ │ │ │ ├── ClearLayersPanel -│ │ │ │ ├── CreateEmptyFolder -│ │ │ │ ├── DeleteNode -│ │ │ │ │ └── node_id: NodeId -│ │ │ │ ├── DeleteSelectedLayers -│ │ │ │ ├── DeselectAllLayers -│ │ │ │ ├── DocumentHistoryBackward -│ │ │ │ ├── DocumentHistoryForward -│ │ │ │ ├── DocumentStructureChanged -│ │ │ │ ├── DrawArtboardOverlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── DuplicateSelectedLayers -│ │ │ │ ├── EnterNestedNetwork -│ │ │ │ │ └── node_id: NodeId -│ │ │ │ ├── Escape -│ │ │ │ ├── ExitNestedNetwork -│ │ │ │ │ └── steps_back: usize -│ │ │ │ ├── FlipSelectedLayers -│ │ │ │ │ └── flip_axis: FlipAxis -│ │ │ │ ├── RotateSelectedLayers -│ │ │ │ │ └── degrees: f64 -│ │ │ │ ├── GraphViewOverlay -│ │ │ │ │ └── open: bool -│ │ │ │ ├── GraphViewOverlayToggle -│ │ │ │ ├── GridOptions -│ │ │ │ │ └── options: GridSnapping -│ │ │ │ ├── GridOverlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── GridVisibility -│ │ │ │ │ └── visible: bool -│ │ │ │ ├── GroupSelectedLayers -│ │ │ │ │ └── group_folder_type: GroupFolderType -│ │ │ │ ├── MoveSelectedLayersTo -│ │ │ │ │ ├── parent: LayerNodeIdentifier -│ │ │ │ │ └── insert_index: usize -│ │ │ │ ├── MoveSelectedLayersToGroup -│ │ │ │ │ └── parent: LayerNodeIdentifier -│ │ │ │ ├── NudgeSelectedLayers -│ │ │ │ │ ├── delta_x: f64 -│ │ │ │ │ ├── delta_y: f64 -│ │ │ │ │ ├── resize: Key -│ │ │ │ │ └── resize_opposite_corner: Key -│ │ │ │ ├── PasteImage -│ │ │ │ │ ├── name: Option -│ │ │ │ │ ├── image: Image -│ │ │ │ │ ├── mouse: Option<(f64, f64)> -│ │ │ │ │ └── parent_and_insert_index: Option<(LayerNodeIdentifier, usize)> -│ │ │ │ ├── PasteSvg -│ │ │ │ │ ├── name: Option -│ │ │ │ │ ├── svg: String -│ │ │ │ │ ├── mouse: Option<(f64, f64)> -│ │ │ │ │ └── parent_and_insert_index: Option<(LayerNodeIdentifier, usize)> -│ │ │ │ ├── Redo -│ │ │ │ ├── RenameDocument -│ │ │ │ │ └── new_name: String -│ │ │ │ ├── RenderRulers -│ │ │ │ ├── RenderScrollbars -│ │ │ │ ├── SaveDocument -│ │ │ │ ├── SaveDocumentAs -│ │ │ │ ├── SavedDocument -│ │ │ │ │ └── path: Option -│ │ │ │ ├── SelectParentLayer -│ │ │ │ ├── SelectAllLayers -│ │ │ │ ├── SelectedLayersLower -│ │ │ │ ├── SelectedLayersLowerToBack -│ │ │ │ ├── SelectedLayersRaise -│ │ │ │ ├── SelectedLayersRaiseToFront -│ │ │ │ ├── SelectedLayersReverse -│ │ │ │ ├── SelectedLayersReorder -│ │ │ │ │ └── relative_index_offset: isize -│ │ │ │ ├── ClipLayer -│ │ │ │ │ └── id: NodeId -│ │ │ │ ├── SelectLayer -│ │ │ │ │ ├── id: NodeId -│ │ │ │ │ ├── ctrl: bool -│ │ │ │ │ └── shift: bool -│ │ │ │ ├── SetActivePanel -│ │ │ │ │ └── active_panel: PanelType -│ │ │ │ ├── SetBlendModeForSelectedLayers -│ │ │ │ │ └── blend_mode: BlendMode -│ │ │ │ ├── SetGraphFadeArtwork -│ │ │ │ │ └── percentage: f64 -│ │ │ │ ├── SetNodePinned -│ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ └── pinned: bool -│ │ │ │ ├── SetOpacityForSelectedLayers -│ │ │ │ │ └── opacity: f64 -│ │ │ │ ├── SetFillForSelectedLayers -│ │ │ │ │ └── fill: f64 -│ │ │ │ ├── SetOverlaysVisibility -│ │ │ │ │ ├── visible: bool -│ │ │ │ │ └── overlays_type: Option -│ │ │ │ ├── SetRangeSelectionLayer -│ │ │ │ │ └── new_layer: Option -│ │ │ │ ├── SetSnapping -│ │ │ │ │ ├── closure: Optionfn(&'a mut SnappingState) -> &'a mut bool> -│ │ │ │ │ └── snapping_state: bool -│ │ │ │ ├── SetToNodeOrLayer -│ │ │ │ │ ├── node_id: NodeId -│ │ │ │ │ └── is_layer: bool -│ │ │ │ ├── SetViewMode -│ │ │ │ │ └── view_mode: ViewMode -│ │ │ │ ├── AddTransaction -│ │ │ │ ├── StartTransaction -│ │ │ │ ├── EndTransaction -│ │ │ │ ├── CommitTransaction -│ │ │ │ ├── AbortTransaction -│ │ │ │ ├── RepeatedAbortTransaction -│ │ │ │ │ └── undo_count: usize -│ │ │ │ ├── ToggleLayerExpansion -│ │ │ │ │ ├── id: NodeId -│ │ │ │ │ └── recursive: bool -│ │ │ │ ├── ToggleSelectedVisibility -│ │ │ │ ├── ToggleSelectedLocked -│ │ │ │ ├── ToggleGridVisibility -│ │ │ │ ├── ToggleOverlaysVisibility -│ │ │ │ ├── ToggleSnapping -│ │ │ │ ├── UpdateUpstreamTransforms -│ │ │ │ │ ├── upstream_footprints: HashMap -│ │ │ │ │ ├── local_transforms: HashMap -│ │ │ │ │ └── first_element_source_id: HashMap> -│ │ │ │ ├── UpdateClickTargets -│ │ │ │ │ └── click_targets: HashMap> -│ │ │ │ ├── UpdateClipTargets -│ │ │ │ │ └── clip_targets: HashSet -│ │ │ │ ├── Undo -│ │ │ │ ├── UngroupSelectedLayers -│ │ │ │ ├── UngroupLayer -│ │ │ │ │ └── layer: LayerNodeIdentifier -│ │ │ │ ├── PTZUpdate -│ │ │ │ ├── SelectionStepBack -│ │ │ │ ├── SelectionStepForward -│ │ │ │ ├── WrapContentInArtboard -│ │ │ │ │ └── place_artboard_at_origin: bool -│ │ │ │ ├── ZoomCanvasTo100Percent -│ │ │ │ ├── ZoomCanvasTo200Percent -│ │ │ │ └── ZoomCanvasToFitAll -│ │ │ ├── DocumentMessageHandler `editor\src\messages\portfolio\document\document_message_handler.rs` -│ │ │ │ ├── navigation_handler: NavigationMessageHandler -│ │ │ │ ├── node_graph_handler: NodeGraphMessageHandler -│ │ │ │ ├── overlays_message_handler: OverlaysMessageHandler -│ │ │ │ ├── properties_panel_message_handler: PropertiesPanelMessageHandler -│ │ │ │ ├── data_panel_message_handler: DataPanelMessageHandler -│ │ │ │ ├── network_interface: NodeNetworkInterface -│ │ │ │ ├── collapsed: CollapsedLayers -│ │ │ │ ├── commit_hash: String -│ │ │ │ ├── document_ptz: PTZ -│ │ │ │ ├── document_mode: DocumentMode -│ │ │ │ ├── view_mode: ViewMode -│ │ │ │ ├── overlays_visibility_settings: OverlaysVisibilitySettings -│ │ │ │ ├── rulers_visible: bool -│ │ │ │ ├── snapping_state: SnappingState -│ │ │ │ ├── graph_view_overlay_open: bool -│ │ │ │ ├── graph_fade_artwork_percentage: f64 -│ │ │ │ ├── name: String -│ │ │ │ ├── path: Option -│ │ │ │ ├── breadcrumb_network_path: Vec -│ │ │ │ ├── selection_network_path: Vec -│ │ │ │ ├── document_undo_history: VecDeque -│ │ │ │ ├── document_redo_history: VecDeque -│ │ │ │ ├── saved_hash: Option -│ │ │ │ ├── auto_saved_hash: Option -│ │ │ │ ├── layer_range_selection_reference: Option -│ │ │ │ └── is_loaded: bool -│ │ │ └── DocumentMessageContext `editor\src\messages\portfolio\document\document_message_handler.rs` -│ │ │ ├── document_id: DocumentId -│ │ │ ├── ipp: &'a InputPreprocessorMessageHandler -│ │ │ ├── persistent_data: &'a PersistentData -│ │ │ ├── executor: &'a mut NodeGraphExecutor -│ │ │ ├── current_tool: &'a ToolType -│ │ │ ├── preferences: &'a PreferencesMessageHandler -│ │ │ ├── device_pixel_ratio: f64 -│ │ │ ├── data_panel_open: bool -│ │ │ ├── layers_panel_open: bool -│ │ │ └── properties_panel_open: bool -│ │ ├── Init -│ │ ├── DocumentPassMessage -│ │ │ ├── document_id: DocumentId -│ │ │ └── message: DocumentMessage -│ │ ├── AutoSaveActiveDocument -│ │ ├── AutoSaveAllDocuments -│ │ ├── AutoSaveDocument -│ │ │ └── document_id: DocumentId -│ │ ├── CloseActiveDocumentWithConfirmation -│ │ ├── CloseAllDocuments -│ │ ├── CloseAllDocumentsWithConfirmation -│ │ ├── CloseDocument -│ │ │ └── document_id: DocumentId -│ │ ├── CloseDocumentWithConfirmation -│ │ │ └── document_id: DocumentId -│ │ ├── Copy -│ │ │ └── clipboard: Clipboard -│ │ ├── Cut -│ │ │ └── clipboard: Clipboard -│ │ ├── DeleteDocument -│ │ │ └── document_id: DocumentId -│ │ ├── DestroyAllDocuments -│ │ ├── EditorPreferences -│ │ ├── FontLoaded -│ │ │ ├── font_family: String -│ │ │ ├── font_style: String -│ │ │ ├── preview_url: String -│ │ │ └── data: Vec -│ │ ├── Import -│ │ ├── LoadDocumentResources -│ │ │ └── document_id: DocumentId -│ │ ├── LoadFont -│ │ │ └── font: Font -│ │ ├── NewDocumentWithName -│ │ │ └── name: String -│ │ ├── NextDocument -│ │ ├── OpenDocument -│ │ ├── OpenDocumentFile -│ │ │ ├── document_name: Option -│ │ │ ├── document_path: Option -│ │ │ └── document_serialized_content: String -│ │ ├── OpenDocumentFileWithId -│ │ │ ├── document_id: DocumentId -│ │ │ ├── document_name: Option -│ │ │ ├── document_path: Option -│ │ │ ├── document_is_auto_saved: bool -│ │ │ ├── document_is_saved: bool -│ │ │ ├── document_serialized_content: String -│ │ │ └── to_front: bool -│ │ ├── ToggleResetNodesToDefinitionsOnOpen -│ │ ├── PasteIntoFolder -│ │ │ ├── clipboard: Clipboard -│ │ │ ├── parent: LayerNodeIdentifier -│ │ │ └── insert_index: usize -│ │ ├── PasteSerializedData -│ │ │ └── data: String -│ │ ├── PasteSerializedVector -│ │ │ └── data: String -│ │ ├── CenterPastedLayers -│ │ │ └── layers: Vec -│ │ ├── PasteImage -│ │ │ ├── name: Option -│ │ │ ├── image: Image -│ │ │ ├── mouse: Option<(f64, f64)> -│ │ │ └── parent_and_insert_index: Option<(LayerNodeIdentifier, usize)> -│ │ ├── PasteSvg -│ │ │ ├── name: Option -│ │ │ ├── svg: String -│ │ │ ├── mouse: Option<(f64, f64)> -│ │ │ └── parent_and_insert_index: Option<(LayerNodeIdentifier, usize)> -│ │ ├── PrevDocument -│ │ ├── SetActivePanel -│ │ │ └── panel: PanelType -│ │ ├── SetDevicePixelRatio -│ │ │ └── ratio: f64 -│ │ ├── SelectDocument -│ │ │ └── document_id: DocumentId -│ │ ├── SubmitDocumentExport -│ │ │ ├── name: String -│ │ │ ├── file_type: FileType -│ │ │ ├── scale_factor: f64 -│ │ │ ├── bounds: ExportBounds -│ │ │ └── transparent_background: bool -│ │ ├── SubmitActiveGraphRender -│ │ ├── SubmitGraphRender -│ │ │ ├── document_id: DocumentId -│ │ │ └── ignore_hash: bool -│ │ ├── ToggleDataPanelOpen -│ │ ├── TogglePropertiesPanelOpen -│ │ ├── ToggleLayersPanelOpen -│ │ ├── ToggleRulers -│ │ ├── UpdateDocumentWidgets -│ │ ├── UpdateOpenDocumentsList -│ │ └── UpdateVelloPreference -│ ├── PortfolioMessageHandler `editor\src\messages\portfolio\portfolio_message_handler.rs` -│ │ ├── menu_bar_message_handler: MenuBarMessageHandler -│ │ ├── documents: HashMap -│ │ ├── document_ids: VecDeque -│ │ ├── active_panel: PanelType -│ │ ├── active_document_id: Option -│ │ ├── copy_buffer: [Vec; INTERNAL_CLIPBOARD_COUNT as usize] -│ │ ├── persistent_data: PersistentData -│ │ ├── executor: NodeGraphExecutor -│ │ ├── selection_mode: SelectionMode -│ │ ├── device_pixel_ratio: Option -│ │ ├── reset_node_definitions_on_open: bool -│ │ ├── data_panel_open: bool -│ │ ├── layers_panel_open: bool -│ │ └── properties_panel_open: bool -│ └── PortfolioMessageContext `editor\src\messages\portfolio\portfolio_message_handler.rs` -│ ├── ipp: &'a InputPreprocessorMessageHandler -│ ├── preferences: &'a PreferencesMessageHandler -│ ├── animation: &'a AnimationMessageHandler -│ ├── current_tool: &'a ToolType -│ ├── message_logging_verbosity: MessageLoggingVerbosity -│ ├── reset_node_definitions_on_open: bool -│ └── timing_information: TimingInformation -├── Preferences -│ ├── PreferencesMessage `editor\src\messages\preferences\preferences_message.rs` -│ │ ├── Load -│ │ │ └── preferences: String -│ │ ├── ResetToDefaults -│ │ ├── UseVello -│ │ │ └── use_vello: bool -│ │ ├── SelectionMode -│ │ │ └── selection_mode: SelectionMode -│ │ ├── VectorMeshes -│ │ │ └── enabled: bool -│ │ ├── ModifyLayout -│ │ │ └── zoom_with_scroll: bool -│ │ ├── GraphWireStyle -│ │ │ └── style: GraphWireStyle -│ │ └── ViewportZoomWheelRate -│ │ └── rate: f64 -│ └── PreferencesMessageHandler `editor\src\messages\preferences\preferences_message_handler.rs` -│ ├── selection_mode: SelectionMode -│ ├── zoom_with_scroll: bool -│ ├── use_vello: bool -│ ├── vector_meshes: bool -│ ├── graph_wire_style: GraphWireStyle -│ └── viewport_zoom_wheel_rate: f64 -├── Tool -│ ├── ToolMessage `editor\src\messages\tool\tool_message.rs` -│ │ ├── TransformLayer -│ │ │ ├── TransformLayerMessage `editor\src\messages\tool\transform_layer\transform_layer_message.rs` -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── ApplyTransformOperation -│ │ │ │ │ └── final_transform: bool -│ │ │ │ ├── BeginTransformOperation -│ │ │ │ │ └── operation: TransformType -│ │ │ │ ├── BeginGrab -│ │ │ │ ├── BeginRotate -│ │ │ │ ├── BeginScale -│ │ │ │ ├── BeginGRS -│ │ │ │ │ └── operation: TransformType -│ │ │ │ ├── BeginGrabPen -│ │ │ │ │ ├── last_point: DVec2 -│ │ │ │ │ └── handle: DVec2 -│ │ │ │ ├── BeginRotatePen -│ │ │ │ │ ├── last_point: DVec2 -│ │ │ │ │ └── handle: DVec2 -│ │ │ │ ├── BeginScalePen -│ │ │ │ │ ├── last_point: DVec2 -│ │ │ │ │ └── handle: DVec2 -│ │ │ │ ├── CancelTransformOperation -│ │ │ │ ├── ConstrainX -│ │ │ │ ├── ConstrainY -│ │ │ │ ├── PointerMove -│ │ │ │ │ ├── slow_key: Key -│ │ │ │ │ └── increments_key: Key -│ │ │ │ ├── SelectionChanged -│ │ │ │ ├── TypeBackspace -│ │ │ │ ├── TypeDecimalPoint -│ │ │ │ ├── TypeDigit -│ │ │ │ │ └── digit: u8 -│ │ │ │ ├── TypeNegate -│ │ │ │ └── SetPivotGizmo -│ │ │ │ └── pivot_gizmo: PivotGizmo -│ │ │ ├── TransformLayerMessageHandler `editor\src\messages\tool\transform_layer\transform_layer_message_handler.rs` -│ │ │ │ ├── transform_operation: TransformOperation -│ │ │ │ ├── slow: bool -│ │ │ │ ├── increments: bool -│ │ │ │ ├── local: bool -│ │ │ │ ├── layer_bounding_box: Quad -│ │ │ │ ├── typing: Typing -│ │ │ │ ├── mouse_position: ViewportPosition -│ │ │ │ ├── start_mouse: ViewportPosition -│ │ │ │ ├── original_transforms: OriginalTransforms -│ │ │ │ ├── pivot_gizmo: PivotGizmo -│ │ │ │ ├── pivot: ViewportPosition -│ │ │ │ ├── path_bounds: Option<[DVec2; 2]> -│ │ │ │ ├── local_pivot: DocumentPosition -│ │ │ │ ├── local_mouse_start: DocumentPosition -│ │ │ │ ├── grab_target: DocumentPosition -│ │ │ │ ├── ptz: PTZ -│ │ │ │ ├── initial_transform: DAffine2 -│ │ │ │ ├── operation_count: usize -│ │ │ │ ├── handle: DVec2 -│ │ │ │ ├── last_point: DVec2 -│ │ │ │ ├── grs_pen_handle: bool -│ │ │ │ ├── ghost_outline: Vec<(Vec, DAffine2)> -│ │ │ │ └── was_grabbing: bool -│ │ │ └── TransformLayerMessageContext `editor\src\messages\tool\transform_layer\transform_layer_message_handler.rs` -│ │ │ ├── document: &'a DocumentMessageHandler -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── tool_data: &'a ToolData -│ │ │ └── shape_editor: &'a mut ShapeState -│ │ ├── Select -│ │ │ ├── SelectToolMessage `editor\src\messages\tool\tool_messages\select_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── DragStart -│ │ │ │ │ ├── extend_selection: Key -│ │ │ │ │ ├── remove_from_selection: Key -│ │ │ │ │ ├── select_deepest: Key -│ │ │ │ │ ├── lasso_select: Key -│ │ │ │ │ └── skew: Key -│ │ │ │ ├── DragStop -│ │ │ │ │ └── remove_from_selection: Key -│ │ │ │ ├── EditLayer -│ │ │ │ ├── EditLayerExec -│ │ │ │ ├── Enter -│ │ │ │ ├── PointerMove -│ │ │ │ │ └── modifier_keys: SelectToolPointerKeys -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ └── modifier_keys: SelectToolPointerKeys -│ │ │ │ ├── SelectOptions -│ │ │ │ │ └── options: SelectOptionsUpdate -│ │ │ │ ├── SetPivot -│ │ │ │ │ └── position: ReferencePoint -│ │ │ │ ├── SyncHistory -│ │ │ │ ├── ShiftSelectedNodes -│ │ │ │ │ └── offset: DVec2 -│ │ │ │ └── PivotShift -│ │ │ │ ├── offset: Option -│ │ │ │ └── flush: bool -│ │ │ ├── SelectTool `editor\src\messages\tool\tool_messages\select_tool.rs` -│ │ │ │ ├── fsm_state: SelectToolFsmState -│ │ │ │ └── tool_data: SelectToolData -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Artboard -│ │ │ ├── ArtboardToolMessage `editor\src\messages\tool\tool_messages\artboard_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── UpdateSelectedArtboard -│ │ │ │ ├── DeleteSelected -│ │ │ │ ├── NudgeSelected -│ │ │ │ │ ├── delta_x: f64 -│ │ │ │ │ ├── delta_y: f64 -│ │ │ │ │ ├── resize: Key -│ │ │ │ │ └── resize_opposite_corner: Key -│ │ │ │ ├── PointerDown -│ │ │ │ ├── PointerMove -│ │ │ │ │ ├── constrain_axis_or_aspect: Key -│ │ │ │ │ └── center: Key -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ ├── constrain_axis_or_aspect: Key -│ │ │ │ │ └── center: Key -│ │ │ │ └── PointerUp -│ │ │ ├── ArtboardTool `editor\src\messages\tool\tool_messages\artboard_tool.rs` -│ │ │ │ ├── fsm_state: ArtboardToolFsmState -│ │ │ │ └── data: ArtboardToolData -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Navigate -│ │ │ ├── NavigateToolMessage `editor\src\messages\tool\tool_messages\navigate_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── PointerUp -│ │ │ │ │ └── zoom_in: bool -│ │ │ │ ├── PointerMove -│ │ │ │ │ └── snap: Key -│ │ │ │ ├── TiltCanvasBegin -│ │ │ │ ├── ZoomCanvasBegin -│ │ │ │ └── End -│ │ │ ├── NavigateTool `editor\src\messages\tool\tool_messages\navigate_tool.rs` -│ │ │ │ ├── fsm_state: NavigateToolFsmState -│ │ │ │ └── tool_data: NavigateToolData -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Eyedropper -│ │ │ ├── EyedropperToolMessage `editor\src\messages\tool\tool_messages\eyedropper_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── SamplePrimaryColorBegin -│ │ │ │ ├── SamplePrimaryColorEnd -│ │ │ │ ├── PointerMove -│ │ │ │ ├── SampleSecondaryColorBegin -│ │ │ │ └── SampleSecondaryColorEnd -│ │ │ ├── EyedropperTool `editor\src\messages\tool\tool_messages\eyedropper_tool.rs` -│ │ │ │ ├── fsm_state: EyedropperToolFsmState -│ │ │ │ └── data: EyedropperToolData -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Fill -│ │ │ ├── FillToolMessage `editor\src\messages\tool\tool_messages\fill_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── PointerMove -│ │ │ │ ├── PointerUp -│ │ │ │ ├── FillPrimaryColor -│ │ │ │ └── FillSecondaryColor -│ │ │ ├── FillTool `editor\src\messages\tool\tool_messages\fill_tool.rs` -│ │ │ │ └── fsm_state: FillToolFsmState -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Gradient -│ │ │ ├── GradientToolMessage `editor\src\messages\tool\tool_messages\gradient_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── DeleteStop -│ │ │ │ ├── InsertStop -│ │ │ │ ├── PointerDown -│ │ │ │ ├── PointerMove -│ │ │ │ │ └── constrain_axis: Key -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ └── constrain_axis: Key -│ │ │ │ ├── PointerUp -│ │ │ │ └── UpdateOptions -│ │ │ │ └── options: GradientOptionsUpdate -│ │ │ ├── GradientTool `editor\src\messages\tool\tool_messages\gradient_tool.rs` -│ │ │ │ ├── fsm_state: GradientToolFsmState -│ │ │ │ ├── data: GradientToolData -│ │ │ │ └── options: GradientOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Path -│ │ │ ├── PathToolMessage `editor\src\messages\tool\tool_messages\path_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── SelectionChanged -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── BreakPath -│ │ │ │ ├── DeselectAllPoints -│ │ │ │ ├── Delete -│ │ │ │ ├── DeleteAndBreakPath -│ │ │ │ ├── DragStop -│ │ │ │ │ ├── extend_selection: Key -│ │ │ │ │ └── shrink_selection: Key -│ │ │ │ ├── Enter -│ │ │ │ │ ├── extend_selection: Key -│ │ │ │ │ └── shrink_selection: Key -│ │ │ │ ├── Escape -│ │ │ │ ├── ClosePath -│ │ │ │ ├── DoubleClick -│ │ │ │ │ ├── extend_selection: Key -│ │ │ │ │ └── shrink_selection: Key -│ │ │ │ ├── GRS -│ │ │ │ │ └── key: Key -│ │ │ │ ├── ManipulatorMakeHandlesFree -│ │ │ │ ├── ManipulatorMakeHandlesColinear -│ │ │ │ ├── MouseDown -│ │ │ │ │ ├── extend_selection: Key -│ │ │ │ │ ├── lasso_select: Key -│ │ │ │ │ ├── handle_drag_from_anchor: Key -│ │ │ │ │ ├── drag_restore_handle: Key -│ │ │ │ │ └── segment_editing_modifier: Key -│ │ │ │ ├── NudgeSelectedPoints -│ │ │ │ │ ├── delta_x: f64 -│ │ │ │ │ └── delta_y: f64 -│ │ │ │ ├── PointerMove -│ │ │ │ │ ├── equidistant: Key -│ │ │ │ │ ├── toggle_colinear: Key -│ │ │ │ │ ├── move_anchor_with_handles: Key -│ │ │ │ │ ├── snap_angle: Key -│ │ │ │ │ ├── lock_angle: Key -│ │ │ │ │ ├── delete_segment: Key -│ │ │ │ │ ├── break_colinear_molding: Key -│ │ │ │ │ └── segment_editing_modifier: Key -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ ├── equidistant: Key -│ │ │ │ │ ├── toggle_colinear: Key -│ │ │ │ │ ├── move_anchor_with_handles: Key -│ │ │ │ │ ├── snap_angle: Key -│ │ │ │ │ ├── lock_angle: Key -│ │ │ │ │ ├── delete_segment: Key -│ │ │ │ │ ├── break_colinear_molding: Key -│ │ │ │ │ └── segment_editing_modifier: Key -│ │ │ │ ├── RightClick -│ │ │ │ ├── SelectAllAnchors -│ │ │ │ ├── SelectedPointUpdated -│ │ │ │ ├── SelectedPointXChanged -│ │ │ │ │ └── new_x: f64 -│ │ │ │ ├── SelectedPointYChanged -│ │ │ │ │ └── new_y: f64 -│ │ │ │ ├── SetPivot -│ │ │ │ │ └── position: ReferencePoint -│ │ │ │ ├── SwapSelectedHandles -│ │ │ │ ├── UpdateOptions -│ │ │ │ │ └── options: PathOptionsUpdate -│ │ │ │ ├── UpdateSelectedPointsStatus -│ │ │ │ │ └── overlay_context: OverlayContext -│ │ │ │ ├── StartSlidingPoint -│ │ │ │ ├── Copy -│ │ │ │ │ └── clipboard: Clipboard -│ │ │ │ ├── Cut -│ │ │ │ │ └── clipboard: Clipboard -│ │ │ │ ├── Paste -│ │ │ │ │ └── data: String -│ │ │ │ ├── DeleteSelected -│ │ │ │ ├── Duplicate -│ │ │ │ ├── TogglePointEditing -│ │ │ │ └── ToggleSegmentEditing -│ │ │ ├── PathTool `editor\src\messages\tool\tool_messages\path_tool.rs` -│ │ │ │ ├── fsm_state: PathToolFsmState -│ │ │ │ ├── tool_data: PathToolData -│ │ │ │ └── options: PathToolOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Pen -│ │ │ ├── PenToolMessage `editor\src\messages\tool\tool_messages\pen_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── SelectionChanged -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── AddPointLayerPosition -│ │ │ │ │ ├── layer: LayerNodeIdentifier -│ │ │ │ │ └── viewport: DVec2 -│ │ │ │ ├── Confirm -│ │ │ │ ├── DragStart -│ │ │ │ │ └── append_to_selected: Key -│ │ │ │ ├── DragStop -│ │ │ │ ├── PointerMove -│ │ │ │ │ ├── snap_angle: Key -│ │ │ │ │ ├── break_handle: Key -│ │ │ │ │ ├── lock_angle: Key -│ │ │ │ │ ├── colinear: Key -│ │ │ │ │ └── move_anchor_with_handles: Key -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ ├── snap_angle: Key -│ │ │ │ │ ├── break_handle: Key -│ │ │ │ │ ├── lock_angle: Key -│ │ │ │ │ ├── colinear: Key -│ │ │ │ │ └── move_anchor_with_handles: Key -│ │ │ │ ├── Redo -│ │ │ │ ├── Undo -│ │ │ │ ├── UpdateOptions -│ │ │ │ │ └── options: PenOptionsUpdate -│ │ │ │ ├── RecalculateLatestPointsPosition -│ │ │ │ ├── RemovePreviousHandle -│ │ │ │ ├── GRS -│ │ │ │ │ ├── grab: Key -│ │ │ │ │ ├── rotate: Key -│ │ │ │ │ └── scale: Key -│ │ │ │ ├── FinalPosition -│ │ │ │ │ └── final_position: DVec2 -│ │ │ │ └── SwapHandles -│ │ │ ├── PenTool `editor\src\messages\tool\tool_messages\pen_tool.rs` -│ │ │ │ ├── fsm_state: PenToolFsmState -│ │ │ │ ├── tool_data: PenToolData -│ │ │ │ └── options: PenOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Freehand -│ │ │ ├── FreehandToolMessage `editor\src\messages\tool\tool_messages\freehand_tool.rs` -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── DragStart -│ │ │ │ │ └── append_to_selected: Key -│ │ │ │ ├── DragStop -│ │ │ │ ├── PointerMove -│ │ │ │ └── UpdateOptions -│ │ │ │ └── options: FreehandOptionsUpdate -│ │ │ ├── FreehandTool `editor\src\messages\tool\tool_messages\freehand_tool.rs` -│ │ │ │ ├── fsm_state: FreehandToolFsmState -│ │ │ │ ├── data: FreehandToolData -│ │ │ │ └── options: FreehandOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Spline -│ │ │ ├── SplineToolMessage `editor\src\messages\tool\tool_messages\spline_tool.rs` -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── CanvasTransformed -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── Confirm -│ │ │ │ ├── DragStart -│ │ │ │ │ └── append_to_selected: Key -│ │ │ │ ├── DragStop -│ │ │ │ ├── MergeEndpoints -│ │ │ │ ├── PointerMove -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ ├── Undo -│ │ │ │ └── UpdateOptions -│ │ │ │ └── options: SplineOptionsUpdate -│ │ │ ├── SplineTool `editor\src\messages\tool\tool_messages\spline_tool.rs` -│ │ │ │ ├── fsm_state: SplineToolFsmState -│ │ │ │ ├── tool_data: SplineToolData -│ │ │ │ └── options: SplineOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Shape -│ │ │ ├── ShapeToolMessage `editor\src\messages\tool\tool_messages\shape_tool.rs` -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── DragStart -│ │ │ │ ├── DragStop -│ │ │ │ ├── HideShapeTypeWidget -│ │ │ │ │ └── hide: bool -│ │ │ │ ├── PointerMove -│ │ │ │ │ └── modifier: ShapeToolModifierKey -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ └── modifier: ShapeToolModifierKey -│ │ │ │ ├── UpdateOptions -│ │ │ │ │ └── options: ShapeOptionsUpdate -│ │ │ │ ├── SetShape -│ │ │ │ │ └── shape: ShapeType -│ │ │ │ ├── IncreaseSides -│ │ │ │ ├── DecreaseSides -│ │ │ │ └── NudgeSelectedLayers -│ │ │ │ ├── delta_x: f64 -│ │ │ │ ├── delta_y: f64 -│ │ │ │ ├── resize: Key -│ │ │ │ └── resize_opposite_corner: Key -│ │ │ ├── ShapeTool `editor\src\messages\tool\tool_messages\shape_tool.rs` -│ │ │ │ ├── fsm_state: ShapeToolFsmState -│ │ │ │ ├── tool_data: ShapeToolData -│ │ │ │ └── options: ShapeToolOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Text -│ │ │ ├── TextToolMessage `editor\src\messages\tool\tool_messages\text_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── Overlays -│ │ │ │ │ └── context: OverlayContext -│ │ │ │ ├── DragStart -│ │ │ │ ├── DragStop -│ │ │ │ ├── EditSelected -│ │ │ │ ├── Interact -│ │ │ │ ├── PointerMove -│ │ │ │ │ ├── center: Key -│ │ │ │ │ └── lock_ratio: Key -│ │ │ │ ├── PointerOutsideViewport -│ │ │ │ │ ├── center: Key -│ │ │ │ │ └── lock_ratio: Key -│ │ │ │ ├── TextChange -│ │ │ │ │ ├── new_text: String -│ │ │ │ │ └── is_left_or_right_click: bool -│ │ │ │ ├── UpdateBounds -│ │ │ │ │ └── new_text: String -│ │ │ │ └── UpdateOptions -│ │ │ │ └── options: TextOptionsUpdate -│ │ │ ├── TextTool `editor\src\messages\tool\tool_messages\text_tool.rs` -│ │ │ │ ├── fsm_state: TextToolFsmState -│ │ │ │ ├── tool_data: TextToolData -│ │ │ │ └── options: TextOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── Brush -│ │ │ ├── BrushToolMessage `editor\src\messages\tool\tool_messages\brush_tool.rs` -│ │ │ │ ├── Abort -│ │ │ │ ├── WorkingColorChanged -│ │ │ │ ├── DragStart -│ │ │ │ ├── DragStop -│ │ │ │ ├── PointerMove -│ │ │ │ └── UpdateOptions -│ │ │ │ └── options: BrushToolMessageOptionsUpdate -│ │ │ ├── BrushTool `editor\src\messages\tool\tool_messages\brush_tool.rs` -│ │ │ │ ├── fsm_state: BrushToolFsmState -│ │ │ │ ├── data: BrushToolData -│ │ │ │ └── options: BrushOptions -│ │ │ └── &mut ToolActionMessageContext<'a> `editor\src\messages\tool\utility_types.rs` -│ │ │ ├── document: &'a mut DocumentMessageHandler -│ │ │ ├── document_id: DocumentId -│ │ │ ├── global_tool_data: &'a DocumentToolData -│ │ │ ├── input: &'a InputPreprocessorMessageHandler -│ │ │ ├── font_cache: &'a FontCache -│ │ │ ├── shape_editor: &'a mut ShapeState -│ │ │ ├── node_graph: &'a NodeGraphExecutor -│ │ │ └── preferences: &'a PreferencesMessageHandler -│ │ ├── ActivateToolSelect -│ │ ├── ActivateToolArtboard -│ │ ├── ActivateToolNavigate -│ │ ├── ActivateToolEyedropper -│ │ ├── ActivateToolFill -│ │ ├── ActivateToolGradient -│ │ ├── ActivateToolPath -│ │ ├── ActivateToolPen -│ │ ├── ActivateToolFreehand -│ │ ├── ActivateToolSpline -│ │ ├── ActivateToolShapeLine -│ │ ├── ActivateToolShapeRectangle -│ │ ├── ActivateToolShapeEllipse -│ │ ├── ActivateToolShape -│ │ ├── ActivateToolText -│ │ ├── ActivateToolBrush -│ │ ├── ActivateTool -│ │ │ └── tool_type: ToolType -│ │ ├── DeactivateTools -│ │ ├── InitTools -│ │ ├── PreUndo -│ │ ├── Redo -│ │ ├── RefreshToolOptions -│ │ ├── ResetColors -│ │ ├── SelectWorkingColor -│ │ │ ├── color: Color -│ │ │ └── primary: bool -│ │ ├── SelectRandomWorkingColor -│ │ │ └── primary: bool -│ │ ├── ToggleSelectVsPath -│ │ ├── SwapColors -│ │ ├── Undo -│ │ ├── UpdateCursor -│ │ ├── UpdateHints -│ │ └── UpdateSelectionMode -│ │ └── selection_mode: SelectionMode -│ ├── ToolMessageHandler `editor\src\messages\tool\tool_message_handler.rs` -│ │ ├── tool_state: ToolFsmState -│ │ ├── transform_layer_handler: TransformLayerMessageHandler -│ │ ├── shape_editor: ShapeState -│ │ └── tool_is_active: bool -│ └── ToolMessageContext `editor\src\messages\tool\tool_message_handler.rs` -│ ├── document_id: DocumentId -│ ├── document: &'a mut DocumentMessageHandler -│ ├── input: &'a InputPreprocessorMessageHandler -│ ├── persistent_data: &'a PersistentData -│ ├── node_graph: &'a NodeGraphExecutor -│ └── preferences: &'a PreferencesMessageHandler -├── Batched -│ └── messages: Box<[Message]> -└── NoOp