package Ġui . common Ċ Ċ import ĠTerm Props Ċ import Ġkotlinx . css .* Ċ import Ġkotlinx . html . js . onClick Function Ċ import Ġreact . R Builder Ċ import Ġreact . R Component Ċ import Ġreact . R State Ċ import Ġreact . setState Ċ import Ġstyled . css Ċ import Ġstyled . styled Div Ċ import Ġui . Text Ċ import Ġui . Text Var ient Ċ import Ġui . Theme Ċ import Ġui . common . f li pt ool kit . animated Ċ import Ġui . common . f li pt ool kit . anim ator Base Ċ import Ġui . common . f li pt ool kit . de Animate Ċ import Ġui . dp Ċ import Ġutil . display Flex ĊĊĊ Ċ class ĠTerm Switch er Ġ: ĠR Component < Switch er Props , ĠSwitch er State >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠR Builder . render () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator Base ( state . expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimated (" term Switch er Div ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= Ġ" solid Ġ${ Theme . Primary }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠborderRadius Ġ= Ġ 0 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠborderWidth Ġ= Ġ 2 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . transparent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= ĠCursor . pointer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠOverflow . hidden ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġ! expanded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde Animate (" term Switch er Div ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Flex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding ( horizontal Ġ= Ġ 1 6 . dp , Ġvertical Ġ= Ġ 1 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Icon (" filter _ list ", Ġcolor Ġ= ĠTheme . Primary ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginRight Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" TERM ", ĠText Var ient . Bold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠTheme . Primary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ Ġwidth Ġ= Ġ 1 6 . dp Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm Item ( term Ġ= Ġ 1 , Ġselected Ġ= Ġprops . term Ġ== Ġ 1 ) Ġ{ Ġprops . on Switch . invoke ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm Item ( term Ġ= Ġ 2 , Ġselected Ġ= Ġprops . term Ġ== Ġ 2 ) Ġ{ Ġprops . on Switch . invoke ( 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm Item ( term Ġ= Ġ 3 , Ġselected Ġ= Ġprops . term Ġ== Ġ 3 ) Ġ{ Ġprops . on Switch . invoke ( 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm Item ( term Ġ= Ġ 4 , Ġselected Ġ= Ġprops . term Ġ== Ġ 4 ) Ġ{ Ġprops . on Switch . invoke ( 4 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ private Ġfun ĠR Builder . Term Item ( term : ĠInt , Ġselected : ĠBoolean , ĠonClick : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 3 6 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 3 6 . dp ĊĠĠĠĠĠĠĠĠĠĠĠ ĠborderRadius Ġ= Ġ 5 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġif Ġ( selected ) ĠTheme . Primary Ġelse ĠColor . transparent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġif Ġ( selected ) ĠColor . white Ġelse ĠTheme . Primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . flex ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjustifyContent Ġ= ĠJust ify Content . center ĊĠĠĠĠĠĠĠĠĠĠĠ ĠalignItems Ġ= ĠAlign . center ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Function Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . stopPropagation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠText ("$ term ", ĠText Var ient . Bold ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠSwitch er Props Ġ: ĠTerm Props Ġ{ ĊĠĠĠ Ġvar Ġon Switch : Ġ( Int ) Ġ-> ĠUnit Ċ } Ċ Ċ interface ĠSwitch er State Ġ: ĠR State Ġ{ ĊĠĠĠ Ġvar Ġexpanded : ĠBoolean Ċ } Ċ Ċ fun ĠR Builder . Term Switch er ( term : ĠInt , Ġon Switch : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġchild ( Term Switch er :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . term Ġ= Ġterm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Switch Ġ= Ġon Switch ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }