package Ġview . core . render ers . view Render ers . inputs Ċ Ċ import Ġview . core . render ers . view Render ers . Abstract View Renderer Ċ import Ġview . core . views . input . Button Ċ import Ġorg . w 3 c . dom . HTMLElement Ċ import Ġview . utils . extensions . add Classes Ċ import Ġview . utils . extensions . non Null Ċ import Ġview . utils . map Based . keys . Has Keys Ċ import Ġview . utils . map Based . keys . deleg ates . nullable . Bool RW Key Ċ import Ġview . utils . map Based . keys . deleg ates . nullable . Enum RW Key Ċ import Ġkotlin . browser . document Ċ Ċ open Ġclass ĠButton Renderer ( ĊĠĠĠĠĠĠĠ Ġview : ĠButton , ĊĠĠĠĠĠĠĠ Ġelement : ĠHTMLElement , ĊĠĠĠĠĠĠĠ Ġre Rendering : ĠBoolean Ġ= Ġtrue Ċ ): ĠAbstract View Renderer < Button >( view , Ġelement , Ġre Rendering ) Ġ{ ĊĊĠĠĠ Ġclass ĠButton Config : ĠHas Keys () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġkeys : ĠMutable Map < String , ĠAny ?> Ġ= Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠColor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRIMARY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACC ENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠType Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF AB , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFL AT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġri pple Ġby ĠBool RW Key ĊĠĠĠĠĠĠĠ Ġval Ġraise : ĠBoolean ? Ġby ĠBool RW Key ĊĠĠĠĠĠĠĠ Ġval Ġaccent Color Ġby ĠEnum RW Key ( Color . values ()) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġby ĠEnum RW Key ( Type . values ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbutton Config Ġ= ĠButton Config () ĊĊĠĠĠ Ġconstructor ( view : ĠButton ): Ġthis ( view , Ġdocument . createElement (" button ") Ġas ĠHTMLElement , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Extras Ġ= Ġview . web Extras ĊĠĠĠĠĠĠĠ Ġif Ġ( view Extras Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Config . keys Ġ= Ġview Extras . keys ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclasses : ĠMutable Set < String > Ġ= Ġmutable Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mdl - button ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mdl - js - button " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġapply Custom Config ( classes ) ĊĊĠĠĠĠĠĠĠ Ġelement . add Classes ( classes ) ĊĠĠĠĠĠĠĠ Ġelement . textContent Ġ= Ġview . text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Custom Config ( classes : ĠMutable Set < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( button Config . ripple ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġclasses Ġ+= Ġ" mdl - js - ripple - effect " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġclasses Ġ-= Ġ" mdl - js - ripple - effect " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Config . raise . non Null Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġclasses Ġ+= Ġ" mdl - button -- raised " Ġelse Ġclasses Ġ-= Ġ" mdl - button -- raised " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( button Config . accent Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĠButton Config . Color . NONE Ġ-> Ġclasses Ġ-= ĠlistOf (" mdl - button -- accent ", Ġ" mdl - button -- primary ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Config . Color . PRIMARY Ġ-> Ġclasses Ġ+= Ġ" mdl - button -- primary " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Config . Color . ACC ENT Ġ-> Ġclasses Ġ+= Ġ" mdl - button -- accent " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Config . type . non Null Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . toString () Ġ== ĠButton Config . Type . FAB . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses . add (" mdl - button -- fab ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses . remove (" mdl - button -- raised ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }