package Ġcom . push pal . jet lime . ui Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . core . Experimental Transition Api Ċ import Ġandroidx . compose . animation . core . Fast Out Slow In E asing Ċ import Ġandroidx . compose . animation . core . Linear Out Slow In E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . animation . shrink Vert ically Ċ import Ġandroidx . compose . animation . slide In Vert ically Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . Lazy List State Ċ import Ġandroidx . compose . foundation . lazy . remember Lazy List State Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . snapshot Flow Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġcom . push pal . jet lime . data . Jet L ime Items Model Ċ import Ġcom . push pal . jet lime . data . Jet L ime Items Model . Jet L ime Item Ċ import Ġcom . push pal . jet lime . data . config . Jet L ime View Config Ċ import Ġkotlinx . coroutines . flow . collect Ċ Ċ /** Ċ Ġ* Ġ[ Jet L ime View ] Ġis Ġexposed Ġto Ġbe Ġused Ġas Ġcomp osable . Ċ Ġ* Ġ@ param Ġmodifier Ġis Ġthe ĠModifier Ġfor Ġthe ĠJet L ime View . Ċ Ġ* Ġ@ param Ġjet L ime Items Model Ġis Ġthe Ġmodel Ġof Ġlist Ġof Ġitems . ĠSee Ġ[ Jet L ime Item ] Ċ Ġ* Ġ@ param Ġjet L ime View Config Ġis Ġthe Ġconfig Ġfor Ġthe Ġview . ĠSee Ġ[ jet L ime View Config ] Ċ Ġ* Ġ@ param Ġlist State Ġis Ġthe Ġstate Ġof Ġthe ĠLazy Column Ġwhich Ġwill Ġhold Ġthe ĠJet L ime Items . Ċ Ġ*/ Ċ @ Opt In ( ĊĠ ĠExperimental Animation Api :: class , ĊĠ ĠExperimental Transition Api :: class , ĊĠ ĠExperimental Foundation Api :: class Ċ ) Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠJet L ime View ( ĊĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠ Ġjet L ime Items Model : ĠJet L ime Items Model , ĊĠ Ġjet L ime View Config : ĠJet L ime View Config , ĊĠ Ġlist State : ĠLazy List State Ġ= Ġremember Lazy List State () Ċ ) Ġ{ ĊĠ ĠLa unched Effect ( jet L ime Items Model ) Ġ{ ĊĠĠĠ Ġsnapshot Flow Ġ{ ĊĠĠĠĠĠ Ġjet L ime Items Model . items . first OrNull Ġ{ Ġjet L ime Item Ġ-> ĊĠĠĠĠĠĠĠ Ġjet L ime Item . visible . is Idle Ġ&& Ġjet L ime Item . visible . target State . not () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. collect Ġ{ Ġjet L ime Item Ġ-> ĊĠĠĠĠĠ Ġif Ġ( jet L ime Item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjet L ime Items Model . prune Items () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ ĠLazy Column ( ĊĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠ Ġstate Ġ= Ġlist State , ĊĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( jet L ime View Config . item Spacing ) ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġitems ( count Ġ= Ġjet L ime Items Model . items . size ) Ġ{ Ġpos Ġ-> ĊĠĠĠĠĠ Ġjet L ime Items Model . items [ pos ]. let Ġ{ Ġjet L ime Item Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġslide In Vert ically Ġ= Ġslide In Vert ically ( ĊĠĠĠĠĠĠĠĠĠ Ġinitial Offset Y Ġ= Ġ{ Ġa Ġ-> Ġ- a Ġ/ Ġ 4 Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġ 6 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Millis Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠFast Out Slow In E asing ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġshrink Vert ically Ġ= Ġshrink Vert ically ( ĊĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġ 4 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Millis Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠLinear Out Slow In E asing ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( jet L ime View Config . enable Item Animation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisible State Ġ= Ġjet L ime Item . visible , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenter Ġ= Ġslide In Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Ġ= Ġshrink Vert ically ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJet L ime Item View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġjet L ime Item . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġjet L ime Item . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġjet L ime Item . content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config Ġ= Ġjet L ime Item . jet L ime Item Config . apply Ġ{ Ġposition Ġ= Ġpos Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Config Ġ= Ġjet L ime View Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Items Ġ= Ġjet L ime Items Model . items . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠJet L ime Item View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġjet L ime Item . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġjet L ime Item . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġjet L ime Item . content , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Config Ġ= Ġjet L ime Item . jet L ime Item Config . apply Ġ{ Ġposition Ġ= Ġpos Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Config Ġ= Ġjet L ime View Config , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Items Ġ= Ġjet L ime Items Model . items . size ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }