package Ġcom . m ire go . tri kot . view models Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġcom . m ire go . tri kot . streams . reactive . just Ċ import Ġcom . m ire go . tri kot . streams . reactive . observe Ċ import Ġcom . m ire go . tri kot . view models . mutable . Mutable ViewModel Ċ import Ġcom . m ire go . tri kot . view models . properties . ViewModel Action Ċ import Ġcom . m ire go . tri kot . view models . utils . Binding Utils Ċ Ċ private Ġval ĠNo ViewModel Ġ= ĠMutable ViewModel () ĊĠĠĠ Ġ. apply Ġ{ Ġhidden Ġ= Ġtrue . just () Ġ} Ġas ĠViewModel Ċ Ċ @ Binding Adapter (" view _ model ") Ċ fun ĠView . bind ViewModel ( ĊĠĠĠ ĠviewModel : ĠViewModel ? Ċ ) Ġ{ ĊĠĠĠ Ġbind ViewModel ( viewModel , ĠBinding Utils . get Lifecycle Owner Wrapper From View ( this )) Ċ } Ċ Ċ @ Binding Adapter (" view _ model ", Ġ" lifecycle Owner Wrapper ") Ċ fun ĠView . bind ViewModel ( ĊĠĠĠ ĠviewModel : ĠViewModel ?, ĊĠĠĠ Ġlifecycle Owner Wrapper : ĠLifecycle Owner Wrapper Ċ ) Ġ{ ĊĠĠĠ Ġ( viewModel Ġ?: ĠNo ViewModel ). let Ġ{ ĊĠĠĠĠĠĠĠ Ġit . hidden . observe ( lifecycle Owner Wrapper . lifecycle Owner ) Ġ{ Ġis Hidden Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( is Hidden ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit . alpha . observe ( lifecycle Owner Wrapper . lifecycle Owner ) Ġ{ Ġalpha Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Alpha ( alpha ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind Action ( it , Ġlifecycle Owner Wrapper ) ĊĊĠĠĠĠĠĠĠ Ġit . backgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( lifecycle Owner Wrapper . lifecycle Owner ) Ġ{ Ġselector Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selector . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ observe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setBackground ( this , ĠColor Drawable ( Color . WHITE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setBackground Tint List ( this , Ġselector . to Color State List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . bind Action ( viewModel : ĠViewModel , Ġlifecycle Owner Wrapper : ĠLifecycle Owner Wrapper ) Ġ{ ĊĠĠĠ ĠviewModel . action . observe ( lifecycle Owner Wrapper . lifecycle Owner ) Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Action . None Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset OnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . execute ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ