package Ġcom . cop per leaf . ball ast . debugger . ui . widgets Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . ListItem Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġcom . cop per leaf . ball ast . debugger . models . Ball ast Event State Ċ import Ġcom . cop per leaf . ball ast . debugger . models . Ball ast ViewModel State Ċ import Ġcom . cop per leaf . ball ast . debugger . ui . debugger . Debugger Contract Ċ import Ġcom . cop per leaf . ball ast . debugger . utils . minus Ċ import Ġcom . cop per leaf . ball ast . debugger . utils . remove Fraction Ċ import Ġorg . jetbrains . compose . split pane . remember Split Pane State Ċ import Ġkotlin . time . Duration Ċ import Ġkotlin . time . Duration Unit Ċ Ċ @ Composable Ċ fun ĠEvent List ( ĊĠĠĠ Ġui State : ĠDebugger Contract . State , ĊĠĠĠ ĠviewModel State : ĠBall ast ViewModel State , ĊĠĠĠ Ġpost Input : Ġ( Debugger Contract . Inputs ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠSplit Pane ( ĊĠĠĠĠĠĠĠ Ġsplit Pane State Ġ= Ġui State . events Pane Percentage , ĊĠĠĠĠĠĠĠ Ġnavigation Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( viewModel State . events ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Summary ( ui State , Ġit , Ġpost Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ui State . focused ViewModel Event Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Details ( ui State , Ġui State . focused ViewModel Event , Ġpost Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ @ Composable Ċ fun ĠEvent Summary ( ĊĠĠĠ Ġui State : ĠDebugger Contract . State , ĊĠĠĠ Ġevent State : ĠBall ast Event State , ĊĠĠĠ Ġpost Input : Ġ( Debugger Contract . Inputs ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtime Since Last Seen : ĠDuration Ġ= Ġ( Local Timer . current Ġ- Ġevent State . first Seen ). remove Fraction ( Duration Unit . SECONDS ) ĊĊĠĠĠ ĠListItem ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Hover State Ġ{ ĠModifier . highlight () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ui State . focused Debugger Event Uuid Ġ== Ġevent State . uuid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . background ( Material Theme . colors . on Surface . copy ( alpha Ġ= Ġ 0 . 1 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebugger Contract . Inputs . Focus Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Id Ġ= Ġevent State . connection Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Name Ġ= Ġevent State . viewModel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Uuid Ġ= Ġevent State . uuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ{ ĠText ( event State . type ) Ġ}, ĊĠĠĠĠĠĠĠ Ġover line Text Ġ= Ġ{ ĠText ( event State . status . toString ()) Ġ}, ĊĠĠĠĠĠĠĠ Ġsecondary Text Ġ= Ġ{ ĠText (" Sent Ġ$ time Since Last Seen Ġago ") Ġ}, ĊĠĠĠĠĠĠĠ Ġtrailing Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event State . status Ġ== ĠBall ast Event State . Status . Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ @ Composable Ċ fun ĠEvent Details ( ĊĠĠĠ Ġui State : ĠDebugger Contract . State , ĊĠĠĠ Ġevent State : ĠBall ast Event State , ĊĠĠĠ Ġpost Input : Ġ( Debugger Contract . Inputs ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġerror Status Ġ= Ġevent State . status Ġas ? ĠBall ast Event State . Status . Error ĊĊĠĠĠ Ġif ( error Status Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt ellij Editor ( event State . toString Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠV Split Pane ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremember Split Pane State ( initial Position Percentage Ġ= Ġ 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Content Ġ= Ġ{ ĠInt ellij Editor ( event State . toString Value , ĠModifier . fill MaxSize ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Content Ġ= Ġ{ ĠInt ellij Editor ( error Status . stack trace , ĠModifier . fill MaxSize ()) Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ