/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMeta ĠPlatform s , ĠInc . Ġand Ġaffiliates . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . facebook . l ith o Ċ Ċ /** Ċ Ġ* ĠPart Ġof Ġa Ġ[ Style ] Ġthat Ġcan Ġapply Ġan Ġattribute Ġto Ġan Ġunderlying ĠComponent , Ġe . g . Ġwidth Ġor Ġclick Ċ Ġ* Ġhandling . Ċ Ġ*/ Ċ interface ĠStyle Item Ġ{ ĊĊĠ Ġ/** ĠSets Ġthis Ġstyle Ġitem Ġvalue Ġon Ġthe Ġgiven Ġ[ Component ]. Ġ*/ ĊĠ Ġfun Ġapply To Component ( resource Resolver : ĠResource Resolver , Ġcomponent : ĠComponent ) Ċ } Ċ Ċ /** Ġexposed Ġto Ġavoid Ġpackage - private Ġerror Ġon Ġ[ Component ] Ġ*/ Ċ internal Ġfun ĠComponent . get Common Props Holder () Ġ= Ġget OrCreate Common Props () Ċ Ċ internal Ġfun ĠComponent . get OrCreate Common Dynamic Props Holder () Ġ= Ġget OrCreate Common Dynamic Props () Ċ Ċ internal Ġfun ĠComponent . getComponent Owner Global Key () Ġ= Ġget Owner Global Key () Ċ Ċ /** Ċ Ġ* ĠAn Ġimmutable Ġordered Ġcollection Ġof Ġattributes Ġ( Ġ[ Style Item ] Ġs ) Ġthat Ġcan Ġbe Ġapplied Ġto Ġa Ċ Ġ* Ġcomponent , Ġlike Ġwidth Ġor Ġclick Ġhandling . Ċ Ġ* Ċ Ġ* ĠAdding Ġnew Ġattributes Ġto Ġa ĠStyle Ġ( e . g . Ġby Ġcalling Ġ`. background `) Ġwill Ġreturn Ġa Ġnew ĠStyle Ġobject . Ċ Ġ* ĠOrdering Ġmatters Ġin Ġthat Ġthe Ġlast Ġdefinition Ġof Ġan Ġattribute Ġ' wins '. Ċ Ġ* Ċ Ġ* ĠStyles Ġcan Ġalso Ġbe Ġadded Ġvia Ġthe Ġ` + ` Ġoperator , Ġwith Ġattributes Ġfrom Ġthe Ġright - hand Ġside ĠStyle Ċ Ġ* Ġtaking Ġprecedence Ġif Ġthe Ġtwo Ġdefine Ġdifferent Ġvalues Ġfor Ġthe Ġsame Ġattribute , Ġsimilar Ġto Ġadding Ċ Ġ* Ġmaps . Ċ Ġ*/ Ċ open Ġclass ĠStyle ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġthe ĠStyle Ġwe 're Ġadding Ġto , Ġe . g . Ġ` Style . padding ()` Ġwhen Ġcalling Ġ`. background ()` Ġin ĊĠĠĠĠ Ġ* Ġ` Style . padding (). background ()` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġprevious Style : ĠStyle ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġ[ Style Item ] Ġwe 're Ġadding , Ġe . g . Ġthe Ġbackground Ġwhen Ġcalling Ġ`. background ()` Ġin ĊĠĠĠĠ Ġ* Ġ` Style . padding (). background ()` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġitem : ĠStyle Item ?, Ċ ) Ġ{ ĊĊĠ Ġoperator Ġfun Ġplus ( other : ĠStyle ?): ĠStyle Ġ{ ĊĠĠĠ Ġif Ġ( other Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠCom bined Style ( if Ġ( this Ġ=== ĠStyle ) Ġnull Ġelse Ġthis , Ġother ) ĊĠ Ġ} ĊĊĠ Ġinline Ġoperator Ġfun Ġplus ( next Item : ĠStyle Item ?): ĠStyle Ġ{ ĊĠĠĠ Ġif Ġ( next Item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠStyle ( if Ġ( this Ġ=== ĠStyle ) Ġnull Ġelse Ġthis , Ġnext Item ) ĊĠ Ġ} ĊĊĠ Ġopen Ġfun ĠforEach ( lambda : Ġ( Style Item ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġprevious Style ?. forEach ( lambda ) ĊĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġlambda ( item ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġapply To Component ( resource Resolver : ĠResource Resolver , Ġcomponent : ĠComponent ) Ġ{ ĊĠĠĠ ĠforEach Ġ{ Ġit . apply To Component ( resource Resolver , Ġcomponent ) Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġother Ġas ĠStyle ĊĠĠĠ Ġreturn Ġprevious Style Ġ== Ġother . previous Style Ġ&& Ġitem Ġ== Ġother . item ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġprevious Style ?. hashCode () Ġ?: Ġ 0 ĊĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( item ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAn Ġempty ĠStyle Ġsingleton Ġthat Ġcan Ġbe Ġused Ġto Ġbuild Ġa Ġchain Ġof Ġstyle Ġitems . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠThis Ġis Ġa Ġbit Ġof Ġa Ġtrick Ġthat Ġlets Ġus Ġmake Ġ` Style . background ()` Ġlook Ġlike Ġa Ġstatic Ġcall , Ġbut ĊĠĠ Ġ* Ġactually Ġbe Ġa Ġmember Ġcall Ġsince Ġ` Style ` Ġis Ġnow Ġa Ġsingleton Ġobject . ĠOtherwise Ġwe 'd Ġneed Ġto ĊĠĠ Ġ* Ġdefine Ġboth Ġa Ġstatic Ġ` Style . background ()` Ġand Ġa Ġmember Ġfunction Ġto Ġsupport ĊĠĠ Ġ* Ġ` Style . padding (... ). background ()`. ĊĠĠ Ġ*/ ĊĠ Ġcompanion Ġobject Ġ: ĠStyle ( null , Ġnull ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġsubclass Ġof Ġ[ Style ] Ġwhich Ġcombin es Ġtwo ĠStyles , Ġas Ġopposed Ġto Ġadding Ġa Ġsingle Ġ[ Style Item ] Ġto Ġan Ċ Ġ* Ġexisting ĠStyle . Ċ Ġ* Ċ Ġ* ĠA ĠCom bined Style Ġis Ġcreated Ġby Ġcombining Ġtwo ĠStyles Ġwith Ġ` + `. ĠAttributes Ġfrom Ġthe Ġright - hand Ġside Ċ Ġ* ĠStyle Ġtake Ġprecedence Ġif Ġthe Ġtwo Ġdefine Ġdifferent Ġvalues Ġfor Ġthe Ġsame Ġattribute , Ġsimilar Ġto Ċ Ġ* Ġadding Ġmaps . Ċ Ġ*/ Ċ private Ġdata Ġclass ĠCom bined Style ( val Ġfirst : ĠStyle ?, Ġval Ġsecond : ĠStyle ?) Ġ: ĠStyle ( first , Ġnull ) Ġ{ ĊĊĠ Ġoverride Ġfun ĠforEach ( lambda : Ġ( Style Item ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfirst ?. forEach ( lambda ) ĊĠĠĠ Ġsecond ?. forEach ( lambda ) ĊĠ Ġ} Ċ } Ċ