package Ġcom . push pal . jet lime . data Ċ Ċ import Ġandroidx . compose . animation . core . Experimental Transition Api Ċ import Ġandroidx . compose . animation . core . Mutable Transition State Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Check Circle Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . mutable State ListOf Ċ import Ġandroidx . compose . ui . graphics . vector . Image Vector Ċ import Ġcom . push pal . jet lime . data . config . Jet L ime Item Config Ċ Ċ class ĠJet L ime Items Model ( list : ĠList < Jet L ime Item > Ġ= ĠlistOf ()) Ġ{ ĊĠ Ġprivate Ġval Ġ_ items : ĠMutable List < Jet L ime Item > Ġ= Ġmutable State ListOf () ĊĠ Ġval Ġitems : ĠList < Jet L ime Item > Ġ= Ġ_ items ĊĠ Ġprivate Ġvar Ġlast ItemId Ġ= Ġ 0 ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġfor Ġ( item Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠ Ġadd Item ( item ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠJet L ime Item ( ĊĠĠĠ Ġval Ġindicator : ĠImage Vector Ġ= ĠIcons . Filled . Check Circle , ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġimage Urls : ĠList < String >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġjet L ime Item Config : ĠJet L ime Item Config Ġ= ĠJet L ime Item Config ( position Ġ= Ġ 0 ), ĊĠĠĠ Ġvar ĠitemId : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġvisible : ĠMutable Transition State < Boolean > Ġ= ĠMutable Transition State ( false ), ĊĠĠĠ Ġval Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġ) ĊĊĠ Ġfun Ġadd Item ( jet L ime Item : ĠJet L ime Item ) Ġ{ ĊĠĠĠ Ġlast ItemId ++ ĊĠĠĠ Ġ_ items . add ( jet L ime Item . apply Ġ{ ĊĠĠĠĠĠ Ġvisible Ġ= ĠMutable Transition State ( false ). apply Ġ{ Ġtarget State Ġ= Ġtrue Ġ} ĊĠĠĠĠĠ ĠitemId Ġ= Ġlast ItemId ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġremove Item ( jet L ime Item : ĠJet L ime Item ?) Ġ{ ĊĠĠĠ Ġjet L ime Item ?. let Ġ{ Ġsafe Jet L ime Item Ġ-> ĊĠĠĠĠĠ Ġsafe Jet L ime Item . visible . target State Ġ= Ġfalse ĊĠĠĠĠĠ Ġlast ItemId -- ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Opt In ( Experimental Transition Api :: class ) ĊĠ Ġfun Ġprune Items () Ġ{ ĊĠĠĠ Ġ_ items . removeAll ( items . filter Ġ{ Ġit . visible . is Idle Ġ&& Ġ! it . visible . target State Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġremove All () Ġ{ ĊĠĠĠ Ġ_ items . forEach Ġ{ ĊĠĠĠĠĠ Ġit . visible . target State Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }