package Ġb aa ah s . app . ui Ċ Ċ import Ġb aa ah s . app . ui . controls . control Wrapper Ċ import Ġb aa ah s . app . ui . editor . Add Control To Panel Bucket Ċ import Ġb aa ah s . getB ang Ċ import Ġb aa ah s . show . Layout Ċ import Ġb aa ah s . show . live . Control Display Ċ import Ġb aa ah s . show . live . Control Props Ċ import Ġb aa ah s . show . live . Open Show Ċ import Ġb aa ah s . ui .* Ċ import Ġcs stype . Flex Direction Ċ import Ġcs stype . ident Ċ import Ġexternal . Direction Ċ import Ġexternal . draggable Ċ import Ġexternal . dro pp able Ċ import Ġkotlinx . css .* Ċ import Ġkotlinx . js . js o Ċ import Ġmaterial ui . icon Ċ import Ġm ui . material .* Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġreact .* Ċ import Ġreact . dom . div Ċ import Ġreact . dom . events . MouseEvent Ċ import Ġreact . dom . events . Mouse EventHandler Ċ import Ġreact . dom . header Ċ import Ġstyled . inline Styles Ċ Ċ val ĠShow Layout Ġ= Ġx Component < Show Layout Props >(" Show Layout ") Ġ{ Ġprops Ġ-> ĊĠĠĠ Ġval Ġapp Context Ġ= ĠuseContext ( app Context ) ĊĊĠĠĠ Ġvar Ġcurrent TabIndex Ġby Ġstate Ġ{ Ġ 0 Ġ} ĊĠĠĠ Ġval Ġcurrent Tab Ġ= Ġprops . layout . tabs . get Bounded ( current TabIndex ) ĊĊĠĠĠ Ġval Ġedit Mode Ġ= Ġprops . edit Mode Ġ== Ġtrue ĊĠĠĠ Ġval Ġedit Mode Style Ġ= Ġif Ġ( edit Mode ) ĠStyles . edit Mode On Ġelse ĠStyles . edit Mode Off ĊĊĠĠĠ Ġval Ġhandle Add Button Click Ġ= Ġmemo Ġ{ Ġmutable Map Of < String , ĠMouse EventHandler <* >>() Ġ} ĊĠĠĠ Ġvar Ġshow Add Menu For Ġby Ġstate < Control Display . Panel Buckets . Panel Bucket ?> Ġ{ Ġnull Ġ} ĊĠĠĠ Ġvar Ġshow Add Menu For Anchor El Ġby Ġstate < Element ?> Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġshared Gl Context Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv (+ Styles . show Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Tab Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Count Ġ= Ġcurrent Tab . columns . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Count Ġ= Ġcurrent Tab . rows . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Tab . areas . size Ġ!= Ġcol Count Ġ* Ġrow Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Invalid Ġlayout ! Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Area Ġcount Ġ(${ current Tab . areas . size } Ġ!= Ġcell Ġcount Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ($ col Count Ġcolumns Ġ* Ġ$ rowCount Ġrows )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġareas Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tab . rows . indices . forEach Ġ{ ĠrowIndex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcols Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tab . columns . indices . forEach Ġ{ ĠcolumnIndex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcols . add ( current Tab . areas [ rowIndex Ġ* Ġcol Count Ġ+ ĠcolumnIndex ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġareas . add ( cols . join ToString (" Ġ") Ġ{ Ġit . replace (" Ġ", Ġ"") Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinline Styles Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Template Areas Ġ= ĠGrid Template Areas ( areas . join ToString (" Ġ") Ġ{ Ġ"\" $ it \"" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Template Columns Ġ= ĠGrid Template Columns ( current Tab . columns . join ToString (" Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Template Rows Ġ= ĠGrid Template Rows ( current Tab . rows . join ToString (" Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tab ?. areas ?. distinct ()?. forEach Ġ{ Ġpanel Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= Ġprops . show . layouts . panels . getB ang ( panel Id , Ġ" panel ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . classes Ġ= Ġj so Ġ{ Ġroot Ġ= Ġ- Styles . layout Panel Paper Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . sx Ġ= Ġj so Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Area Ġ= Ġident ( panel Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpanel Ġflow Ġdirection Ġcould Ġchange Ġhere . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠflexDirection Ġ= ĠFlex Direction . column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ Ġ+ panel . title Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . classes Ġ= Ġj so Ġ{ Ġroot Ġ= Ġ- Styles . layout Panel Ġand Ġedit Mode Style Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . control Display . render ( panel ) Ġ{ Ġpanel Bucket Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdro pp able ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dro pp able Id Ġ= Ġpanel Bucket . drop Target Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġpanel Bucket . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . direction Ġ= ĠDirection . horizontal . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Drop Disabled Ġ= Ġ! edit Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġdro pp able Provided , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Element Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġif Ġ( Styles . control Sections . size Ġ> Ġpanel Bucket . section . depth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyles . control Sections [ panel Bucket . section . depth ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyles . control Sections . last () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (+ Styles . layout Controls Ġand Ġstyle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( dro pp able Provided ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (+ Styles . control Panel Help Text ) Ġ{ Ġ+ panel Bucket . section . title Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Bucket . controls . forEach Indexed Ġ{ Ġindex , Ġplaced Control Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontrol Ġ= Ġplaced Control . control ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraggable Id Ġ= Ġcontrol . id ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraggable ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġdraggable Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . draggable Id Ġ= Ġdraggable Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Drag Disabled Ġ= Ġ! edit Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . index Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġdraggable Provided , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Element Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Wrapper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . control Ġ= Ġcontrol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . control Props Ġ= Ġprops . control Props ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . draggable Provided Ġ= Ġdraggable Provided ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( dro pp able Provided . placeholder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . classes Ġ= Ġj so Ġ{ Ġroot Ġ= Ġ- Styles . addTo Section Button Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Ġ= Ġhandle Add Button Click . get Or Put ( panel Bucket . suggest Id ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġevent : ĠMouseEvent < *, Ġ*> Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Add Menu For Ġ= Ġpanel Bucket ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Add Menu For Anchor El Ġ= Ġevent . currentTarget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( mui . icons . material . Add Circle Outline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġshow Add Menu For ?. let Ġ{ Ġpanel Bucket Ġ-> ĊĠĠĠĠĠĠĠ ĠMenu Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . anchor El Ġ= Ġshow Add Menu For Anchor El . as Dynamic () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClose Ġ= Ġ{ Ġshow Add Menu For Ġ= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context . plugins . add Control Menu Items . forEach Ġ{ Ġadd Control MenuItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Intent Ġ= ĠAdd Control To Panel Bucket ( panel Bucket , Ġadd Control MenuItem . create Control Fn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context . open Editor ( edit Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Add Menu For Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Icon Ġ{ Ġicon ( add Control MenuItem . icon ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Text Ġ{ Ġ+ add Control MenuItem . label Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġ< E > ĠList < E >. get Bounded ( index : ĠInt ): ĠE ? Ġ{ ĊĠĠĠ Ġif Ġ( size Ġ== Ġ 0 ) Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( index Ġ> Ġsize ) Ġreturn Ġget ( size Ġ- Ġ 1 ) ĊĠĠĠ Ġreturn Ġget ( index ) Ċ } Ċ Ċ external Ġinterface ĠShow Layout Props Ġ: ĠProps Ġ{ ĊĠĠĠ Ġvar Ġshow : ĠOpen Show ĊĠĠĠ Ġvar Ġon Show StateChange : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġvar Ġlayout : ĠLayout ĊĠĠĠ Ġvar Ġcontrol Display : ĠControl Display ĊĠĠĠ Ġvar Ġcontrol Props : ĠControl Props ĊĠĠĠ Ġvar Ġedit Mode : ĠBoolean ? Ċ } Ċ Ċ fun ĠR Builder . show Layout ( handler : ĠR Handler < Show Layout Props >) Ġ= ĊĠĠĠ Ġchild ( Show Layout , Ġhandler Ġ= Ġhandler ) Ċ