package Ġy 2 k . nor ia . android Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . android . flex box . Flex Direction .* Ċ import Ġcom . google . android . flex box . Flex box Layout Ċ import Ġcom . google . android . flex box . Just ify Content .* Ċ import Ġnor ia . Host ComponentType Ċ import Ġnor ia . Platform Ċ import Ġnor ia . Platform ComponentType Ċ import Ġnor ia . Root Ċ import Ġnor ia . components .* Ċ import Ġy 2 k . nor ia . android . components . Android Root Ċ import Ġy 2 k . nor ia . android . components . Bean Host Props Ċ import Ġy 2 k . nor ia . android . components . Flex Box Ċ import Ġy 2 k . nor ia . android . components . Managed Bean View Ċ import Ġkotlin . reflect . K Class Ċ Ċ object ĠAndroid Platform Ġ: ĠPlatform () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister ( Root , Ġ:: Android Root ) ĊĠĠĠĠĠĠĠ Ġregister ( H Box , Ġ:: Flex Box ) ĊĠĠĠĠĠĠĠ Ġregister ( V Box , Ġ:: Flex Box ) ĊĊĠĠĠĠĠĠĠ Ġregister ( Label , ĠN Label :: class ) Ġ{ Ġprops Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N Label :: setString Text , Ġprops . text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġregister ( Button , ĠN Button :: class ) Ġ{ Ġprops Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N Button :: setString Text , Ġprops . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N Button :: setEnabled , Ġ! props . disabled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġregister ( TextField , ĠN TextField :: class ) Ġ{ Ġprops Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N TextField :: setString Text , Ġprops . bind . getter . call ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N TextField :: setEnabled , Ġ! props . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N TextField :: on TextChanged , Ġprops . bind :: set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N TextField :: events , Ġprops . events ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġregister ( CheckBox , ĠN CheckBox :: class ) Ġ{ Ġprops Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N CheckBox :: setString Text , Ġprops . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N CheckBox :: setChecked , Ġprops . bind . getter . call ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N CheckBox :: setEnabled , Ġ! props . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( N CheckBox :: onChange , Ġprops . bind :: set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< Props , ĠBean Ġ: ĠAny > Ġregister ( ĊĠĠĠĠĠĠĠ Ġp ct : ĠPlatform ComponentType < Props >, ĊĠĠĠĠĠĠĠ Ġbean : ĠK Class < Bean >, ĊĠĠĠĠĠĠĠ Ġbuild : ĠBean Host Props < Bean >. ( Props ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister ( pct ) Ġ{ Ġprops Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManaged Bean View ( props , ĠHost ComponentType ( bean . qualified Name !! ), Ġbuild ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠN Label ( context : ĠContext ?) Ġ: ĠTextView ( context ) Ġ{ ĊĊĠĠĠ Ġfun Ġset String Text ( x : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġx ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠN Button ( context : ĠContext ?) Ġ: Ġandroid . widget . Button ( context ) Ġ{ ĊĊĠĠĠ Ġfun Ġset String Text ( x : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġx ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠN TextField ( context : ĠContext ?) Ġ: ĠEditText ( context ) Ġ{ ĊĊĠĠĠ Ġvar Ġon TextChanged : Ġ(( new Text : ĠString ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġevents : ĠEvents ? Ġ= Ġnull ĊĠĠĠ Ġval Ġcurrent Text : ĠString Ġget () Ġ= Ġtext . toString () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Single Line () ĊĊĠĠĠĠĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ= ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon TextChanged ?. invoke ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġset On Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents ?. on Enter ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset String Text ( t : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( t Ġ!= Ġcurrent Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( t , ĠBuffer Type . NORMAL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠN CheckBox ( context : ĠContext ?) Ġ: Ġandroid . widget . CheckBox ( context ) Ġ{ ĊĊĠĠĠ Ġvar ĠonChange : Ġ(( v : ĠBoolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset On Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChange ?. invoke ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset String Text ( x : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġx ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠN Panel ( context : ĠContext ?) Ġ: ĠFlex box Layout ( context ) Ġ{ ĊĊĠĠĠ Ġfun Ġset Flex ( box : ĠBox Props ) Ġ{ ĊĠĠĠĠĠĠĠ ĠflexDirection Ġ= Ġwhen Ġ( box . flex Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlex Direction . row Ġ-> ĠROW ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlex Direction . column Ġ-> ĠCOLUMN ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlex Direction . row Reverse Ġ-> ĠROW _ RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlex Direction . column Reverse Ġ-> ĠCOLUMN _ RE VERSE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠjustifyContent Ġ= Ġwhen Ġ( box . justify Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠF LEX _ START ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . center Ġ-> ĠC ENTER ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . flex Start Ġ-> ĠF LEX _ START ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . flex End Ġ-> ĠF LEX _ END ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . space Between Ġ-> ĠSPACE _ B ETWEEN ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . space Around Ġ-> ĠSPACE _ AR O UND ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJust ify Content . space Even ly Ġ-> ĠSPACE _ E VEN LY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO (" Can 't Ġparse Ġ${ box . justify Content }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }