import Ġkotlinx . browser .* Ċ import Ġkotlinx . dom .* Ċ import Ġorg . w 3 c . dom .* Ċ import Ġorg . w 3 c . xhr .* Ċ Ċ val ĠAPI _ URL Ġ= Ġ" https :// poke api . co / api / v 2 " Ċ Ċ val Ġgeneration Values : ĠList < String > Ġ= ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" Generation I ", ĊĠĠĠĠĠĠĠ Ġ" Generation II ", ĊĠĠĠĠĠĠĠ Ġ" Generation III ", ĊĠĠĠĠĠĠĠ Ġ" Generation IV ", ĊĠĠĠĠĠĠĠ Ġ" Generation V ", ĊĠĠĠĠĠĠĠ Ġ" Generation VI ", ĊĠĠĠĠĠĠĠ Ġ" Generation V II ", ĊĠĠĠĠĠĠĠ Ġ" Generation V III ", ĊĠĠĠĠĠĠĠ Ġ" Generation Plus ") Ċ Ċ val Ġgeneration Keys : ĠList < String > Ġ= ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" 1 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 2 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 3 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 4 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 5 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 6 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 7 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" 8 Â ª ĠG era Ã§Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" Out ros ") Ċ Ċ val Ġtype Values : ĠList < String > Ġ= ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" Normal ", ĊĠĠĠĠĠĠĠ Ġ" Fire ", ĊĠĠĠĠĠĠĠ Ġ" Water ", ĊĠĠĠĠĠĠĠ Ġ" Electric ", ĊĠĠĠĠĠĠĠ Ġ" Gr ass ", ĊĠĠĠĠĠĠĠ Ġ" Ice ", ĊĠĠĠĠĠĠĠ Ġ" Fight ing ", ĊĠĠĠĠĠĠĠ Ġ" Po ison ", ĊĠĠĠĠĠĠĠ Ġ" Ground ", ĊĠĠĠĠĠĠĠ Ġ" F lying ", ĊĠĠĠĠĠĠĠ Ġ" P sy ch ic ", ĊĠĠĠĠĠĠĠ Ġ" Bug ", ĊĠĠĠĠĠĠĠ Ġ" Rock ", ĊĠĠĠĠĠĠĠ Ġ" Ghost ", ĊĠĠĠĠĠĠĠ Ġ" Dragon ", ĊĠĠĠĠĠĠĠ Ġ" Dark ", ĊĠĠĠĠĠĠĠ Ġ" Ste el ", ĊĠĠĠĠĠĠĠ Ġ" F air y ") Ċ Ċ val Ġtype Keys : ĠList < String > Ġ= ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" Normal ", ĊĠĠĠĠĠĠĠ Ġ" F ogo ", ĊĠĠĠĠĠĠĠ Ġ" Ãģ gu a ", ĊĠĠĠĠĠĠĠ Ġ" El Ã© tric o ", ĊĠĠĠĠĠĠĠ Ġ" Gram a ", ĊĠĠĠĠĠĠĠ Ġ" Ge lo ", ĊĠĠĠĠĠĠĠ Ġ" L ut ador ", ĊĠĠĠĠĠĠĠ Ġ" Ven en oso ", ĊĠĠĠĠĠĠĠ Ġ" T erra ", ĊĠĠĠĠĠĠĠ Ġ" Vo ador ", ĊĠĠĠĠĠĠĠ Ġ" Ps ÃŃ qu ico ", ĊĠĠĠĠĠĠĠ Ġ" In seto ", ĊĠĠĠĠĠĠĠ Ġ" Ped ra ", ĊĠĠĠĠĠĠĠ Ġ" F ant asma ", ĊĠĠĠĠĠĠĠ Ġ" Drag Ã£o ", ĊĠĠĠĠĠĠĠ Ġ" Not urn o ", ĊĠĠĠĠĠĠĠ Ġ" Met Ã¡ lic o ", ĊĠĠĠĠĠĠĠ Ġ" F ada ") Ċ Ċ val Ġlist Storage Pokemon : ĠMutable List < Pokemon > Ġ= Ġmutable ListOf () Ċ Ċ val Ġlist Storage Image Pokemon : ĠMutable List < Sprites > Ġ= Ġmutable ListOf () Ċ Ċ data Ġclass ĠAll API Pokemon ( ĊĠĠĠ Ġval Ġcount : ĠInt , ĊĠĠĠ Ġval Ġnext : ĠString , ĊĠĠĠ Ġval Ġprevious : ĠString ?, ĊĠĠĠ Ġval Ġresults : ĠArray < Pokemon > Ċ ) Ċ Ċ data Ġclass ĠType API Pokemon ( ĊĠĠĠ Ġval Ġdamage _ relations : ĠAny , ĊĠĠĠ Ġval Ġgame _ indices : ĠArray < Any >, ĊĠĠĠ Ġval Ġgeneration : ĠAny , ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġmove _ damage _ class : ĠAny , ĊĠĠĠ Ġval Ġmoves : ĠArray < Any >, ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġnames : ĠArray < Any >, ĊĠĠĠ Ġval Ġpokemon : ĠArray < Type Pokemon Result > Ċ ) Ċ Ċ data Ġclass ĠType Pokemon Result ( val Ġpokemon : ĠPokemon , Ġval Ġslot : ĠInt ) Ċ Ċ data Ġclass ĠPokemon ( val Ġname : ĠString , Ġval Ġurl : ĠString ) Ċ Ċ data Ġclass ĠPokemon Info ( ĊĠĠĠ Ġval Ġheight : ĠInt , ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġweight : ĠInt , ĊĠĠĠ Ġval Ġcover Url : ĠString , ĊĠĠĠ Ġval Ġtype : ĠList < String >, ĊĠĠĠ Ġval Ġabilities : ĠList < String > Ċ ) Ċ Ċ data Ġclass ĠPokemon API ( ĊĠĠĠ Ġval Ġabilities : ĠArray < Abilities >, ĊĠĠĠ Ġval Ġbase _ experience : ĠInt , ĊĠĠĠ Ġval Ġforms : ĠArray < Any >, ĊĠĠĠ Ġval Ġgame _ indices : ĠArray < Any >, ĊĠĠĠ Ġval Ġheight : ĠInt , ĊĠĠĠ Ġval Ġheld _ items : ĠArray < Any >, ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġis _ default : ĠBoolean , ĊĠĠĠ Ġval Ġlocation _ area _ en counters : ĠString , ĊĠĠĠ Ġval Ġmoves : ĠArray < Any >, ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġorder : ĠInt , ĊĠĠĠ Ġval Ġpast _ types : ĠArray < Any >, ĊĠĠĠ Ġval Ġspecies : ĠAny , ĊĠĠĠ Ġval Ġsprites : ĠSpr ites , ĊĠĠĠ Ġval Ġstats : ĠArray < Stats >, ĊĠĠĠ Ġval Ġtypes : ĠArray < Types >, ĊĠĠĠ Ġval Ġweight : ĠInt Ċ ) Ċ Ċ data Ġclass ĠTypes ( val Ġslot : ĠInt , Ġval Ġtype : ĠPokemon ) Ċ Ċ data Ġclass ĠAb ilities ( val Ġability : ĠPokemon , Ġval Ġis _ hidden : ĠBoolean , Ġval Ġslot : ĠInt ) Ċ Ċ data Ġclass ĠSpr ites ( ĊĠĠĠ Ġval Ġback _ default : ĠString , ĊĠĠĠ Ġval Ġback _ female : ĠString , ĊĠĠĠ Ġval Ġback _ sh iny : ĠString , ĊĠĠĠ Ġval Ġback _ sh iny _ female : ĠString , ĊĠĠĠ Ġval Ġfront _ default : ĠString , ĊĠĠĠ Ġval Ġfront _ female : ĠString , ĊĠĠĠ Ġval Ġfront _ sh iny : ĠString , ĊĠĠĠ Ġval Ġfront _ sh iny _ female : ĠString , ĊĠĠĠ Ġval Ġother : ĠAny Ċ ) Ċ Ċ data Ġclass ĠStats ( val Ġbase _ stat : ĠInt , Ġval Ġeffort : ĠInt , Ġval Ġstat : ĠAny ) Ċ Ċ interface ĠPokemon List Ġ{ ĊĠ Ġinterface ĠView Ġ{ ĊĠĠĠ Ġfun Ġshow P ok em ons ( pok em ons : ĠList < Pokemon >) ĊĠĠĠ Ġfun Ġshow Pokemon By Url ( pokemon : ĠPokemon Info ) ĊĠĠĠ Ġfun Ġnot Found List () ĊĠĠĠ Ġfun Ġshow Loader () ĊĠĠĠ Ġfun Ġhide Loader () ĊĠ Ġ} ĊĊĠ Ġinterface ĠPres enter Ġ{ ĊĠĠĠ Ġfun Ġattach ( view : ĠView ) ĊĠĠĠ Ġfun Ġload P ok em ons ( limit : ĠInt Ġ= Ġ 1 5 1 , Ġoffset : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġfun Ġload P ok em ons By Url ( pokemon Url : ĠString ) ĊĠĠĠ Ġfun Ġload Option P ok em ons ( limit : ĠInt Ġ= Ġ 1 5 1 , Ġoffset : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġfun Ġload P ok em ons ByType ( type Code : ĠInt ) ĊĊĠĠĠ Ġ// ĠDE VER IAM ĠEST AR ĠNO ĠCONT ROLL ER ĊĠĠĠ Ġfun ĠgetImage ( pokemon API : ĠPokemon API ): ĠSpr ites ĊĠĠĠ Ġfun Ġget Types ( pokemon API : ĠPokemon API ): ĠList < String > ĊĠĠĠ Ġfun Ġget Abilities ( pokemon API : ĠPokemon API ): ĠList < String > ĊĠĠĠ Ġfun Ġget Stats ( pokemon API : ĠPokemon API ): ĠList < Int > ĊĠĠĠ Ġfun Ġmanip ule Data ( response List : ĠList < Pokemon API >): ĠPokemon Info ĊĠĠĠ Ġ// Ġ---------------- -------- ĊĠ Ġ} ĊĊĠ Ġinterface ĠController Ġ{} Ċ } Ċ Ċ class ĠPokemon List Page ( private Ġval Ġpresenter : ĠPokemon List . Presenter ) Ġ: ĠPokemon List . View Ġ{ ĊĊĠ Ġprivate Ġval ĠonLoad Ġ= Ġdocument . getElementById (" loader ") Ġas ĠHTML Div Element ĊĠ Ġprivate Ġval Ġcontent Ġ= Ġdocument . getElementById (" content ") Ġas ĠHTML Div Element ĊĠ Ġprivate Ġval Ġmy Modal Ġ= Ġdocument . getElementById (" my Modal ") Ġas ĠHTML Div Element ĊĊĠ Ġprivate Ġval Ġcard Builder Ġ= ĠCard Builder () ĊĠ Ġprivate Ġval Ġmodal Builder Ġ= ĠModal Builder () ĊĊĠ Ġfun Ġshow ( limit : ĠInt Ġ= Ġ 1 5 1 , Ġoffset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġpresenter . attach ( this ) ĊĠĠĠ Ġpresenter . load P ok em ons ( limit , Ġoffset ) ĊĠ Ġ} ĊĊĠ Ġfun Ġshow By Url ( pokemon Url : ĠString ) Ġ{ ĊĠĠĠ Ġpresenter . attach ( this ) ĊĠĠĠ Ġpresenter . load P ok em ons By Url ( pokemon Url ) ĊĠ Ġ} ĊĊĠ Ġfun Ġshow ByType ( pokemon Type : ĠInt ) Ġ{ ĊĠĠĠ Ġpresenter . attach ( this ) ĊĠĠĠ Ġpresenter . load P ok em ons ByType ( pokemon Type ) ĊĠ Ġ} ĊĊĠ Ġfun ĠgetAll Option ( limit : ĠInt Ġ= Ġ 1 0 0 0 0 , Ġoffset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġshow () ĊĠĠĠ Ġpresenter . load Option P ok em ons ( limit , Ġoffset ) ĊĠ Ġ} ĊĊĠ Ġfun Ġmodal Config () Ġ{ ĊĠĠĠ Ġshow Modal () ĊĠĠĠ Ġwindow . onclick Ġ= ĊĠĠĠĠĠĠĠ Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . target Ġ== Ġmy Modal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Modal () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Element (" container Element ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow P ok em ons ( pok em ons : ĠList < Pokemon >) Ġ{ ĊĠĠĠ Ġremove Element (" not Found Card ") ĊĠĠĠ Ġpok em ons . forEach Ġ{ Ġcontent . appendChild ( card Builder . build ( it )) Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow Pokemon By Url ( pokemon : ĠPokemon Info ) Ġ{ ĊĠĠĠ Ġmodal Config () ĊĠĠĠ Ġmy Modal . appendChild ( modal Builder . build ( pokemon )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġnot Found List () Ġ{ ĊĠĠĠ Ġval Ġnot Found Card Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĠĠĠ Ġnot Found Card . innerHTML Ġ= Ġ" NÃ£o Ġcon segu imos Ġencontr ar Ġresultado Ġpara Ġess a Ġbus ca ." ĊĠĠĠ Ġnot Found Card . setAttribute (" id ", Ġ" not Found Card ") ĊĠĠĠ Ġ// Ġnot Found Card . classList . add (" eight bit - btn ") ĊĠĠĠ Ġcontent . appendChild ( not Found Card ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow Loader () Ġ{ ĊĠĠĠ ĠonLoad . style . visibility Ġ= Ġ" visible " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġhide Loader () Ġ{ ĊĠĠĠ ĠonLoad . style . visibility Ġ= Ġ" hidden " ĊĠ Ġ} ĊĊĠ Ġfun Ġshow Modal () Ġ{ ĊĠĠĠ Ġmy Modal . style . display Ġ= Ġ" block " ĊĠ Ġ} ĊĊĠ Ġfun Ġhide Modal () Ġ{ ĊĠĠĠ Ġmy Modal . style . display Ġ= Ġ" none " ĊĠ Ġ} Ċ } Ċ Ċ class ĠPokemon Presenter Ġ: ĠPokemon List . Presenter Ġ{ ĊĊĠ Ġprivate Ġlateinit Ġvar Ġview : ĠPokemon List . View ĊĊĠ Ġoverride Ġfun Ġattach ( view : ĠPokemon List . View ) Ġ{ ĊĠĠĠ Ġthis . view Ġ= Ġview ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġload P ok em ons ( limit : ĠInt , Ġoffset : ĠInt ) Ġ{ ĊĠĠĠ Ġview . show Loader () ĊĊĠĠĠ Ġget Async G amb i ( return All Url ( limit , Ġoffset )) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠ Ġif Ġ( response Ġ!== Ġ" error ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpok em ons Ġ= ĠJSON . parse < Array < All API Pokemon >>( response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpokemon sto List Ġ= Ġpok em ons [ 0 ]. results . toList () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pokemon sto List . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġview . not Found List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstorage List ( pokemon sto List ) ĊĠĠĠĠĠĠĠĠĠ Ġview . show P ok em ons ( pokemon sto List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġview . hide Loader () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġload P ok em ons ByType ( type Code : ĠInt ) Ġ{ ĊĠĠĠ Ġview . show Loader () ĊĊĠĠĠ Ġget Async G amb i ( returnType Url ( type Code )) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠ Ġif Ġ( response Ġ!== Ġ" error ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpok em ons Ġ= ĠJSON . parse < Array < Type API Pokemon >>( response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpokemon sto List Ġ= Ġpok em ons [ 0 ]. pokemon . toList () ĊĊĠĠĠĠĠĠĠ Ġval Ġmutable List State Ġ= Ġpokemon sto List . map Ġ{ Ġit . pokemon Ġ} ĊĊĠĠĠĠĠĠĠ Ġstorage List ( mutable List State ) ĊĊĠĠĠĠĠĠĠ Ġview . show P ok em ons ( mutable List State ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġview . hide Loader () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstorage Sprites ( sprites : ĠSpr ites ) Ġ{ ĊĠĠĠ Ġlist Storage Image Pokemon . clear () ĊĠĠĠ Ġlist Storage Image Pokemon . add ( sprites ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetImage ( pokemon API : ĠPokemon API ): ĠSpr ites Ġ{ ĊĠĠĠ Ġval Ġsprites Mutable List : ĠMutable List < Sprites > Ġ= Ġmutable ListOf ( pokemon API . sprites ) ĊĠĠĠ Ġstorage Sprites ( pokemon API . sprites ) ĊĠĠĠ Ġreturn Ġsprites Mutable List [ 0 ] ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Types ( pokemon API : ĠPokemon API ): ĠList < String > Ġ= ĊĠĠĠĠĠ Ġpokemon API . types . toList (). map Ġ{ Ġit . type Ġ}. map Ġ{ Ġit . name Ġ} ĊĊĠ Ġoverride Ġfun Ġget Abilities ( pokemon API : ĠPokemon API ): ĠList < String > Ġ= ĊĠĠĠĠĠ Ġpokemon API . abilities . toList (). map Ġ{ Ġit . ability Ġ}. map Ġ{ Ġit . name Ġ} ĊĊĠ Ġoverride Ġfun Ġget Stats ( pokemon API : ĠPokemon API ): ĠList < Int > Ġ= ĊĠĠĠĠĠ Ġpokemon API . stats . toList (). map Ġ{ Ġit . base _ stat Ġ} ĊĊĠ Ġoverride Ġfun Ġmanip ule Data ( response List : ĠList < Pokemon API >): ĠPokemon Info Ġ{ ĊĠĠĠ Ġval Ġmain List Ġ= Ġresponse List [ 0 ] ĊĊĠĠĠ Ġval Ġheight Ġ= Ġmain List . height ĊĠĠĠ Ġval Ġid Ġ= Ġmain List . id ĊĠĠĠ Ġval Ġname Ġ= Ġmain List . name ĊĠĠĠ Ġval Ġweight Ġ= Ġmain List . weight ĊĠĠĠ Ġval Ġcover Url Ġ= Ġif Has Image ( getImage ( main List ). front _ default ) ĊĠĠĠ Ġval Ġtype Ġ= Ġget Types ( main List ) ĊĠĠĠ Ġval Ġabilities Ġ= Ġget Abilities ( main List ) ĊĊĠĠĠ Ġval Ġstats Ġ= Ġget Stats ( main List ) ĊĠĠĠ Ġprintln ( stats ) ĊĊĠĠĠ Ġreturn ĠPokemon Info ( height , Ġid , Ġname , Ġweight , Ġcover Url , Ġtype , Ġabilities ) ĊĠ Ġ} ĊĊĠ Ġfun Ġif Has Image ( front Image : ĠString Ġ= Ġ" failed "): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( front Image Ġ!== Ġ" failed ") Ġ{ ĊĠĠĠĠĠ Ġfront Image ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ" assets / img / no _ image _ aval iable . png " ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġcreate List Option ( pokemon List : ĠList < String >) Ġ{ ĊĠĠĠ Ġval Ġpokemon List Options Ġ= Ġdocument . getElementById (" pokemon List Options ") Ġas ĠHTML DataList Element ĊĠĠĠ Ġpokemon List . forEach Ġ{ ĊĠĠĠĠĠ Ġval Ġoption Ġ= Ġdocument . createElement (" option ") Ġas ĠHT M LO ption Element ĊĠĠĠĠĠ Ġoption . setAttribute (" value ", Ġit ) ĊĠĠĠĠĠ Ġpokemon List Options . appendChild ( option ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġload P ok em ons By Url ( pokemon Url : ĠString ) Ġ{ ĊĠĠĠ Ġview . show Loader () ĊĠĠĠ Ġget Async G amb i ( pokemon Url ) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠ Ġif Ġ( response Ġ!== Ġ" error ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpokemon Ġ= ĠJSON . parse < Array < Pokemon API >>( response ) ĊĠĠĠĠĠĠĠ Ġview . show Pokemon By Url ( manip ule Data ( pokemon . toList ())) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġview . hide Loader () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġload Option P ok em ons ( limit : ĠInt , Ġoffset : ĠInt ) Ġ{ ĊĠĠĠ Ġview . show Loader () ĊĠĠĠ Ġget Async G amb i ( return All Url ( limit , Ġoffset )) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠ Ġif Ġ( response Ġ!== Ġ" error ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpok em ons Ġ= ĠJSON . parse < Array < All API Pokemon >>( response ) ĊĠĠĠĠĠĠĠ Ġval Ġpokemon sto List Ġ= Ġpok em ons [ 0 ]. results . toList () ĊĠĠĠĠĠĠĠ Ġval Ġarray Pokemon Ġ= Ġpokemon sto List . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠ Ġcreate List Option ( array Pokemon ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġview . hide Loader () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Async G amb i ( url : ĠString , Ġcallback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġxml Http Ġ= ĠXMLHttpRequest () ĊĊĠĠĠ Ġfun ĠonSuccess Handler (): ĠUnit Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcallback . invoke (" [" Ġ+ Ġxml Http . responseText Ġ+ Ġ"] ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonError Handler (): ĠUnit Ġ{ ĊĠĠĠĠĠ Ġshow Error Dialog (" H ou ve Ġum Ġerro Ġde Ġconex Ã£o ĠðŁĺ ł . ĠT ente Ġnov amente ĠðŁĺ ŀ .") ĊĠĠĠĠĠ Ġreturn Ġcallback . invoke (" error ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon NotFound Handler (): ĠUnit Ġ{ ĊĠĠĠĠĠ Ġshow Error Dialog (" NÃ£o Ġcon segu imos Ġencontr ar Ġesse Ġresultado ĠðŁĺ ĵ .") ĊĠĠĠĠĠ Ġreturn Ġcallback . invoke (" error ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Timeout Handler (): ĠUnit Ġ{ ĊĠĠĠĠĠ Ġshow Error Dialog (" Temp o Ġde Ġconex Ã£o Ġes got ado ĠðŁĺ ¥ . ĠT ente Ġnov amente Ġmais Ġtar de ĠðŁĻ Ħ .") ĊĠĠĠĠĠ Ġreturn Ġcallback . invoke (" error ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonLoad Handler (): ĠUnit Ġ{ ĊĠĠĠĠĠ Ġif Ġ( xml Http . readyState Ġ== Ġ 4 . to Short () Ġ&& Ġxml Http . status Ġ== Ġ 2 0 0 . to Short ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠonSuccess Handler () ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( xml Http . status Ġ== Ġ 4 0 4 . to Short ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġon NotFound Handler () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġxml Http . open (" GET ", Ġurl ) ĊĊĠĠĠ Ġxml Http . timeout Ġ= Ġ 5 0 0 0 ĊĊĠĠĠ Ġxml Http . onload Ġ= Ġ{ ĠonLoad Handler () Ġ} ĊĊĠĠĠ Ġxml Http . onerror Ġ= Ġ{ ĠonError Handler () Ġ} ĊĊĠĠĠ Ġxml Http . ont ime out Ġ= Ġ{ Ġon Timeout Handler () Ġ} ĊĊĠĠĠ Ġxml Http . send () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstorage List ( pok em ons List : ĠList < Pokemon >) Ġ{ ĊĠĠĠ Ġlist Storage Pokemon . clear () ĊĠĠĠ Ġpok em ons List . forEach Ġ{ Ġlist Storage Pokemon . add ( it ) Ġ} ĊĠ Ġ} Ċ } Ċ Ċ class ĠCard Builder Ġ{ ĊĊĠ Ġfun Ġbuild ( pokemon : ĠPokemon ): ĠElement Ġ{ ĊĠĠĠ Ġval Ġcontainer Element Card Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġtitle Element Ġ= Ġdocument . createElement (" span ") Ġas ĠHTML Span Element ĊĊĠĠĠ Ġval Ġid Element Ġ= Ġdocument . createElement (" span ") Ġas ĠHTML Span Element ĊĊĠĠĠ Ġcontainer Element Card . setAttribute (" id ", Ġ" container Element Card ") ĊĊĠĠĠ Ġbind ( ĊĠĠĠĠĠĠĠ Ġpokemon Ġ= Ġpokemon , Ġcontainer Element Card , Ġtitle Element Ġ= Ġtitle Element , Ġid Element Ġ= Ġid Element ) ĊĊĠĠĠ Ġapply Style ( container Element Card , Ġtitle Element Ġ= Ġtitle Element , Ġid Element Ġ= Ġid Element ) ĊĊĠĠĠ Ġcontainer Element Card . appendChild ( title Element , Ġid Element ) ĊĊĠĠĠ Ġreturn Ġcontainer Element Card ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġapply Style ( ĊĠĠĠĠĠ Ġcontainer Element : ĠHTML Div Element , ĊĠĠĠĠĠ Ġtitle Element : ĠHTML Span Element , ĊĠĠĠĠĠ Ġid Element : ĠHTML Span Element ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġcontainer Element . classList . add (" card ", Ġ" ripple ", Ġ" card - shadow ", Ġ" eight bit - btn ") ĊĠĠĠ Ġtitle Element . classList . add (" text - title ", Ġ" float - left ", Ġ" game - font ") ĊĠĠĠ Ġid Element . classList . add (" id - details ", Ġ" float - right ", Ġ" game - font ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbind ( ĊĠĠĠĠĠ Ġpokemon : ĠPokemon , ĊĠĠĠĠĠ Ġcontainer Element Card : ĠHTML Div Element , ĊĠĠĠĠĠ Ġtitle Element : ĠHTML Span Element , ĊĠĠĠĠĠ Ġid Element : ĠHTML Span Element ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġcontainer Element Card . setAttribute (" title ", Ġ"# ${ pokemon . url . split ("/ ")[ 6 ]} ") ĊĠĠĠ Ġtitle Element . innerText Ġ= Ġ"${ pokemon . name }" ĊĠĠĠ Ġid Element . innerText Ġ= Ġ"# ${ pokemon . url . split ("/ ")[ 6 ]}" ĊĠĠĠ Ġcontainer Element Card . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 2 ") ĊĠĠĠĠĠĠĠĠĠ Ġinit Page (). show By Url ( pokemon . url ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġcontainer Element Card . addEventListener (" mouseover ", Ġ{ Ġinit Sound (" bit _ 1 ") Ġ}) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠElement . appendChild ( var arg Ġelements : ĠElement ) Ġ{ ĊĠĠĠ Ġelements . forEach Ġ{ Ġthis . appendChild ( it ) Ġ} ĊĠ Ġ} Ċ } Ċ Ċ class ĠModal Builder Ġ{ ĊĊĠ Ġfun Ġbuild ( pokemon : ĠPokemon Info ): ĠElement Ġ{ ĊĠĠĠ Ġval Ġcontainer Element Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġcover Url Ġ= Ġdocument . createElement (" img ") Ġas ĠHTML Image Element ĊĊĠĠĠ Ġval Ġtype Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġname Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġid Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġheight Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġval Ġweight Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġ// Ġ------------- ĊĠĠĠ Ġval Ġabilities Element Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĠĠĠ Ġ// Ġ------------- ĊĊĠĠĠ Ġ// Ġ------- ĊĠĠĠ Ġval Ġcontainer Element Button Sprite Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĠĠĠ Ġval Ġf em Button Ġ= Ġdocument . createElement (" button ") Ġas ĠHTML Button Element ĊĠĠĠ Ġval Ġm asc Button Ġ= Ġdocument . createElement (" button ") Ġas ĠHTML Button Element ĊĠĠĠ Ġval Ġrotate Button Ġ= Ġdocument . createElement (" button ") Ġas ĠHTML Button Element ĊĠĠĠ Ġ// Ġ------- ĊĊĠĠĠ Ġval Ġnext Button Ġ= Ġdocument . createElement (" button ") Ġas ĠHTML Button Element ĊĊĠĠĠ Ġval Ġprevious Button Ġ= Ġdocument . createElement (" button ") Ġas ĠHTML Button Element ĊĊĠĠĠ Ġbind ( ĊĠĠĠĠĠĠĠ Ġpokemon Ġ= Ġpokemon , ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠ Ġcover Url Ġ= Ġcover Url , ĊĠĠĠĠĠĠĠ Ġweight Ġ= Ġweight , ĊĠĠĠĠĠĠĠ Ġf em Button Ġ= Ġf em Button , ĊĠĠĠĠĠĠĠ Ġm asc Button Ġ= Ġm asc Button , ĊĠĠĠĠĠĠĠ Ġrotate Button Ġ= Ġrotate Button , ĊĠĠĠĠĠĠĠ Ġnext Button Ġ= Ġnext Button , ĊĠĠĠĠĠĠĠ Ġprevious Button Ġ= Ġprevious Button , ĊĠĠĠĠĠĠĠ Ġabilities Element Ġ= Ġabilities Element , ĊĠĠĠĠĠĠĠ Ġcontainer Element Button Sprite Ġ= Ġcontainer Element Button Sprite ) ĊĊĠĠĠ Ġapply Style ( ĊĠĠĠĠĠĠĠ Ġcontainer Element , ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠ Ġcover Url Ġ= Ġcover Url , ĊĠĠĠĠĠĠĠ Ġweight Ġ= Ġweight , ĊĠĠĠĠĠĠĠ Ġf em Button Ġ= Ġf em Button , ĊĠĠĠĠĠĠĠ Ġm asc Button Ġ= Ġm asc Button , ĊĠĠĠĠĠĠĠ Ġrotate Button Ġ= Ġrotate Button , ĊĠĠĠĠĠĠĠ Ġnext Button Ġ= Ġnext Button , ĊĠĠĠĠĠĠĠ Ġprevious Button Ġ= Ġprevious Button , ĊĠĠĠĠĠĠĠ Ġabilities Element Ġ= Ġabilities Element , ĊĠĠĠĠĠĠĠ Ġcontainer Element Button Sprite Ġ= Ġcontainer Element Button Sprite ) ĊĊĠĠĠ Ġset Attributes ( ĊĠĠĠĠĠĠĠ Ġpokemon Ġ= Ġpokemon , ĊĠĠĠĠĠĠĠ Ġcontainer Element , ĊĠĠĠĠĠĠĠ Ġcover Url Ġ= Ġcover Url , ĊĠĠĠĠĠĠĠ Ġf em Button Ġ= Ġf em Button , ĊĠĠĠĠĠĠĠ Ġprevious Button Ġ= Ġprevious Button , ĊĠĠĠĠĠĠĠ Ġnext Button Ġ= Ġnext Button , ĊĠĠĠĠĠĠĠ Ġrotate Button Ġ= Ġrotate Button ) ĊĊĠĠĠ Ġval Ġabilities Hover Ġ= Ġdocument . createElement (" div ") Ġas ĠHTML Div Element ĊĠĠĠ Ġabilities Hover . innerHTML Ġ= Ġ"< span Ġclass =\" hover - abil it ie \"> â ļ Ķ </ span >" ĊĠĠĠ Ġabilities Hover . addEventListener (" mouseover ", Ġ{ Ġabilities Element . classList . remove (" hidden ") Ġ}) ĊĠĠĠ Ġabilities Hover . addEventListener (" mouseout ", Ġ{ Ġabilities Element . classList . add (" hidden ") Ġ}) ĊĊĠĠĠ Ġcontainer Element . appendChild ( ĊĠĠĠĠĠĠĠ Ġcover Url , ĊĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠ Ġheight , ĊĠĠĠĠĠĠĠ Ġweight , ĊĠĠĠĠĠĠĠ Ġcontainer Element Button Sprite , ĊĠĠĠĠĠĠĠ Ġprevious Button , ĊĠĠĠĠĠĠĠ Ġnext Button , ĊĠĠĠĠĠĠĠ Ġabilities Hover , ĊĠĠĠĠĠĠĠ Ġabilities Element ) ĊĊĠĠĠ Ġreturn Ġcontainer Element ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġapply Style ( ĊĠĠĠĠĠ Ġcontainer Element : ĠHTML Div Element , ĊĠĠĠĠĠ Ġheight : ĠHTML Div Element , ĊĠĠĠĠĠ Ġid : ĠHTML Div Element , ĊĠĠĠĠĠ Ġname : ĠHTML Div Element , ĊĠĠĠĠĠ Ġtype : ĠHTML Div Element , ĊĠĠĠĠĠ Ġcover Url : ĠHTML Image Element , ĊĠĠĠĠĠ Ġweight : ĠHTML Div Element , ĊĠĠĠĠĠ Ġf em Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġm asc Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġrotate Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġnext Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġprevious Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġabilities Element : ĠHTML Div Element , ĊĠĠĠĠĠ Ġcontainer Element Button Sprite : ĠHTML Div Element ĊĠ Ġ) Ġ{ ĊĊĠĠĠ Ġcontainer Element . classList . add (" modal - content ", ĠreturnType Color ( type . children [ 0 ]?. textContent )) ĊĠĠĠ Ġcover Url . classList . add (" card - cover - image ") ĊĠĠĠ Ġname . classList . add (" card - pokemon - name ", Ġ" float - center ", Ġ" to Upper ", Ġ" game - font ") ĊĠĠĠ Ġtype . classList . add (" card - list ", Ġ" game - font ") ĊĠĠĠ Ġheight . classList . add (" game - font ", Ġ" card - list - height ") ĊĠĠĠ Ġid . classList . add (" card - id ", Ġ" game - font ") ĊĠĠĠ Ġweight . classList . add (" game - font ", Ġ" card - list - height ") ĊĠĠĠ Ġf em Button . classList . add (" sprite - button ", Ġ" f em - button ") ĊĠĠĠ Ġm asc Button . classList . add (" sprite - button ", Ġ" mas c - button ") ĊĠĠĠ Ġrotate Button . classList . add (" sprite - button ", Ġ" rotate - button ") ĊĠĠĠ Ġnext Button . classList . add (" pass - button ", Ġ" next - button ") ĊĠĠĠ Ġprevious Button . classList . add (" pass - button ", Ġ" previous - button ") ĊĠĠĠ Ġabilities Element . classList . add (" hidden ", Ġ" abilities - div ") ĊĠĠĠ Ġcontainer Element Button Sprite . classList . add (" content - sprite - button ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbind ( ĊĠĠĠĠĠ Ġpokemon : ĠPokemon Info , ĊĠĠĠĠĠ Ġheight : ĠHTML Div Element , ĊĠĠĠĠĠ Ġid : ĠHTML Div Element , ĊĠĠĠĠĠ Ġname : ĠHTML Div Element , ĊĠĠĠĠĠ Ġtype : ĠHTML Div Element , ĊĠĠĠĠĠ Ġcover Url : ĠHTML Image Element , ĊĠĠĠĠĠ Ġweight : ĠHTML Div Element , ĊĠĠĠĠĠ Ġf em Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġm asc Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġrotate Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġnext Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġprevious Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġabilities Element : ĠHTML Div Element , ĊĠĠĠĠĠ Ġcontainer Element Button Sprite : ĠHTML Div Element ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġmodal Ġ= Ġdocument . getElementById (" my Modal ") Ġas ĠHTML Div Element ĊĊĠĠĠ Ġheight . innerHTML Ġ= Ġreturn Height ( pokemon . height ) ĊĊĠĠĠ Ġid . innerHTML Ġ= Ġ"# ${ pokemon . id . toString () }" ĊĊĠĠĠ Ġname . innerHTML Ġ= Ġpokemon . name ĊĊĠĠĠ Ġtype . innerHTML Ġ= Ġpokemon . type . join ToString ( separator Ġ= Ġ"") Ġ{ Ġreturn List Types ( it ) Ġ} ĊĊĠĠĠ Ġabilities Element . innerHTML Ġ= ĊĠĠĠĠĠĠĠ Ġpokemon . abilities . join ToString ( separator Ġ= Ġ"") Ġ{ Ġreturn List Abilities ( it ) Ġ} ĊĊĠĠĠ Ġcover Url . src Ġ= Ġpokemon . cover Url ĊĊĠĠĠ Ġweight . innerHTML Ġ= Ġreturn Weight ( pokemon . weight ) ĊĊĠĠĠ Ġf em Button . innerHTML Ġ= Ġgenerate Icon (" ven us ") ĊĊĠĠĠ Ġm asc Button . innerHTML Ġ= Ġgenerate Icon (" mars ") ĊĊĠĠĠ Ġrotate Button . innerHTML Ġ= Ġgenerate Icon (" sync - alt ") ĊĊĠĠĠ Ġnext Button . innerHTML Ġ= Ġgenerate Icon (" step - forward ") ĊĊĠĠĠ Ġprevious Button . innerHTML Ġ= Ġgenerate Icon (" step - backward ") ĊĊĠĠĠ Ġrotate Button . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 4 ") ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( cover Url . src . split ("/ ")[ 8 ] Ġ== Ġ" back ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cover Url . src . split ("/ ")[ 9 ] Ġ== Ġ" female ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. front _ female }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. front _ default }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cover Url . src . split ("/ ")[ 8 ] Ġ== Ġ" female ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. back _ female }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Storage Image Pokemon [ 0 ]. back _ default Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ" assets / img / no _ image _ aval iable . png ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. back _ default }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġf em Button . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 4 ") ĊĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. front _ female }") ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġm asc Button . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 4 ") ĊĠĠĠĠĠĠĠĠĠ Ġcover Url . setAttribute (" src ", Ġ"${ list Storage Image Pokemon [ 0 ]. front _ default }") ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġnext Button . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 3 ") ĊĠĠĠĠĠĠĠĠĠ Ġremove Element (" container Element ") ĊĠĠĠĠĠĠĠĠĠ Ġinit Page (). show By Url ( return ById Url ( pokemon . id Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprevious Button . addEventListener ( ĊĠĠĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 3 ") ĊĠĠĠĠĠĠĠĠĠ Ġremove Element (" container Element ") ĊĠĠĠĠĠĠĠĠĠ Ġinit Page (). show By Url ( return ById Url ( pokemon . id Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġcontainer Element Button Sprite . appendChild ( rotate Button , Ġm asc Button , Ġf em Button ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Attributes ( ĊĠĠĠĠĠ Ġpokemon : ĠPokemon Info , ĊĠĠĠĠĠ Ġcontainer Element : ĠHTML Div Element , ĊĠĠĠĠĠ Ġcover Url : ĠHTML Image Element , ĊĠĠĠĠĠ Ġf em Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġprevious Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġnext Button : ĠHTML Button Element , ĊĠĠĠĠĠ Ġrotate Button : ĠHTML Button Element ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġcover Url . setAttribute (" alt ", Ġ" Pokemon Ġde Ġf rente ") ĊĊĠĠĠ Ġcover Url . setAttribute (" draggable ", Ġ" false ") ĊĊĠĠĠ Ġcover Url . setAttribute (" loading ", Ġ" lazy ") ĊĊĠĠĠ Ġcontainer Element . setAttribute (" id ", Ġ" container Element ") ĊĊĠĠĠ Ġif Ġ( list Storage Image Pokemon [ 0 ]. front _ female Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġf em Button . setAttribute (" disabled ", Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( list Storage Image Pokemon [ 0 ]. back _ default Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġrotate Button . setAttribute (" disabled ", Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( pokemon . id Ġ== Ġ 1 Ġ|| Ġpokemon . id Ġ== Ġ 1 0 0 0 1 ) Ġ{ ĊĠĠĠĠĠ Ġprevious Button . setAttribute (" disabled ", Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( pokemon . id Ġ== Ġ 8 9 8 Ġ|| Ġpokemon . id Ġ== Ġ 1 0 2 2 0 ) Ġ{ ĊĠĠĠĠĠ Ġnext Button . setAttribute (" disabled ", Ġ" true ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġgenerate Icon ( icon : ĠString ): ĠString Ġ= Ġ"< i Ġclass =\" fa Ġfa - lg Ġfa -${ icon }\ "></ i >" ĊĊĠ Ġprivate Ġfun ĠreturnType Color ( type : ĠString ?): ĠString Ġ= Ġ" type -${ type }" ĊĊĠ Ġprivate Ġfun Ġreturn List Types ( type : ĠString ): ĠString Ġ= Ġ"< li Ġclass =\" type -${ type }\ ">${ type }</ li >" ĊĊĠ Ġprivate Ġfun Ġreturn List Abilities ( abilities : ĠString ): ĠString Ġ= ĊĠĠĠĠĠ Ġ"< li Ġclass =\" abilities -${ abilities }\ ">${ abilities }</ li >" ĊĊĠ Ġprivate Ġfun Ġreturn Height ( height : ĠInt ): ĠString Ġ= ĊĠĠĠĠĠ Ġif Ġ( height . toString (). length Ġ> Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ" Alt ura : Ġ${ height . toString ()[ 0 ]} ${ height . toString ()[ 1 ]}, ${ height . toString ()[ 2 ]} m " ĊĠĠĠĠĠ Ġelse Ġif Ġ( height . toString (). length Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ" Alt ura : Ġ${ height . toString ()[ 0 ]}, ${ height . toString ()[ 1 ]} m " ĊĠĠĠĠĠ Ġelse Ġ" Alt ura : Ġ 0 .${ height . toString ()} m " ĊĊĠ Ġprivate Ġfun Ġreturn Weight ( weight : ĠInt ): ĠString Ġ= ĊĠĠĠĠĠ Ġwhen Ġ( weight . toString (). length ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" Pes o : Ġ 0 , ${ weight . toString ()[ 0 ]} kg " ĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ" Pes o : Ġ${ weight . toString ()[ 0 ]}, ${ weight . toString ()[ 1 ]} kg " ĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ" Pes o : Ġ${ weight . toString ()[ 0 ]} ${ weight . toString ()[ 1 ]}, ${ weight . toString ()[ 2 ]} kg " ĊĠĠĠĠĠĠĠĠ 4 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Pes o : Ġ${ weight . toString ()[ 0 ]} ${ weight . toString ()[ 1 ]} ${ weight . toString ()[ 2 ]}, ${ weight . toString ()[ 3 ]} kg " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Pes o : Ġ?? ?? , ? kg " ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠElement . appendChild ( var arg Ġelements : ĠElement ) Ġ{ ĊĠĠĠ Ġelements . forEach Ġ{ Ġthis . appendChild ( it ) Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġshow Error Dialog ( type Error : ĠString ) Ġ{ ĊĠ Ġval Ġerror Dialog Ġ= Ġdocument . getElementById (" error Dialog ") Ġas ĠHTML Div Element ĊĠ Ġval Ġerror Dialog Content Ġ= Ġdocument . getElementById (" error Dialog Content ") Ġas ĠHTML Div Element ĊĠ Ġerror Dialog Content . innerText Ġ= Ġtype Error ĊĠ Ġerror Dialog . classList . remove (" hidden ") ĊĠ Ġerror Dialog . classList . add (" loader ") Ċ } Ċ Ċ fun Ġreturn All Url ( limit : ĠInt Ġ= Ġ 1 5 1 , Ġoffset : ĠInt Ġ= Ġ 0 ): ĠString Ġ= ĊĠĠĠ Ġ"${ API _ URL }/ pokemon ? limit =${ limit }& offset =${ offset }" Ċ Ċ fun ĠreturnType Url ( type : ĠInt Ġ= Ġ 1 ): ĠString Ġ= Ġ"${ API _ URL }/ type /${ type }/ " Ċ Ċ fun Ġreturn ById Url ( id : ĠInt Ġ= Ġ 1 ): ĠString Ġ= Ġ"${ API _ URL }/ pokemon /${ id }/ " Ċ Ċ fun Ġreturn ByName Url ( name : ĠString Ġ= Ġ" bul bas aur "): ĠString Ġ= Ġ"${ API _ URL }/ pokemon /${ name }/ " Ċ Ċ fun Ġinit Page (): ĠPokemon List Page Ġ= ĠPokemon List Page ( Pokemon Presenter ()) Ċ Ċ fun Ġremove Element ( id : ĠString ) Ġ{ ĊĠ Ġval Ġelement To Destroy Ġ= Ġdocument . getElementById ("${ id }") ĊĠ Ġelement To Destroy ?. remove () ĊĠ Ġelement To Destroy ?. parentNode ?. removeChild ( element To Destroy ) Ċ } Ċ Ċ fun Ġdestroy Old List () Ġ{ ĊĠ Ġval Ġcontent Ġ= Ġdocument . getElementById (" content ") Ġas ĠHTML Div Element ĊĠ Ġcall To Destroy ( content . child Element Count , Ġ" container Element Card ") Ċ } Ċ Ċ fun Ġdestroy Old Select () Ġ{ ĊĠ Ġval Ġselect Generation Ġ= Ġdocument . getElementById (" select Generation ") Ġas ĠHTML Select Element ĊĠ Ġcall To Destroy ( select Generation . child Element Count , Ġ" option Insert ") Ċ } Ċ Ċ fun Ġcall To Destroy ( value : ĠInt , Ġid : ĠString ) Ġ{ ĊĠ Ġ( 0 .. ( value Ġ- Ġ 1 )). toList (). forEach Ġ{ Ġremove Element ("${ id }") Ġ} Ċ } Ċ Ċ fun ĠgetValue Generation ( generation : ĠString ) Ġ= ĊĠĠĠ Ġwhen Ġ( generation ) Ġ{ ĊĠĠĠĠĠ Ġ" Generation I " Ġ-> ĠarrayOf ( 1 5 1 , Ġ 0 ) ĊĠĠĠĠĠ Ġ" Generation II " Ġ-> ĠarrayOf ( 1 0 0 , Ġ 1 5 1 ) ĊĠĠĠĠĠ Ġ" Generation III " Ġ-> ĠarrayOf ( 1 3 5 , Ġ 2 5 1 ) ĊĠĠĠĠĠ Ġ" Generation IV " Ġ-> ĠarrayOf ( 1 0 7 , Ġ 3 8 6 ) ĊĠĠĠĠĠ Ġ" Generation V " Ġ-> ĠarrayOf ( 1 5 6 , Ġ 4 9 3 ) ĊĠĠĠĠĠ Ġ" Generation VI " Ġ-> ĠarrayOf ( 7 2 , Ġ 6 4 9 ) ĊĠĠĠĠĠ Ġ" Generation V II " Ġ-> ĠarrayOf ( 8 8 , Ġ 7 2 1 ) ĊĠĠĠĠĠ Ġ" Generation V III " Ġ-> ĠarrayOf ( 8 9 , Ġ 8 0 9 ) ĊĠĠĠĠĠ Ġelse Ġ-> ĠarrayOf ( 2 2 0 , Ġ 8 9 8 ) ĊĠĠĠ Ġ} Ċ Ċ fun Ġget ValueType ( type : ĠString ) Ġ= ĊĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠ Ġ" Normal " Ġ-> Ġ 1 ĊĠĠĠĠĠ Ġ" Fight ing " Ġ-> Ġ 2 ĊĠĠĠĠĠ Ġ" F lying " Ġ-> Ġ 3 ĊĠĠĠĠĠ Ġ" Po ison " Ġ-> Ġ 4 ĊĠĠĠĠĠ Ġ" Ground " Ġ-> Ġ 5 ĊĠĠĠĠĠ Ġ" Rock " Ġ-> Ġ 6 ĊĠĠĠĠĠ Ġ" Bug " Ġ-> Ġ 7 ĊĠĠĠĠĠ Ġ" Ghost " Ġ-> Ġ 8 ĊĠĠĠĠĠ Ġ" Ste el " Ġ-> Ġ 9 ĊĠĠĠĠĠ Ġ" Fire " Ġ-> Ġ 1 0 ĊĠĠĠĠĠ Ġ" Water " Ġ-> Ġ 1 1 ĊĠĠĠĠĠ Ġ" Gr ass " Ġ-> Ġ 1 2 ĊĠĠĠĠĠ Ġ" Electric " Ġ-> Ġ 1 3 ĊĠĠĠĠĠ Ġ" P sy ch ic " Ġ-> Ġ 1 4 ĊĠĠĠĠĠ Ġ" Ice " Ġ-> Ġ 1 5 ĊĠĠĠĠĠ Ġ" Dragon " Ġ-> Ġ 1 6 ĊĠĠĠĠĠ Ġ" Dark " Ġ-> Ġ 1 7 ĊĠĠĠĠĠ Ġelse Ġ-> Ġ 1 8 ĊĠĠĠ Ġ} Ċ Ċ fun Ġsearch By Value ( generation : ĠString ) Ġ{ ĊĠ Ġdestroy Old List () ĊĠ Ġif Ġ( generation . length Ġ>= Ġ 1 1 ) Ġ{ ĊĠĠĠ Ġval Ġrange For Search Ġ= ĠgetValue Generation ( generation ) ĊĠĠĠ Ġinit Page (). show ( range For Search [ 0 ], Ġrange For Search [ 1 ]) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġinit Page (). show ByType ( getValue Type ( generation )) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġinit Sound ( song : ĠString ) Ġ{ ĊĠ Ġval Ġaudio Ġ= ĠAudio (" assets / song /${ song }. mp 3 ") Ġas ĠHTML Audio Element ĊĠ Ġaudio . play () ĊĠ Ġaudio . muted Ġ= Ġfalse Ċ } Ċ Ċ fun Ġinit Button Elements () Ġ{ ĊĠ Ġval Ġsearch Gener atio Button Ġ= Ġdocument . getElementById (" search Gener atio Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġasc Button Ġ= Ġdocument . getElementById (" asc Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġdesc Button Ġ= Ġdocument . getElementById (" desc Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġgeneration Button Ġ= Ġdocument . getElementById (" generation Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġtype Button Ġ= Ġdocument . getElementById (" type Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġselect Generation Ġ= Ġdocument . getElementById (" select Generation ") Ġas ĠHTML Select Element ĊĠ Ġval Ġrandomize Button Ġ= Ġdocument . getElementById (" random ize Button ") Ġas ĠHTML Button Element ĊĠ Ġval Ġclose _ modal Ġ= Ġdocument . getElementById (" close _ modal ") Ġas ĠHTML Button Element ĊĠ Ġval Ġerror Dialog Ġ= Ġdocument . getElementById (" error Dialog ") Ġas ĠHTML Div Element ĊĠ Ġval Ġpokemon ById Ġ= Ġdocument . getElementById (" pokemon ById ") Ġas ĠHTML InputElement ĊĊĠ Ġinit Event Button ( ĊĠĠĠĠĠ Ġsearch Gener atio Button , ĊĠĠĠĠĠ Ġasc Button , ĊĠĠĠĠĠ Ġdesc Button , ĊĠĠĠĠĠ Ġgeneration Button , ĊĠĠĠĠĠ Ġtype Button , ĊĠĠĠĠĠ Ġselect Generation , ĊĠĠĠĠĠ Ġrandomize Button , ĊĠĠĠĠĠ Ġclose _ modal , ĊĠĠĠĠĠ Ġerror Dialog , ĊĠĠĠĠĠ Ġpokemon ById ) Ċ } Ċ Ċ fun Ġinit Event Button ( ĊĠĠĠ Ġsearch Gener atio Button : ĠHTML Button Element , ĊĠĠĠ Ġasc Button : ĠHTML Button Element , ĊĠĠĠ Ġdesc Button : ĠHTML Button Element , ĊĠĠĠ Ġgeneration Button : ĠHTML Button Element , ĊĠĠĠ Ġtype Button : ĠHTML Button Element , ĊĠĠĠ Ġselect Generation : ĠHTML Select Element , ĊĠĠĠ Ġrandomize Button : ĠHTML Button Element , ĊĠĠĠ Ġclose _ modal : ĠHTML Button Element , ĊĠĠĠ Ġerror Dialog : ĠHTML Div Element , ĊĠĠĠ Ġpokemon ById : ĠHTML InputElement Ċ ) Ġ{ ĊĊĠ Ġpokemon ById . addEventListener (" keyup ", Ġ{ Ġinit Sound (" digit ") Ġ}) ĊĊĠ Ġrandomize Button . addEventListener ( ĊĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 5 ") ĊĠĠĠĠĠĠĠ Ġinit Page (). show By Url ( return ById Url (( 1 .. 8 9 8 ). random ())) ĊĠĠĠĠĠ Ġ}) ĊĊĠ Ġsearch Gener atio Button . addEventListener ( ĊĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 5 ") ĊĠĠĠĠĠĠĠ Ġremove Element (" container Element ") ĊĠĠĠĠĠĠĠ Ġsearch Gener atio Button Event () ĊĠĠĠĠĠ Ġ}) ĊĊĠ Ġselect Generation . addEventListener ( ĊĠĠĠĠĠ Ġ" change ", ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Sound (" select ") ĊĠĠĠĠĠĠĠ Ġsearch By Value ( select Generation . value ) ĊĠĠĠĠĠ Ġ}) ĊĊĠ Ġasc Button . addEventListener (" click ", Ġ{ Ġsort List (" asc ") Ġ}) ĊĊĠ Ġdesc Button . addEventListener (" click ", Ġ{ Ġsort List (" desc ") Ġ}) ĊĊĠ Ġgeneration Button . addEventListener ( ĊĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 5 ") ĊĠĠĠĠĠĠĠ Ġchange Select Button (" generation ", Ġgeneration Button , Ġtype Button ) ĊĠĠĠĠĠ Ġ}) ĊĊĠ Ġtype Button . addEventListener ( ĊĠĠĠĠĠ Ġ" click ", ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Sound (" bit _ 5 ") ĊĠĠĠĠĠĠĠ Ġchange Select Button (" type ", Ġgeneration Button , Ġtype Button ) ĊĠĠĠĠĠ Ġ}) ĊĊĠ Ġclose _ modal . addEventListener (" click ", Ġ{ Ġtoggle Error Dialog Class ( error Dialog ) Ġ}) Ċ } Ċ Ċ fun Ġtoggle Error Dialog Class ( error Dialog : ĠHTML Div Element ) Ġ{ ĊĠ Ġerror Dialog . classList . remove (" loader ") ĊĠ Ġerror Dialog . classList . add (" hidden ") Ċ } Ċ Ċ fun Ġsearch Gener atio Button Event () Ġ{ ĊĠ Ġval Ġpokemon ById Ġ= Ġdocument . getElementById (" pokemon ById ") Ġas ĠHTML InputElement ĊĠ Ġif Ġ( pokemon ById . value Ġ!== Ġnull Ġ&& Ġpokemon ById . value Ġ!== Ġ"") Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġinit Page (). show By Url ( return ById Url ( pokemon ById . value . toInt ())) ĊĠĠĠ Ġ} Ġcatch Ġ( n fe : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠ Ġinit Page (). show By Url ( return ByName Url ( pokemon ById . value )) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġchange Select Button ( ĊĠĠĠ Ġbutton Event : ĠString Ġ= Ġ" generation ", ĊĠĠĠ Ġgeneration Button : ĠHTML Button Element , ĊĠĠĠ Ġtype Button : ĠHTML Button Element Ċ ) Ġ{ ĊĠ Ġif Ġ( button Event Ġ== Ġ" type ") Ġ{ ĊĠĠĠ Ġselect Screen Vis or (" tipo ") ĊĠĠĠ Ġsearch By Value (" Normal ") ĊĠĠĠ Ġgenerate Option Select (" right ") ĊĠĠĠ Ġtype Button . setAttribute (" disabled ", Ġ" true ") ĊĠĠĠ Ġgeneration Button . removeAttribute (" disabled ") ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġselect Screen Vis or (" ger aÃ§Ã£o ") ĊĠĠĠ Ġsearch By Value (" Generation I ") ĊĠĠĠ Ġgenerate Option Select (" left ") ĊĠĠĠ Ġtype Button . removeAttribute (" disabled ") ĊĠĠĠ Ġgeneration Button . setAttribute (" disabled ", Ġ" true ") ĊĠ Ġ} Ċ } Ċ Ċ fun Ġselect Screen Vis or ( select Value : ĠString ) Ġ{ ĊĠ Ġval Ġselect Screen Ġ= Ġdocument . getElementById (" select Screen ") Ġas ĠHTML Div Element ĊĠ Ġselect Screen . innerText Ġ= Ġ" Por Ġ${ select Value }" Ċ } Ċ Ċ fun Ġgenerate Option ( ĊĠĠĠ Ġselect Generation : ĠHTML Select Element , ĊĠĠĠ Ġlist Values : ĠList < String >, ĊĠĠĠ Ġlist Keys : ĠList < String > Ċ ) Ġ{ ĊĠ Ġlist Values . forEach Indexed Ġ{ Ġindex , Ġelement Ġ-> ĊĠĠĠ Ġval Ġoption Ġ= Ġdocument . createElement (" option ") Ġas ĠHT M LO ption Element ĊĠĠĠ Ġoption . setAttribute (" id ", Ġ" option Insert ") ĊĠĠĠ Ġoption . setAttribute (" value ", Ġelement ) ĊĠĠĠ Ġoption . innerText Ġ= Ġlist Keys [ index ] ĊĠĠĠ Ġselect Generation . append ( option ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġgenerate Option Select ( option : ĠString Ġ= Ġ" left ") Ġ{ ĊĠ Ġval Ġselect Generation Ġ= Ġdocument . getElementById (" select Generation ") Ġas ĠHTML Select Element ĊĠ Ġdestroy Old Select () ĊĠ Ġif Ġ( option Ġ== Ġ" left ") Ġ{ ĊĠĠĠ Ġgenerate Option ( select Generation , Ġgeneration Values , Ġgeneration Keys ) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġgenerate Option ( select Generation , Ġtype Values , Ġtype Keys ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġsort List ( option : ĠString ) Ġ{ ĊĠ Ġdestroy Old List () ĊĠ Ġif Ġ( option Ġ== Ġ" asc ") Ġ{ ĊĠĠĠ Ġinit Page (). show P ok em ons ( list Storage Pokemon . as Re versed ()) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġinit Page (). show P ok em ons ( list Storage Pokemon ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ Ġinit Button Elements () ĊĠ Ġgenerate Option Select () ĊĠ Ġinit Page (). getAll Option () ĊĊĠ Ġ// Ġwindow . onerror Ġ= Ġfunction Ġ( message , Ġurl , Ġline , Ġcol , Ġerror Obj ) Ġ{ ĊĠ Ġ// ĠĠ Ġalert (`${ message }\ n ${ url }, Ġ${ line }:${ col }`); ĊĠ Ġ// Ġ}; ĊĊĠ Ġwindow . onload Ġ= Ġ{ Ġinit Sound (" opening - root ") Ġ} Ċ } Ċ