[
  {
    "id": "class:15qe4r2:readerlayout",
    "kind": "class",
    "fileId": "file:mm1vnb:readerlayout-razor",
    "path": "NexusReader.UI.Shared/Layout/ReaderLayout.razor",
    "canonicalName": "ReaderLayout",
    "shortLabel": "ReaderLayout",
    "longLabel": "ReaderLayout",
    "purpose": "Razor layout component that renders the reader UI (main content, AI sidebar, footer) and manages runtime concerns: device/platform detection, event subscriptions for UI updates, and JS interop to initialize a layout resizer."
  },
  {
    "id": "method:11o3hgs:oninitialized",
    "kind": "method",
    "fileId": "file:mm1vnb:readerlayout-razor",
    "path": "NexusReader.UI.Shared/Layout/ReaderLayout.razor",
    "line": 73,
    "canonicalName": "OnInitialized",
    "shortLabel": "OnInitialized()",
    "longLabel": "OnInitialized() -> void",
    "signature": "() -> void",
    "purpose": "Component initialization: subscribes to FocusMode and Quiz update events and determines device type to set platform CSS class."
  },
  {
    "id": "method:1r68c5i:onafterrenderasync",
    "kind": "method",
    "fileId": "file:mm1vnb:readerlayout-razor",
    "path": "NexusReader.UI.Shared/Layout/ReaderLayout.razor",
    "line": 93,
    "canonicalName": "OnAfterRenderAsync",
    "shortLabel": "OnAfterRenderAsync()",
    "longLabel": "OnAfterRenderAsync(firstRender: bool) -> Task",
    "signature": "(firstRender: bool) -> Task",
    "purpose": "After-render lifecycle: on first render, attempts to import a JS module and initialize a resizer; logs on failure."
  },
  {
    "id": "method:1m8qyhe:handleupdate",
    "kind": "method",
    "fileId": "file:mm1vnb:readerlayout-razor",
    "path": "NexusReader.UI.Shared/Layout/ReaderLayout.razor",
    "line": 109,
    "canonicalName": "HandleUpdate",
    "shortLabel": "HandleUpdate()",
    "longLabel": "HandleUpdate() -> Task",
    "signature": "() -> Task",
    "purpose": "Invokes a UI refresh on the component's synchronization context (wraps StateHasChanged in InvokeAsync)."
  },
  {
    "id": "method:zb4rdj:dispose",
    "kind": "method",
    "fileId": "file:mm1vnb:readerlayout-razor",
    "path": "NexusReader.UI.Shared/Layout/ReaderLayout.razor",
    "line": 111,
    "canonicalName": "Dispose",
    "shortLabel": "Dispose()",
    "longLabel": "Dispose() -> void",
    "signature": "() -> void",
    "purpose": "Component disposal: unsubscribes from FocusMode and Quiz update events to avoid memory leaks."
  }
]