import Ġapi . Meta TV Api Ċ import Ġextensions . create RestApi Ċ import Ġextensions . iframe Ċ import Ġextensions . return Now Playing List Tuple Ċ import Ġio . k web . K web Ċ import Ġio . k web . dom . element . creation . Element Creator Ċ import Ġio . k web . dom . element . creation . tags .* Ċ import Ġio . k web . dom . element . new Ċ import Ġio . k web . plugins . f om antic UI . f om antic Ċ import Ġio . k web . plugins . f om antic UI . f om antic UI Plugin Ċ import Ġio . k web . state . K Var Ċ import Ġio . k web . state . render . render Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġmodels . reddit . Con dense d Video Item Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ const Ġval ĠDEFAULT _ SUB RE DD IT : ĠString Ġ= Ġ" youtube ha iku " Ċ val Ġcurrently Playing Item Ġ= ĠK Var ( ĊĠĠĠ ĠCon dense d Video Item ( ĊĠĠĠĠĠĠĠ Ġ" R ick ĠRoll ", ĊĠĠĠĠĠĠĠ Ġ" https :// www . youtube . com / embed / o Hg 5 S JY R HA 0 ", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ) Ċ ) Ċ val Ġglobal Video List Ġ= ĠK Var ( listOf ( currently Playing Item . value )) Ċ val Ġsub reddit Text Ġ= ĠK Var ( DEFAULT _ SUB RE DD IT ) Ċ val Ġsub reddit Selection Ġ= ĠK Var ( DEFAULT _ SUB RE DD IT ) Ċ val Ġre dd it Api : ĠMeta TV Api Ġ= Ġcreate RestApi ( Meta TV Api . META _ TV _ URL , Ġdef a ul Ok HttpClient ) Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ ĠK WebApp () Ċ } Ċ Ċ class ĠK WebApp Ġ: ĠCor outine Scope Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context Ġ= ĠDispatch ers . Default ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Items Ġ= Ġre dd it Api . getSub Red dit Videos ( DEFAULT _ SUB RE DD IT ). items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Item Ġ= Ġnew Items [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Video List . value Ġ= Ġnew Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrently Playing Item . value Ġ= Ġfirst Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠK web ( port Ġ= Ġ 1 6 0 9 7 , Ġplugins Ġ= ĠlistOf ( f om antic UI Plugin )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . body . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( f om antic . ui . grid ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( f om antic . row . centered ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Video Content Section () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Now And Next Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠElement Creator < Div Element >. main Video Content Section () Ġ{ ĊĠĠĠ Ġrender ( currently Playing Item ) Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġiframe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" width " Ġto Ġ 1 2 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height " Ġto Ġ 7 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src " Ġto Ġitem . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" frame border " Ġto Ġ" 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" allow " Ġto Ġ" accel erometer ; Ġautoplay ; Ġencrypted - media ; Ġgyro scope ; Ġpicture - in - picture ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" allow fullscreen " Ġto Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Attribute (" src ", Ġcurrently Playing Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠElement Creator < Div Element >. sort And Search Fields () Ġ{ ĊĠĠĠ Ġh 1 (). text (" Meta ĠTV !") ĊĠĠĠ Ġdiv ( f om antic . ui . form ). new Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( f om antic . field ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" youtube ha iku " Ġto Ġ" youtube ha iku ", Ġ" videos " Ġto Ġ" videos ", Ġ" cr inge " Ġto Ġ" cr inge "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes Ġ= Ġf om antic . ui . fluid . dropdown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsub reddit Selection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon . change Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub reddit Text . value Ġ= Ġsub reddit Selection . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Video List . value Ġ= Ġre dd it Api . getSub Red dit Videos ( sub reddit Text . value ). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv ( f om antic . field ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput ( InputType . text , Ġ"", Ġ"", Ġ 5 0 , Ġ" sub reddit Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsub reddit Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon . keypress Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key Ġ== Ġ" Enter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Video List . value Ġ= Ġre dd it Api . getSub Red dit Videos ( sub reddit Text . value ). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv ( f om antic . field ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( f om antic . ui . button , ĠButton Type . submit , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠK Var (" Submit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Video List . value Ġ= Ġre dd it Api . getSub Red dit Videos ( sub reddit Text . value ). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠElement Creator < Div Element >. previous Now And Next Content () Ġ{ ĊĠĠĠ Ġrender ( currently Playing Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġspan ( f om antic . ui . three . wide . column ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( f om antic . four . column . row ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Video List . value . return Now Playing List Tuple ( currently Playing Item . value ). forEach Ġ{ Ġvideo Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( f om antic . ui . column ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg ( video Item . thumbnail Url , Ġf om antic . ui . small . image ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrently Playing Item . value Ġ= Ġvideo Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( f om antic . right . flo ated . left . aligned . column ). new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort And Search Fields () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ