package Ġde . rob ol ab . client . utils Ċ Ċ import Ġkotlinx . browser . window Ċ import Ġorg . w 3 c . dom . events . Event Ċ Ċ class ĠElectron Ġprivate Ġconstructor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmodule Ġ= Ġjs (" require (' electron ') ") ĊĊĠĠĠ Ġval Ġipc Renderer Ġ= Ġmodule . ipc Renderer . unsafe Cast < I pc Renderer >() ĊĊĠĠĠ Ġfun Ġapp Get Path ( name : ĠPath Name ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodule . remote . app . getPath ( name . value ). unsafe Cast < String >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmenu Item ( entry : ĠContext Menu Entry ): Ġdynamic Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= Ġjs ("{} ") ĊĠĠĠĠĠĠĠ Ġmenu . label Ġ= Ġentry . label ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠContext Menu Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . click Ġ= Ġentry . action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠContext Menu List Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . submenu Ġ= Ġjs (" [] ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġentry . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . submenu . push ( menuItem ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmenu ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmenu ( context Menu : ĠContext Menu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Template Ġ= Ġjs (" [] ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġcontext Menu . entry . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Template . push ( menuItem ( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= Ġmodule . remote . Menu . build From Template ( menu Template ) ĊĊĠĠĠĠĠĠĠ Ġval Ġopt Ġ= Ġjs ("{} ") ĊĠĠĠĠĠĠĠ Ġopt . window Ġ= Ġmodule . remote . getCurrent Window () ĊĠĠĠĠĠĠĠ Ġmenu . popup ( opt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen External ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodule . shell . open External ( url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Os (): ĠOS Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= Ġjs (" require (\" process \") ") ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġprocess . platform . unsafe Cast < String >() ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" win 3 2 " Ġ-> ĠOS . WINDOWS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" darwin " Ġ-> ĠOS . MAC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" linux " Ġ-> ĠOS . LINUX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠOS . OTHER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Memory Info (): ĠB link Memory Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= Ġjs (" require (\" process \") ") ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . getB link Memory Info (). unsafe Cast < B link Memory Info >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠPath Name ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHOME (" home "), ĊĠĠĠĠĠĠĠ ĠAPP _ DATA (" app Data "), ĊĠĠĠĠĠĠĠ ĠUSER _ DATA (" userData "), ĊĠĠĠĠĠĠĠ ĠCACHE (" cache "), ĊĠĠĠĠĠĠĠ ĠTEMP (" temp "), ĊĠĠĠĠĠĠĠ ĠEX E (" exe "), ĊĠĠĠĠĠĠĠ ĠMODULE (" module "), ĊĠĠĠĠĠĠĠ ĠDES K TOP (" desktop "), ĊĠĠĠĠĠĠĠ ĠDOCUMENT S (" documents "), ĊĠĠĠĠĠĠĠ ĠDOWN LOAD S (" downloads "), ĊĠĠĠĠĠĠĠ ĠM US IC (" music "), ĊĠĠĠĠĠĠĠ ĠP ICT URE S (" pictures "), ĊĠĠĠĠĠĠĠ ĠV IDE OS (" videos "), ĊĠĠĠĠĠĠĠ ĠREC ENT (" recent "), ĊĠĠĠĠĠĠĠ ĠLOG S (" logs "), ĊĠĠĠĠĠĠĠ ĠPEP PER _ FLASH _ SYSTEM _ PLUGIN (" pep per Flash System Plugin "), ĊĠĠĠĠĠĠĠ ĠCR ASH _ DUMP S (" crash Dump s ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠOS Ġ{ ĊĠĠĠĠĠĠĠ ĠWINDO WS , ĠLIN UX , ĠMAC , ĠOTHER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Electron (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġwindow . as Dynamic () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( w . process Ġ!= Ġundefined Ġ&& Ġw . process . type Ġ== Ġ" renderer ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Electron ()) ĠElectron () Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ external Ġclass ĠI pc Renderer Event () Ġ: ĠEvent Ġ{ ĊĠĠĠ Ġval Ġsender : ĠAny Ġ= Ġdefined Ex tern ally ĊĠĠĠ Ġval Ġsender Id : ĠInt Ġ= Ġdefined Ex tern ally ĊĠĠĠ Ġval Ġports : ĠArray < Any > Ġ= Ġdefined Ex tern ally Ċ } Ċ Ċ external Ġinterface ĠI pc Renderer Ġ{ ĊĠĠĠ Ġfun Ġon ( channel : ĠString , Ġlistener : Ġ( event : ĠI pc Renderer Event , Ġargs : Ġdynamic ) Ġ-> ĠUnit ) ĊĠĠĠ Ġfun Ġonce ( channel : ĠString , Ġlistener : Ġ( event : ĠI pc Renderer Event , Ġargs : Ġdynamic ) Ġ-> ĠUnit ) ĊĠĠĠ Ġfun Ġsend ( channel : ĠString , Ġvar arg Ġargs : Ġdynamic ) Ċ } Ċ Ċ val Ġis Electron ĊĠĠĠ Ġget () Ġ= ĠElectron . instance Ġ!= Ġnull Ċ Ċ val Ġelectron ĊĠĠĠ Ġget () Ġ= ĠElectron . instance Ċ Ċ inline Ġfun Ġelectron ( block : Ġ( Electron ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġe Ġ= ĠElectron . instance ĊĠĠĠ Ġif Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( e ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġno Electron ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġe Ġ= ĠElectron . instance ĊĠĠĠ Ġif Ġ( e Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ċ } Ċ Ċ external Ġinterface ĠB link Memory Info Ġ{ ĊĠĠĠ Ġval Ġallocated : ĠInt ĊĠĠĠ Ġval Ġmarked : ĠInt ĊĠĠĠ Ġval Ġtotal : ĠInt Ċ } Ċ