package Ġdev . en ro . core . compose Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . runtime . save able . remember Save able State Holder Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . platform . Local Lifecycle Owner Ċ import Ġandroidx . compose . ui . platform . Local Saved State Registry Owner Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle .* Ċ import Ġandroidx . lifecycle . view model . compose . Local ViewModel Store Owner Ċ import Ġandroidx . saved state . Saved State Registry Ċ import Ġandroidx . saved state . Saved State Registry Controller Ċ import Ġandroidx . saved state . Saved State Registry Owner Ċ import Ġdagger . h ilt . android . internal . lifecycle . H ilt ViewModel Factory Ċ import Ġdagger . h ilt . internal . Generated Component Manager Holder Ċ import Ġdev . en ro . core .* Ċ import Ġdev . en ro . core . internal . handle . get Navigation Handle ViewModel Ċ import Ġdev . en ro . view model . En ro ViewModel Factory ĊĊ Ċ internal Ġclass ĠComp osable Destination Context Reference ( ĊĠĠĠ Ġval Ġinstruction : ĠNavigation Instruction . Open , ĊĠĠĠ Ġval Ġdestination : ĠComp osable Destination , ĊĠĠĠ Ġinternal Ġvar Ġparent Container : ĠEn ro Container Controller ? Ċ ) Ġ: ĠViewModel (), ĊĠĠĠ ĠLifecycle Owner , ĊĠĠĠ ĠViewModel Store Owner , ĊĠĠĠ ĠHas Default ViewModel Provider Factory , ĊĠĠĠ ĠSaved State Registry Owner Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Controller Ġget () Ġ= Ġrequire Parent Container (). navigation Context . controller ĊĠĠĠ Ġprivate Ġval Ġparent ViewModel Store Owner Ġget () Ġ= Ġrequire Parent Container (). navigation Context . viewModel Store Owner ĊĠĠĠ Ġprivate Ġval Ġparent Saved State Registry Ġget () Ġ= Ġrequire Parent Container (). navigation Context . saved State Registry Owner . saved State Registry ĊĠĠĠ Ġinternal Ġval Ġactivity : ĠFragment Activity Ġget () Ġ= Ġrequire Parent Container (). navigation Context . activity ĊĊĠĠĠ Ġprivate Ġval Ġarguments Ġby Ġlazy Ġ{ ĠBundle (). add Open Instruction ( instruction ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġsaved State : ĠBundle ? Ġ= ĊĠĠĠĠĠĠĠ Ġparent Saved State Registry . consume Restore d State ForKey ( instruction . instruction Id ) ĊĠĠĠ Ġprivate Ġval Ġsaved State Controller Ġ= ĠSaved State Registry Controller . create ( this ) ĊĠĠĠ Ġprivate Ġval ĠviewModel Store : ĠViewModel Store Ġ= ĠViewModel Store () ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠ Ġprivate Ġval Ġlifecycle Registry : ĠLifecycle Registry Ġ= ĠLifecycle Registry ( this ) ĊĊĠĠĠ Ġprivate Ġvar Ġdefault ViewModel Factory : ĠPair < Int , ĠViewModel Provider . Factory > Ġ= ĊĠĠĠĠĠĠĠĠ 0 Ġto ĠViewModel Provider . New Instance Factory () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdestination . context Reference Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġsaved State Controller . perform Restore ( saved State ) ĊĠĠĠĠĠĠĠ Ġlifecycle Registry . add Observer ( object Ġ: ĠLifecycle Event Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( source : ĠLifecycle Owner , Ġevent : ĠLifecycle . Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLifecycle . Event . ON _ CREATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Saved State Registry . register Saved State Provider ( instruction . instruction Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout State Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Controller . on Compose Context Saved ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State Controller . perform Save ( out State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Controller . on Compose Destination Attached ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLifecycle . Event . ON _ DESTROY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Saved State Registry . unregister Saved State Provider ( instruction . instruction Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Store . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . remove Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlifecycle Registry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel Store (): ĠViewModel Store Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel Store ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetDefault ViewModel Provider Factory (): ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdefault ViewModel Factory . second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Saved State Registry (): ĠSaved State Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsaved State Controller . saved State Registry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġrequire Parent Container (): ĠEn ro Container Controller Ġ= Ġparent Container !! ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun Ġremember Default ViewModel Factory ( navigation Handle : ĠNavigation Handle ): ĠPair < Int , ĠViewModel Provider . Factory > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġremember ( parent ViewModel Store Owner . hashCode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent ViewModel Store Owner . hashCode () Ġ== Ġdefault ViewModel Factory . first ) Ġreturn @ remember Ġdefault ViewModel Factory ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerated Component Manager Holder Class Ġ= Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGenerated Component Manager Holder :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. get OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= Ġif Ġ( generated Component Manager Holder Class Ġ!= Ġnull Ġ&& Ġactivity Ġis ĠGenerated Component Manager Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ilt ViewModel Factory . create Internal ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSaved State ViewModel Factory ( activity . application , Ġthis , Ġsaved State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSaved State ViewModel Factory ( activity . application , Ġthis , Ġsaved State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ remember Ġparent ViewModel Store Owner . hashCode () Ġto ĠEn ro ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Handle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfactory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠRender () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsave able State Holder Ġ= Ġremember Save able State Holder () ĊĠĠĠĠĠĠĠ Ġif Ġ(! lifecycle Registry . currentState . is At Least ( Lifecycle . State . CREATED )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġback stack State Ġby Ġrequire Parent Container (). back stack . collect As State () ĊĠĠĠĠĠĠĠ Ġval Ġparent Context Ġ= Ġrequire Parent Container (). navigation Context ĊĠĠĠĠĠĠĠ ĠDis posable Effect ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! back stack State . back stack . contains ( instruction )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġis Visible Ġ= Ġinstruction Ġ== Ġback stack State . visible ĊĠĠĠĠĠĠĠ Ġval Ġanimations Ġ= Ġremember ( isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( back stack State . skip Animations ) Ġreturn @ remember ĠDefault Animations . none ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimations For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback stack State . last Instruction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠEn ro Animated Visibility ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisible Ġ= Ġis Visible , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimations Ġ= Ġanimations ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDis posable Effect ( isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ START ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ PAUSE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigation Handle Ġ= Ġremember Ġ{ Ġget Navigation Handle ViewModel () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault ViewModel Factory Ġ= Ġremember Default ViewModel Factory ( navigation Handle ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Lifecycle Owner Ġprovides Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ViewModel Store Owner Ġprovides Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Saved State Registry Owner Ġprovides Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Navigation Handle Ġprovides Ġnavigation Handle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave able State Holder . Save able State Provider ( key Ġ= Ġinstruction . instruction Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . Render () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDis posable Effect ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Parent Container (). on Instruction Disposed ( instruction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġget Composable Destination Context ( ĊĠĠĠ Ġinstruction : ĠNavigation Instruction . Open , ĊĠĠĠ Ġdestination : ĠComp osable Destination , ĊĠĠĠ Ġparent Container : ĠEn ro Container Controller ? Ċ ): ĠComp osable Destination Context Reference Ġ{ ĊĠĠĠ Ġreturn ĠComp osable Destination Context Reference ( ĊĠĠĠĠĠĠĠ Ġinstruction Ġ= Ġinstruction , ĊĠĠĠĠĠĠĠ Ġdestination Ġ= Ġdestination , ĊĠĠĠĠĠĠĠ Ġparent Container Ġ= Ġparent Container ĊĠĠĠ Ġ) Ċ } Ċ Ċ abstract Ġclass ĠComp osable Destination : ĠLifecycle Owner , ĊĠĠĠ ĠViewModel Store Owner , ĊĠĠĠ ĠSaved State Registry Owner , ĊĠĠĠ ĠHas Default ViewModel Provider Factory Ġ{ ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġcontext Reference : ĠComp osable Destination Context Reference ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Reference . lifecycle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel Store (): ĠViewModel Store Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Reference . viewModel Store ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Saved State Registry (): ĠSaved State Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Reference . saved State Registry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetDefault ViewModel Provider Factory (): ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Reference . default ViewModel Provider Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġabstract Ġfun ĠRender () Ċ } Ċ