/** Ċ Ġ* Ġ@ license Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠGoogle ĠInc . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ċ Ġ* Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ package Ġar cs Ċ Ċ import Ġar cs . sdk . Utils . abort Ċ import Ġar cs . sdk . Utils . log Ċ import Ġar cs . sdk . wasm . W asm Handle Ċ import Ġkotlin . Exception Ċ Ċ /** Ċ Ġ* ĠSample ĠW ASM ĠParticle . Ċ Ġ*/ Ċ class ĠTest Particle Ġ: ĠAbstract Test Particle () Ġ{ ĊĊĠ Ġoverride Ġfun Ġon Handle Update ( handle : ĠW asm Handle ) Ġ{ ĊĠĠĠ Ġlog (" A Ġhandle Ġwas Ġupdated !") ĊĠĠĠ Ġif Ġ( handle . name . equals (" data ")) Ġ{ ĊĠĠĠĠĠ Ġlog (" data Ġwas Ġupdated ") ĊĠĠĠĠĠ Ġupdated Ġ= Ġ 1 ĊĠĠĠ Ġ} Ġelse Ġif Ġ( handle . name . equals (" info ")) Ġ{ ĊĠĠĠĠĠ Ġlog (" info Ġwas Ġupdated .") ĊĠĠĠĠĠ Ġupdated Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopulate Model ( slot Name : ĠString , Ġmodel : ĠMap < String , ĠAny >): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠ Ġval Ġdata Col Ġ= Ġif Ġ( updated Ġ== Ġ 1 ) Ġ" color : Ġblue ;" Ġelse Ġ"" ĊĠĠĠ Ġval Ġdata Str Ġ= Ġ"${ handles . data . fetch () }\ n " ĊĊĠĠĠ Ġval Ġinfo Col Ġ= Ġif Ġ( updated Ġ== Ġ 2 ) Ġ" color : Ġblue ;" Ġelse Ġ"" ĊĠĠĠ Ġvar Ġinfo Str Ġ= Ġ" Size : Ġ${ handles . info . size }\ n " ĊĠĠĠ Ġif Ġ(! handles . info . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠ Ġhandles . info . fetch All (). forEach Ġ{ Ġinfo Ġ-> ĊĠĠĠĠĠĠĠ Ġinfo Str Ġ+= Ġ"${ ( ++ i )}. Ġ$ info Ġ| Ġ\ n " ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġinfo Str Ġ= Ġ"< i >( empty )</ i >" ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap Of ( ĊĠĠĠĠĠ Ġ" data Col " Ġto Ġdata Col , ĊĠĠĠĠĠ Ġ" data Str " Ġto Ġdata Str , ĊĠĠĠĠĠ Ġ" info Col " Ġto Ġinfo Col , ĊĠĠĠĠĠ Ġ" info Str " Ġto Ġinfo Str ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Template ( slot Name : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġlog (" getting Ġtemplate ") ĊĊĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< style > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# data Ġ{{ data Col }} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# info Ġ{{ info Col }} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# panel Ġ{ Ġmargin : Ġ 1 0 px ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# panel Ġpre Ġ{ Ġmargin - left : Ġ 2 0 px ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth , td Ġ{ Ġpadding : Ġ 4 px Ġ 1 6 px ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ style > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġid =" panel "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< b Ġid =" data ">[ data ]</ b > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< pre >{{ data Str }}</ pre > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< b Ġid =" info ">[ info ]</ b > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< pre >{{ info Str }}</ pre > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< table > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< th > Singleton </ th > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< th > Collection </ th > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< th > Errors </ th > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td >< button Ġon - click =" add "> Add </ button ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td >< button Ġon - click =" store "> Store </ button ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< button Ġon - click =" throw "> Throw </ button > Ġ& nbsp ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< button Ġon - click =" abort "> Abort </ button > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td >< button Ġon - click =" datac lear "> Clear </ button ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td >< button Ġon - click =" remove "> Remove </ button ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< button Ġon - click =" assert "> Assert </ button > Ġ& nbsp ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< button Ġon - click =" exit "> Exit </ button > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< td >< button Ġon - click =" inf oc lear "> Clear </ button ></ td > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ table > """. trim Indent () ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġupdated Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġstore Count Ġ= Ġ 0 ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġevent Handler (" add ") Ġ{ ĊĠĠĠĠĠ Ġval ĠnewData Ġ= Ġhandles . data . fetch () Ġ?: ĠTest Particle _ Data ( ĊĠĠĠĠĠĠĠ Ġnum Ġ= Ġ 0 . 0 , ĊĠĠĠĠĠĠĠ Ġtxt Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġln k Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġfl g Ġ= Ġfalse ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġhandles . data . store ( ĊĠĠĠĠĠĠĠ ĠnewData . copy ( ĊĠĠĠĠĠĠĠĠĠ Ġnum Ġ= ĠnewData . num . let Ġ{ Ġit Ġ+ Ġ 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġtxt Ġ= Ġ"${ new Data . txt } !!!! !! " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġevent Handler (" datac lear ") Ġ{ ĊĠĠĠĠĠ Ġhandles . data . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġevent Handler (" store ") Ġ{ ĊĠĠĠĠĠ Ġval Ġinfo Ġ= ĠTest Particle _ Info ( ĊĠĠĠĠĠĠĠ Ġfor _ Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġval _ Ġ= Ġ 0 . 0 ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġhandles . info . store ( ĊĠĠĠĠĠĠĠ Ġinfo . copy ( ĊĠĠĠĠĠĠĠĠĠ Ġval _ Ġ= Ġ( handles . info . size Ġ+ Ġstore Count ). toDouble () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġevent Handler (" remove ") Ġ{ ĊĠĠĠĠĠ Ġval Ġiterator Ġ= Ġhandles . info . fetch All (). iterator () ĊĠĠĠĠĠ Ġif Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandles . info . remove ( iterator . next ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġevent Handler (" inf oc lear ") Ġ{ ĊĠĠĠĠĠ Ġhandles . info . clear () ĊĠĠĠ Ġ} ĊĠĠĠ Ġevent Handler (" throw ") Ġ{ ĊĠĠĠĠĠ Ġthrow ĠException (" this Ġmessage Ġdoesn 't Ġget Ġpassed Ġ( yet ?) ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġevent Handler (" assert ") Ġ{ ĊĠĠĠĠĠ Ġassert ( 2 Ġ+ Ġ 2 Ġ== Ġ 3 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġevent Handler (" abort ") Ġ{ ĊĠĠĠĠĠ Ġabort () ĊĠĠĠ Ġ} ĊĠĠĠ Ġevent Handler (" exit ") Ġ{ ĊĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit ( 1 ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ