/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRoman ĠE liz ar ov . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġpoly hed ra . js . main Ċ Ċ import Ġkotlinx . browser .* Ċ import Ġpoly hed ra . js . params .* Ċ import Ġpoly hed ra . js . poly .* Ċ import Ġpoly hed ra . js . util .* Ċ import Ġpoly hed ra . js . worker .* Ċ import Ġreact . dom .* Ċ Ċ private Ġconst Ġval Ġhistory Push Throttle Ġ= Ġ 5 0 0 Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġif Ġ( run Worker Main ()) Ġreturn Ċ // ĠĠĠ Ġkotlin ext . js . require ("./ css / style . css ") ĊĠĠĠ Ġwindow . onload Ġ= Ġ{ ĠonLoad () Ġ} Ċ } Ċ Ċ class ĠRoot Params Ġ: ĠParam . Composite ("") Ġ{ ĊĠĠĠ Ġval Ġanimation Params Ġ= Ġusing ( View Animation Params (" a ")) ĊĠĠĠ Ġval Ġrender Ġ= Ġusing ( Render Params ("", Ġanimation Params )) ĊĠĠĠ Ġval Ġexport Ġ= Ġusing ( Export Params (" e ")) Ċ } Ċ Ċ private Ġfun ĠonLoad () Ġ{ ĊĠĠĠ Ġval Ġroot Params Ġ= Ġload And Auto Save Root Params () ĊĠĠĠ ĠAnimation Tracker ( root Params ). start () ĊĠĠĠ Ġ// ĠUnit ĠUI ĊĠĠĠ Ġrender ( document . getElementById (" root ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild ( Root Pane :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroot Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġload And Auto Save Root Params (): ĠRoot Params Ġ{ ĊĠĠĠ Ġval Ġroot Params Ġ= ĠRoot Params () ĊĠĠĠ Ġval Ġhistory Ġ= Ġcreate Hash History () ĊĠĠĠ Ġvar Ġhistory Push Timeout Ġ= Ġ 0 ĊĠĠĠ Ġval Ġpath Ġ= Ġdecode URI ( history . location . pathname ) ĊĠĠĠ Ġroot Params . load FromString ( path . substring After ('/', Ġ"")) ĊĠĠĠ Ġroot Params . on Notify Updated ( Param . Target Value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġthrottle Ġupdates ĊĠĠĠĠĠĠĠ Ġif Ġ( history Push Timeout Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Push Timeout Ġ= Ġwindow . setTimeout ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Push Timeout Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory . push ("/ $ root Params ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġhistory Push Throttle ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġroot Params Ċ } Ċ Ċ external Ġfun Ġdecode URI ( s : ĠString ): ĠString ĊĊ