[
  {
    "id": "class:jfh85m:home",
    "kind": "class",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "canonicalName": "Home",
    "shortLabel": "Home",
    "longLabel": "Home",
    "purpose": "Razor UI page for the Nexus E-Reader reader experience: mounts the ReaderCanvas, handles navigation/book selection from route/query or user profile, wires UI events (quiz, focus mode), initializes JS focus interop, and cleans up resources on disposal."
  },
  {
    "id": "method:1yypduz:oninitialized",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 30,
    "canonicalName": "OnInitialized",
    "shortLabel": "OnInitialized()",
    "longLabel": "OnInitialized() -> void",
    "signature": "() -> void",
    "purpose": "Subscribe to UI-level events for quiz requests and focus-mode changes when the component is initialized."
  },
  {
    "id": "method:p5ejmn:onparameterssetasync",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 36,
    "canonicalName": "OnParametersSetAsync",
    "shortLabel": "OnParametersSetAsync()",
    "longLabel": "OnParametersSetAsync() -> Task",
    "signature": "() -> Task",
    "purpose": "React to route/query changes: parse chapter query, determine BookId from route or fallback to last-read book from profile, and instruct navigation service to load the correct book/chapter."
  },
  {
    "id": "method:1r63qu7:onafterrenderasync",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 63,
    "canonicalName": "OnAfterRenderAsync",
    "shortLabel": "OnAfterRenderAsync()",
    "longLabel": "OnAfterRenderAsync(firstRender: bool) -> Task",
    "signature": "(firstRender: bool) -> Task",
    "purpose": "On first render initialize focus-mode service and attempt to attach a JS keyboard listener, updating state afterwards."
  },
  {
    "id": "method:whfss9:onfocuskeypressed",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 77,
    "canonicalName": "OnFocusKeypressed",
    "shortLabel": "OnFocusKeypressed()",
    "longLabel": "OnFocusKeypressed() -> Task",
    "signature": "() -> Task",
    "purpose": "JS-invokable handler called when the focus-mode key is pressed: toggles focus mode and refreshes UI."
  },
  {
    "id": "method:6vyv4w:handlenodeselected",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 84,
    "canonicalName": "HandleNodeSelected",
    "shortLabel": "HandleNodeSelected()",
    "longLabel": "HandleNodeSelected(nodeId: string) -> Task",
    "signature": "(nodeId: string) -> Task",
    "purpose": "Scroll the embedded ReaderCanvas to a particular node when a node selection event occurs."
  },
  {
    "id": "method:1ib6h4r:handlequizrequestedasync",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 92,
    "canonicalName": "HandleQuizRequestedAsync",
    "shortLabel": "HandleQuizRequestedAsync()",
    "longLabel": "HandleQuizRequestedAsync(blockId: string) -> Task",
    "signature": "(blockId: string) -> Task",
    "purpose": "Receive quiz request events, set active quiz block id and request UI update."
  },
  {
    "id": "method:1l4808t:handleupdate",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 98,
    "canonicalName": "HandleUpdate",
    "shortLabel": "HandleUpdate()",
    "longLabel": "HandleUpdate() -> Task",
    "signature": "() -> Task",
    "purpose": "Request a UI update from other subscribers (used as an event handler)."
  },
  {
    "id": "method:99k8q7:disposeasync",
    "kind": "method",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 100,
    "canonicalName": "DisposeAsync",
    "shortLabel": "DisposeAsync()",
    "longLabel": "DisposeAsync() -> ValueTask",
    "signature": "() -> ValueTask",
    "purpose": "Unsubscribe event handlers, detach JS keyboard listener if present, dispose JS interop objects and DotNetObjectReference when the component is disposed."
  },
  {
    "id": "type:1t001js:bookid",
    "kind": "type",
    "fileId": "file:h6mj95:home-razor",
    "path": "NexusReader.UI.Shared/Pages/Home.razor",
    "line": 21,
    "canonicalName": "BookId",
    "shortLabel": "BookId",
    "longLabel": "BookId (type-alias)",
    "purpose": "Component Parameter holding optional route BookId (Guid?)."
  }
]