/* Ċ Ġ* ĠDevelop ed Ġby Ġn 1 k 3 c Ġ( N ik ola ĠC uri lo vi Äĩ ) ĠĠ 2 0 2 1 Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ni ke c . coin compose . navigation Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . expand Vert ically Ċ import Ġandroidx . compose . animation . shrink Vert ically Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . material . Bottom Navigation Ċ import Ġandroidx . compose . material . Bottom Navigation Item Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . navigation . Nav Destination . Companion . hierarchy Ċ import Ġandroidx . navigation . Nav Graph . Companion . find Start Destination Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . compose . current Back Stack Entry As State Ċ import Ġcom . ni ke c . coin compose . R Ċ import Ġcom . ni ke c . coin compose . core . navigation . Coins Directions Ċ import Ġcom . ni ke c . coin compose . core . navigation . News Directions Ċ import Ġcom . ni ke c . coin compose . core . navigation . Settings Directions Ċ Ċ private Ġsealed Ġclass ĠNavigation Bar Item ( ĊĠĠĠ Ġ@ String Res Ġval Ġtitle : ĠInt , ĊĠĠĠ Ġval Ġroute : ĠString , ĊĠĠĠ Ġ@ Drawable Res Ġval Ġicon : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġobject ĠCoin s Ġ: ĠNavigation Bar Item ( ĊĠĠĠĠĠĠĠ ĠR . string . coins , ĊĠĠĠĠĠĠĠ ĠCoin s Directions . coins List . route , ĊĠĠĠĠĠĠĠ ĠR . drawable . ic _ coins ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠNews Ġ: ĊĠĠĠĠĠĠĠ ĠNavigation Bar Item ( R . string . news , ĠNews Directions . news List . route , ĠR . drawable . ic _ news ) ĊĊĠĠĠ Ġobject ĠSettings Ġ: ĠNavigation Bar Item ( ĊĠĠĠĠĠĠĠ ĠR . string . settings , ĊĠĠĠĠĠĠĠ ĠSettings Directions . settings . route , ĊĠĠĠĠĠĠĠ ĠR . drawable . ic _ settings ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġval Ġnavigation Bar Items Ġ= ĊĠĠĠ ĠlistOf ( NavigationBar Item . Coins , ĠNavigation Bar Item . News , ĠNavigation Bar Item . Settings ) Ċ Ċ @ Opt In ( Experimental Animation Api :: class ) Ċ @ Composable Ċ internal Ġfun ĠBottom NavigationBar ( ĊĠĠĠ Ġnav Controller : ĠNav Host Controller , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġback Stack Entry Ġ= Ġnav Controller . current Back Stack Entry As State () ĊĠĠĠ Ġval Ġcurrent Destination Ġ= Ġback Stack Entry . value ?. destination ĊĠĠĠ Ġvar Ġvisibility Ġby Ġremember Ġ{ Ġmutable State Of ( true ) Ġ} ĊĊĠĠĠ ĠLa unched Effect ( current Destination ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Destination ?. hierarchy ?. any Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Bar Items . map Ġ{ Ġit . route Ġ}. contains ( item . route ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ!= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠ Ġvisible Ġ= Ġvisibility , ĊĠĠĠĠĠĠĠ Ġenter Ġ= Ġexpand Vert ically (), ĊĠĠĠĠĠĠĠ Ġexit Ġ= Ġshrink Vert ically () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBottom Navigation ( elevation Ġ= Ġ 1 . dp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Bar Items . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Destination ?. hierarchy ?. any Ġ{ Ġit . route Ġ== Ġitem . route Ġ} Ġ== Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġselected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( item . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up To ( nav Controller . graph . find Start Destination (). id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Single Top Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestore State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 2 2 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġitem . icon ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( id Ġ= Ġitem . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalways Show Label Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ