package Ġcom . rocket . android . core . navigation . extension Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ Ċ // Ġregion ĠFR AG MENT Ċ internal Ġfun ĠFragment . pop Back Stack () Ġ{ ĊĠĠĠ Ġsafe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . pop Back () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠType Ġ: ĠFragment > ĠFragment . pop Back Stack Fragment () Ġ{ ĊĠĠĠ Ġget Nav Host Fragment < Type >() ?. safe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . pop Back () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠFragment . navigate ( ĊĠĠĠ Ġ@ Id Res Ġid : ĠInt , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull , ĊĠĠĠ Ġextras : ĠBundle Ċ ) Ġ{ ĊĠĠĠ Ġsafe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( id , Ġextras , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠType Ġ: ĠFragment > ĠFragment . navigate Fragment ( ĊĠĠĠ Ġ@ Id Res Ġid : ĠInt , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull , ĊĠĠĠ Ġextras : ĠBundle Ċ ) Ġ{ ĊĠĠĠ Ġget Nav Host Fragment < Type >() ?. safe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( id , Ġextras , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠFragment . navigate ( ĊĠĠĠ Ġdirections : ĠNav Directions , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġsafe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( directions , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠType Ġ: ĠFragment > ĠFragment . navigate Fragment ( ĊĠĠĠ Ġdirections : ĠNav Directions , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġget Nav Host Fragment < Type >() ?. safe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( directions , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠFragment . navigate ( ĊĠĠĠ Ġuri : ĠUri , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġsafe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( uri , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠType Ġ: ĠFragment > ĠFragment . navigate Fragment ( ĊĠĠĠ Ġuri : ĠUri , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġget Nav Host Fragment < Type >() ?. safe State Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠ Ġfragment . find Nav Controller (). navigate ( uri , Ġnav Options ) ĊĠĠĠ Ġ} Ċ } Ċ // Ġend region Ċ Ċ // Ġregion ĠUT IL S Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠType Ġ: ĠFragment > ĠFragment . get Nav Host Fragment (): ĠFragment ? Ġ{ ĊĠĠĠ Ġvar Ġfragment : ĠFragment ? Ġ= Ġthis ĊĠĠĠ Ġwhile Ġ( fragment Ġ!= Ġnull Ġ&& Ġfragment Ġ! is ĠType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Ġ= Ġfragment . child FragmentManager . primary Navigation Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfragment . child FragmentManager . fragments . first OrNull Ġ{ Ġit Ġis ĠType Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfragment ?. child FragmentManager ?. primary Navigation Fragment Ċ } Ċ Ċ @ Published Api Ċ internal Ġfun ĠFragment . safe State ( ignore : ĠBoolean Ġ= Ġfalse , Ġaction : Ġ( fragment : ĠFragment ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġif Ġ( is Res umed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( this ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ(! ignore ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent FragmentManager . register Fragment Lifecycle Callbacks ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠFragment Manager . Fragment Lifecycle Callbacks () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fragment Res umed ( fm : ĠFragment Manager , Ġf : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Fragment Res umed ( fm , Ġf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfm . unregister Fragment Lifecycle Callbacks ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġfun ĠFragment . pop Back () Ġ{ ĊĠĠĠ Ġvar Ġfragment : ĠFragment ? Ġ= Ġthis ĊĠĠĠ Ġwhile Ġ( fragment Ġ!= Ġnull Ġ&& Ġ! fragment . find Nav Controller (). pop Back Stack ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Ġ= Ġfragment . parent Fragment ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠ Ġ} Ċ } Ċ // Ġend region