package Ġcom . j ace kp ie tras . zoo . map . ui Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . core . Mutable Transition State Ċ import Ġandroidx . compose . animation . expand Vert ically Ċ import Ġandroidx . compose . animation . shrink Vert ically Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . default Min Size Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . lazy . Lazy Row Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġco il . compose . remember Image Painter Ċ import Ġcom . j ace kp ie tras . zoo . domain . model . Animal Id Ċ import Ġcom . j ace kp ie tras . zoo . domain . model . RegionId Ċ import Ġcom . j ace kp ie tras . zoo . map . model . Map Carousel Item Ċ Ċ @ Composable Ċ fun ĠImage Carousel View ( ĊĠĠĠ Ġmap Carousel Items : ĠList < Map Carousel Item >, ĊĠĠĠ Ġitem Width : ĠD p , ĊĠĠĠ Ġon Animal Clicked : Ġ( Animal Id ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Region Clicked : Ġ( RegionId ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠ Ġvisible State Ġ= Ġremember Ġ{ ĠMutable Transition State ( map Carousel Items . isNotEmpty ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġtarget State Ġ= Ġmap Carousel Items . isNotEmpty () Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width (), ĊĠĠĠĠĠĠĠ Ġenter Ġ= Ġexpand Vert ically (), ĊĠĠĠĠĠĠĠ Ġexit Ġ= Ġshrink Vert ically (), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLazy Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Min Size ( min Height Ġ= Ġitem Width Ġ+ Ġ 1 6 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Padding Ġ= ĠPadding Values ( horizontal Ġ= Ġ 8 . dp , Ġvertical Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( map Carousel Items ) Ġ{ Ġcarousel Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( carousel Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap Carousel Item . Animal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnimal Carousel Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= Ġcarousel Item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcarousel Item Width Ġ= Ġitem Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Animal Clicked ( carousel Item . id ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap Carousel Item . Region Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegion Carousel Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= Ġcarousel Item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcarousel Item Width Ġ= Ġitem Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Region Clicked ( carousel Item . id ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠRegion Carousel Item ( ĊĠĠĠ Ġitem : ĠMap Carousel Item . Region , ĊĠĠĠ Ġcarousel Item Width : ĠD p , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( carousel Item Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( onClick Ġ= ĠonClick ), ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimal ImageView ( item . photoUrl Left Top , Ġcarousel Item Width Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimal ImageView ( item . photoUrl Right Top , Ġcarousel Item Width Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimal ImageView ( item . photoUrl Left Bottom , Ġcarousel Item Width Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimal ImageView ( item . photoUrl Right Bottom , Ġcarousel Item Width Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġitem . name . toString ( Local Context . current ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 3 . sp , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġimage Painter ( url : ĠString ?) Ġ= Ġremember Image Painter ( ĊĠĠĠ Ġdata Ġ= Ġurl Ġ?: Ġ" no Ġimage ", ĊĠĠĠ Ġbuilder Ġ= Ġ{ Ġcross fade ( true ) Ġ} Ċ ) Ċ Ċ @ Composable Ċ private Ġfun ĠAnimal Carousel Item ( ĊĠĠĠ Ġitem : ĠMap Carousel Item . Animal , ĊĠĠĠ Ġcarousel Item Width : ĠD p , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( carousel Item Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( onClick Ġ= ĠonClick ), ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAnimal ImageView ( item . photoUrl , Ġcarousel Item Width ) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġitem . name . toString ( Local Context . current ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 3 . sp , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠAnimal ImageView ( url : ĠString ?, Ġsize : ĠD p ) Ġ{ ĊĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠ Ġpainter Ġ= Ġimage Painter ( url ), ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( size ) ĊĠĠĠ Ġ) Ċ } Ċ