package Ġcomponents . room Ċ Ċ import ĠLocal Data Ċ import Ġcomponents . Color Ċ import Ġcs stype . Align Self Ċ import Ġcs stype . Cursor Ċ import Ġcs stype . Display Ċ import Ġcs stype . Flex Ċ import Ġcs stype . Font Family Ċ import Ġcs stype . FontSize Ċ import Ġcs stype . Just ify Content Ċ import Ġcs stype . Just ify Items Ċ import Ġcs stype . List Style Type Ċ import Ġcs stype . Text Align Ċ import Ġcs stype . px Ċ import Ġexternal . Material Button Ċ import Ġkotlinx . browser . document Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . w 3 c . dom . HTML Button Element Ċ import Ġorg . w 3 c . dom . HTML Div Element Ċ import Ġorg . w 3 c . dom . HTMLElement Ċ import Ġorg . w 3 c . dom . HTML LI Element Ċ import Ġorg . w 3 c . dom . HTML U List Element Ċ import Ġorg . w 3 c . dom . get Ċ import Ġorg . w 3 c . dom . set Ċ import Ġreact . FC Ċ import Ġreact . Props Ċ import Ġreact . React Element Ċ import Ġreact . create Ċ import Ġreact . css . css Ċ import Ġreact . dom . events . MouseEvent Ċ import Ġreact . dom . html . React HTML . div Ċ import Ġreact . dom . html . React HTML . span Ċ import Ġreact . dom . html . React HTML . ul Ċ import Ġreact . dom . render Ċ Ċ // Ġhttps :// developer . mozilla . org / en - US / docs / Learn / HTML / How to / Use _ data _ attributes Ċ object ĠData Attribute Ġ{ ĊĠĠĠ Ġconst Ġval ĠIS _ MOUSE _ HIG HL IGHT ED Ġ= Ġ" is Mouse Highlight ed " ĊĠĠĠ Ġconst Ġval ĠIS _ V OTE _ HIG HL IGHT ED Ġ= Ġ" is Vote Highlight ed " Ċ } Ċ Ċ object ĠRoom UI Ġ{ ĊĠĠĠ Ġfun Ġcreate (): ĠReact Element Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Sync () ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom Component . create () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval Ġreveal Button Id Ġ= Ġ" reveal Button " Ċ private Ġconst Ġval Ġclear Button Id Ġ= Ġ" clear Button " Ċ private Ġconst Ġval Ġvote List Root Id Ġ= Ġ" vote List Root " Ċ Ċ private Ġval ĠRoom Component Ġ= ĠFC < Props > Ġ{ ĊĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . flex ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjustifyContent Ġ= ĠJust ify Content . center ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontFamily Ġ= ĠFont Family . mono space ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmarginTop Ġ= Ġ 2 0 . px ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLocal Data . vote Options . forEach Ġ{ Ġvote Option Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġvote Option . key ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . flex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 4 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 6 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ 6 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . GRE Y _ PRIMARY . as BackgroundColor Obj () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġ" pointer ". unsafe Cast < Cursor >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflex Ġ= Ġ" 1 ". unsafe Cast < Flex >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalign Self Ġ= ĠAlign Self . center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠFont Size . x Large ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ vote Option . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonMouse Over Ġ= ĠonMouse Over Card ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonMouse Out Ġ= ĠonMouse Out Card ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġvote Card Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . flex ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjustifyContent Ġ= ĠJust ify Content . center ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . center ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmarginTop Ġ= Ġ 2 0 . px ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . grid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginRight Ġ= Ġ 1 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Button Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Ġ= Ġ" contained " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ" medium " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Elevation Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Re veal " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġreveal Button Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġreveal Votes Button Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . grid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginLeft Ġ= Ġ 1 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Button Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Ġ= Ġ" contained " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ" medium " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Elevation Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Clear " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġclear Button Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġclear Votes Button Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmarginTop Ġ= Ġ 6 0 . px ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġvote List Root Id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . grid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjustify Items Ġ= ĠJust ify Items . center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Style Type Ġ= ĠList Style Type . none ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠonMouse Over Card Ġ= Ġ{ Ġevent : ĠMouseEvent < HTML Div Element , Ġ*> Ġ-> ĊĠĠĠ Ġval Ġcard Element Ġ= Ġevent . currentTarget Ġas ? ĠHTML Div Element ĊĠĠĠ Ġif Ġ( card Element Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard Element . dataset [ Data Attribute . IS _ MOUSE _ HIG HL IGHT ED ] Ġ= Ġ"${ true }" ĊĠĠĠĠĠĠĠ Ġupdate Card Style ( card Element ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠonMouse Out Card Ġ= Ġ{ Ġevent : ĠMouseEvent < HTML Div Element , Ġ*> Ġ-> ĊĠĠĠ Ġval Ġcard Element Ġ= Ġevent . currentTarget Ġas ? ĠHTML Div Element ĊĠĠĠ Ġif Ġ( card Element Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard Element . dataset [ Data Attribute . IS _ MOUSE _ HIG HL IGHT ED ] Ġ= Ġ"${ false }" ĊĠĠĠĠĠĠĠ Ġupdate Card Style ( card Element ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġupdate Card Style ( card Element : ĠHTML Div Element ) Ġ{ ĊĠĠĠ Ġval Ġis Mouse Highlight ed Ġ= Ġcard Element . dataset [ Data Attribute . IS _ MOUSE _ HIG HL IGHT ED ]. to Boolean () ĊĠĠĠ Ġval Ġis Vote Highlight ed Ġ= Ġcard Element . dataset [ Data Attribute . IS _ V OTE _ HIG HL IGHT ED ]. to Boolean () ĊĠĠĠ Ġval Ġvotes Re ve aled Ġ= ĠLocal Data . room ?. votes Re ve aled Ġ?: Ġfalse ĊĊĠĠĠ Ġcard Element . style . backgroundColor Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( is Vote Highlight ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Mouse Highlight ed Ġ&& Ġ! votes Re ve aled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . BLUE _ DARK . asString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . BLUE _ PRIMARY . asString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Mouse Highlight ed Ġ&& Ġ! votes Re ve aled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . GRE Y _ DARK . asString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . GRE Y _ PRIMARY . asString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcard Cursor Style Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( votes Re ve aled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" default " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pointer " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġcard Element . style . setProperty (" cursor ", Ġcard Cursor Style ) Ċ } Ċ Ċ private Ġfun Ġstart Sync () Ġ{ ĊĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġsync () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġupdate Room UI () Ġ{ ĊĠĠĠ Ġval Ġroom Ġ= ĠLocal Data . room ĊĠĠĠ Ġval ĠuserName Ġ= ĠLocal Data . userName ĊĠĠĠ Ġif Ġ( room Ġ== Ġnull Ġ|| ĠuserName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġuser Vote Ġ= Ġroom . participants . find Ġ{ Ġit . name Ġ== ĠuserName Ġ} ?. vote ĊĠĠĠ ĠLocal Data . vote Options . entries . forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġcard Element Ġ= Ġdocument . getElementById ( entry . key ) Ġas ? ĠHTML Div Element ĊĠĠĠĠĠĠĠ Ġif Ġ( card Element Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis V oted Ġ= Ġ( user Vote Ġ!= Ġnull Ġ&& Ġentry . value Ġ== Ġuser Vote ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Element . dataset [ Data Attribute . IS _ V OTE _ HIG HL IGHT ED ] Ġ= Ġ"$ is V oted " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Card Style ( card Element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġreveal Button Ġ= Ġdocument . getElementById ( reveal Button Id ) Ġas ĠHTML Button Element ĊĠĠĠ Ġval Ġclear Button Ġ= Ġdocument . getElementById ( clear Button Id ) Ġas ĠHTML Button Element ĊĊĠĠĠ Ġval Ġhas Votes Ġ= Ġroom . participants . any Ġ{ Ġit . vote Ġ!= Ġnull Ġ} ĊĠĠĠ Ġreveal Button . disabled Ġ= Ġ! has Votes Ġ|| Ġroom . votes Re ve aled ĊĠĠĠ Ġclear Button . disabled Ġ= Ġ! has Votes Ġ|| Ġ! room . votes Re ve aled ĊĠĠĠ Ġupdate ButtonStyle ( reveal Button ) ĊĠĠĠ Ġupdate ButtonStyle ( clear Button ) ĊĊĠĠĠ Ġval Ġvote List Element Ġ= Ġdocument . getElementById ( vote List Root Id ) Ġas ĠHTML U List Element ĊĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Child Ġ= Ġvote List Element . firstChild ĊĠĠĠĠĠĠĠ Ġif Ġ( firstChild Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvote List Element . removeChild ( firstChild ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġwhile ( vote List Element . firstChild Ġ!= Ġnull ) ĊĊĠĠĠ Ġroom . participants . forEach Ġ{ Ġparticipant Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( participant . vote Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġdocument . createElement (" li ") Ġas ĠHTML LI Element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvote List Element . appendChild ( new Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender ( User Vote Item ( participant , Ġroom . votes Re ve aled ). create (), Ġnew Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġupdate ButtonStyle ( button : ĠHTML Button Element ) Ġ{ ĊĠĠĠ Ġif Ġ( button . disabled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" background - color ", ĠColor . GRE Y _ PRIMARY . asString ()) ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" color ", ĠColor . GRE Y _ DARK . asString ()) ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" cursor ", Ġ" default ") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" background - color ", ĠColor . BLUE _ SECOND ARY . asString ()) ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" color ", ĠColor . WHITE . asString ()) ĊĠĠĠĠĠĠĠ Ġbutton . style . setProperty (" cursor ", Ġ" pointer ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġvote Card Clicked Ġ= Ġ{ Ġevent : ĠMouseEvent < HTMLElement , Ġ*> Ġ-> ĊĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvotes Re ve aled Ġ= ĠLocal Data . room ?. votes Re ve aled Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( votes Re ve aled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġevent . target Ġas ? ĠHTMLElement ĊĠĠĠĠĠĠĠ Ġvar Ġcard Id Ġ= Ġelement ?. id ĊĠĠĠĠĠĠĠ Ġif Ġ( card Id . isNull Or Blank ()) Ġ{ Ġ Ġ// ĠIf Ġuser Ġclick Ġon Ġspan Ġinstead Ġof Ġdiv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Id Ġ= Ġelement ?. parentElement ?. id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( card Id . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (" Could Ġnot Ġfind Ġcard ĠID ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvote Ġ= ĠLocal Data . vote Options [ card Id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (" Could Ġnot Ġfind Ġvote Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsend Vote ( vote ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠUnit Ċ } Ċ Ċ private Ġval Ġreveal Votes Button Clicked Ġ= Ġ{ Ġ_: ĠMouseEvent < HTMLElement , Ġ*> Ġ-> ĊĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġreveal Votes () ĊĠĠĠ Ġ} ĊĠĠĠ ĠUnit Ċ } Ċ Ċ private Ġval Ġclear Votes Button Clicked Ġ= Ġ{ Ġ_: ĠMouseEvent < HTMLElement , Ġ*> Ġ-> ĊĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Votes () ĊĠĠĠ Ġ} ĊĠĠĠ ĠUnit Ċ }