package Ġcom . lyft . dom ic . android Ċ Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . Rx View Ċ import Ġcom . lyft . dom ic . android . rendering . map To Change Ċ import Ġcom . lyft . dom ic . api . View Ċ import Ġcom . lyft . dom ic . api . rendering . Renderer Ċ import Ġcom . lyft . dom ic . api . subscribe Ċ import Ġcom . lyft . dom ic . util . shared Distinct Until Changed Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers . main Thread Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjava . util . concurrent . atomic . Atomic Reference Array Ċ Ċ class ĠAndroid View ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġreal View : Ġandroid . view . View , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrenderer : ĠRenderer Ċ ) Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ ACTIV ATED Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ ALPHA Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ ENABLED Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ FOCUS ABLE Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ FOCUS ABLE _ IN _ TO UCH _ MODE Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ INDEX _ VISIBLE Ġ= Ġ 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstate Ġ= ĠAtomic Reference Array < Any >( 6 ) ĊĊĠĠĠ Ġoverride Ġval Ġobserve Ġ= Ġobject Ġ: ĠView . Ob serve Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġclicks : ĠObservable < Any > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRx View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click s ( real View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. share () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfocus : ĠObservable < Boolean > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRx View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. focus Changes ( real View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. share () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġlong Click s : ĠObservable < Any > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRx View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Click s ( real View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. share () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġchange Ġ= Ġobject Ġ: ĠView . Change Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġactivated ( activated Values : ĠObservable < Boolean >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivated Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ ACTIV ATED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ ACTIV ATED ) Ġ{ Ġreal View . is Activated Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġalpha ( alpha Values : ĠObservable < Float >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġalpha Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ ALPHA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ ALPHA ) Ġ{ Ġreal View . alpha Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenabled ( enabled Values : ĠObservable < Boolean >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġenabled Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ ENABLED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ ENABLED ) Ġ{ Ġreal View . isEnabled Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus able ( focus able Values : ĠObservable < Boolean >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfocus able Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ FOCUS ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ FOCUS ABLE ) Ġ{ Ġreal View . is Focus able Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus able In Touch Mode ( focus able In Touch Mode Values : ĠObservable < Boolean >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfocus able In Touch Mode Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ FOCUS ABLE _ IN _ TO UCH _ MODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ FOCUS ABLE _ IN _ TO UCH _ MODE ) Ġ{ Ġreal View . is Focus able In Touch Mode Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisibility ( visibility Values : ĠObservable < View . Visibility >): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvisibility Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shared Distinct Until Changed ( state , ĠSTATE _ INDEX _ VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Change ( real View , ĠSTATE _ INDEX _ VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" WHEN _ ENUM _ CAN _ BE _ NULL _ IN _ JAVA ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal View . visibility Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Visibility . GONE Ġ-> Ġandroid . view . View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Visibility . IN VISIBLE Ġ-> Ġandroid . view . View . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Visibility . VISIBLE Ġ-> Ġandroid . view . View . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( renderer :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ