# IReaderInteractionService - File ID: file:1szg1zb:ireaderinteractionservice-cs - Path: NexusReader.UI.Shared/Services/IReaderInteractionService.cs - Role: service - Layer: frontend ## Purpose Defines an interface for UI-level reader interactions (node/block selection, scrolling, highlighting, and text selection) and a small DTO for selection coordinates used across UI clients. ## Key Details This file is an interface used by UI components to publish and consume reader-related events; implementations will orchestrate raising events and forwarding requests between UI parts. ## Symbols - IReaderInteractionService: Defines an interface for UI-level reader interactions (node/block selection, scrolling, highlighting, and text selection) and a small DTO for selection coordinates used across UI clients. - OnNodeSelected(): Event fired when a node is selected; subscribers receive the selected nodeId. - OnScrollToBlockRequested(): Event fired to request scrolling to a specific blockId. - OnHighlightBlockRequested(): Event fired to request highlighting of a specific blockId. - OnTextSelected(): Event fired when text is selected; subscribers receive the text, blockId, and coordinates. - NotifyNodeSelected(): Declares an async method to notify that a node was selected (intended to trigger or forward OnNodeSelected). - RequestScrollToBlock(): Declares an async request to scroll the UI to a block (intended to trigger OnScrollToBlockRequested). - RequestHighlightBlock(): Declares an async request to highlight a block (intended to trigger OnHighlightBlockRequested). - NotifyTextSelected(): Declares an async method to notify that text was selected, providing text, block context, and coordinates. - SelectionCoordinates: Represents the coordinates (top, left) and width of a text selection in UI units. ## Dependencies - No resolved dependencies. ## Calls - No resolved calls. ## Coverage - Symbols: 10 - Executable symbols: 8 - Executable symbols with control flow: 8 - Grounded edges: 10 - Unresolved references: 0 - Control-flow fragments: 8 - Unresolved jumps: 0 - Unsupported constructs: 0 - Control-flow coverage: 100% - Required diagrams: 2 - Generated diagrams: 2 ## Control Flow Fragments - OnNodeSelected: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - OnScrollToBlockRequested: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - OnHighlightBlockRequested: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - OnTextSelected: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - NotifyNodeSelected: 4 nodes, 3 edges, 0 jumps, 0 unsupported constructs - RequestScrollToBlock: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - RequestHighlightBlock: 3 nodes, 2 edges, 0 jumps, 0 unsupported constructs - NotifyTextSelected: 4 nodes, 3 edges, 0 jumps, 0 unsupported constructs ## Diagrams ### IReaderInteractionService Neighborhood ```mermaid flowchart LR class_w9vxji_ireaderinteractionservice("IReaderInteractionService") file_1szg1zb_ireaderinteractionservice_cs("IReaderInteractionService") method_15b21oe_onhighlightblockrequested[["OnHighlightBlockRequested()"]] method_18zc3my_ontextselected[["OnTextSelected()"]] method_1lb2q26_requesthighlightblock[["RequestHighlightBlock()"]] method_1r1tcl2_notifynodeselected[["NotifyNodeSelected()"]] method_ecn87d_onscrolltoblockrequested[["OnScrollToBlockRequested()"]] method_iyd7fv_requestscrolltoblock[["RequestScrollToBlock()"]] method_mhcg2e_onnodeselected[["OnNodeSelected()"]] method_p2mw02_notifytextselected[["NotifyTextSelected()"]] type_14glqwn_selectioncoordinates[/"SelectionCoordinates"/] ``` ### IReaderInteractionService Execution Overview ```mermaid flowchart TD class_w9vxji_ireaderinteractionservice("IReaderInteractionService") method_15b21oe_onhighlightblockrequested[["OnHighlightBlockRequested()"]] method_18zc3my_ontextselected[["OnTextSelected()"]] method_1lb2q26_requesthighlightblock[["RequestHighlightBlock()"]] method_1r1tcl2_notifynodeselected[["NotifyNodeSelected()"]] method_ecn87d_onscrolltoblockrequested[["OnScrollToBlockRequested()"]] method_iyd7fv_requestscrolltoblock[["RequestScrollToBlock()"]] method_mhcg2e_onnodeselected[["OnNodeSelected()"]] method_p2mw02_notifytextselected[["NotifyTextSelected()"]] class_w9vxji_ireaderinteractionservice -->|contains| method_15b21oe_onhighlightblockrequested class_w9vxji_ireaderinteractionservice -->|contains| method_18zc3my_ontextselected class_w9vxji_ireaderinteractionservice -->|contains| method_1lb2q26_requesthighlightblock class_w9vxji_ireaderinteractionservice -->|contains| method_1r1tcl2_notifynodeselected class_w9vxji_ireaderinteractionservice -->|contains| method_ecn87d_onscrolltoblockrequested class_w9vxji_ireaderinteractionservice -->|contains| method_iyd7fv_requestscrolltoblock class_w9vxji_ireaderinteractionservice -->|contains| method_mhcg2e_onnodeselected class_w9vxji_ireaderinteractionservice -->|contains| method_p2mw02_notifytextselected ``` ## Diagram Validation - Status: pass