package Ġeu . fb k . st . crypto ac . ui . content . trade off board Ċ Ċ import Ġeu . fb k . st . crypto ac . ui . components . custom . crypto ACT ext Field Ċ import Ġeu . fb k . st . crypto ac . ui . components . material ui . core . menuItem Ċ import Ġeu . fb k . st . crypto ac . ui . components . material ui . core . select Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . css .* Ċ import Ġreact .* Ċ import Ġstyled . css Ċ import Ġstyled . styled Div Ċ import Ġstyled . styled Td Ċ Ċ external Ġinterface ĠRequirement Item Props Ġ: ĠProps Ġ{ ĊĠĠĠ Ġ/** ĠThe Ġdefault Ġvalue Ġof Ġthe Ġrequirement Ġ*/ ĊĠĠĠ Ġvar ĠdefaultValue : ĠRequirement ĊĊĠĠĠ Ġ/** ĠIs Ġthis Ġthe Ġlast Ġrequirement Ġ*/ ĊĠĠĠ Ġvar Ġlast : ĠBoolean ĊĊĠĠĠ Ġ/** ĠThe Ġrequirement Ġobject Ġ*/ ĊĠĠĠ Ġvar Ġrequirement : ĠRequirement ĊĊĠĠĠ Ġ/** ĠHandle Ġthe Ġchange Ġof Ġthe Ġweight Ġvalue Ġ*/ ĊĠĠĠ Ġvar ĠhandleChange Weight Value : Ġ( Int ) Ġ-> ĠUnit ĊĊĠĠĠ Ġ/** ĠHandle Ġthe Ġchange Ġof Ġthe Ġthreshold Ġtype Ġ*/ ĊĠĠĠ Ġvar ĠhandleChange Threshold Type : Ġ( Threshold ) Ġ-> ĠUnit ĊĊĠĠĠ Ġ/** ĠHandle Ġthe Ġchange Ġof Ġthe Ġthreshold Ġvalue Ġ*/ ĊĠĠĠ Ġvar ĠhandleChange Threshold Value : Ġ( Int ) Ġ-> ĠUnit ĊĊĠĠĠ Ġ/** ĠHandle Ġthe Ġchange Ġof Ġthe Ġpenalty Ġvalue Ġ*/ ĊĠĠĠ Ġvar ĠhandleChange Pen alty Value : Ġ( Int ) Ġ-> ĠUnit Ċ } ĊĊ Ċ external Ġinterface ĠRequirement Item State Ġ: ĠState Ġ{ ĊĠĠĠ Ġ/** ĠThe Ġcurrent Ġthreshold Ġtype Ġfor Ġthis Ġrequirement Ġ*/ ĊĠĠĠ Ġvar Ġthreshold Type : ĠThreshold Ċ } Ċ Ċ /** ĠA Ġrequirement Ġitem Ġcomponent Ġ*/ Ċ class ĠRequirement Item : ĠR Component < Requirement Item Props , ĠRequirement Item State >() Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠR Builder . render () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġrequirement Ġname Ġ*/ ĊĠĠĠĠĠĠĠ Ġstyled Td Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ" 1 0 px " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 6 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . left ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( props . last ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Left Radius Ġ= Ġ 1 5 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ props . requirement . name . replace ("_ ", Ġ"- ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġrequirement Ġweight Ġvalue Ġ*/ ĊĠĠĠĠĠĠĠ Ġstyled Td Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ" 1 0 px " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ("# 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( crypto ACT ext Field Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" dark TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġprops . defaultValue . weight . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġ" primary " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ= Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Weight Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . handleChange Weight Value ( new Weight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġrequirement Ġthreshold Ġtype Ġ*/ ĊĠĠĠĠĠĠĠ Ġstyled Td Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ" 1 0 px " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ" Threshold Ġtype " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġprops . defaultValue . threshold Type . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ= Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Threshold Type Ġ= ĠThreshold . valueOf ( e . as Dynamic (). target . value Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . handleChange Threshold Type ( new Threshold Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthreshold Type Ġ= Ġnew Threshold Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThreshold . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ it . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġrequirement Ġthreshold Ġvalue Ġ*/ ĊĠĠĠĠĠĠĠ Ġstyled Td Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ" 1 0 px " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ("# 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( crypto ACT ext Field Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġprops . defaultValue . threshold Value . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġ" primary " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisabled Ġ= Ġstate . threshold Type Ġ== ĠThreshold . None ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġif Ġ( state . threshold Type Ġ== ĠThreshold . None ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" grey TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dark TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġif Ġ( state . threshold Type Ġ== ĠThreshold . None ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" grey TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dark TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ= Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Threshold Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . handleChange Threshold Value ( new Threshold ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġrequirement Ġpenalty Ġvalue Ġ*/ ĊĠĠĠĠĠĠĠ Ġstyled Td Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= Ġ" 1 0 px " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( props . last ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Right Radius Ġ= Ġ 1 5 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ("# 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild ( crypto ACT ext Field Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġprops . defaultValue . penalty . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" Number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġ" primary " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisabled Ġ= Ġstate . threshold Type Ġ== ĠThreshold . None ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġif Ġ( state . threshold Type Ġ== ĠThreshold . None ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" grey TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dark TextField " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ= Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Pen alty Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . handleChange Pen alty Value ( new Pen alty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠRequirement Item State . init () Ġ{ ĊĠĠĠĠĠĠĠ ĠMain Scope (). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthreshold Type Ġ= Ġprops . defaultValue . threshold Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRe - render Ġonly Ġif Ġthe Ġdefault Ġvalue Ġis Ġdifferent Ġfrom Ġthe Ġprevious Ġdefault Ġvalue Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshould Component Update ( next Props : ĠRequirement Item Props , Ġnext State : ĠRequirement Item State ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( next Props . defaultValue Ġ!= Ġprops . defaultValue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠExtend ĠR Builder Ġfor Ġeasier Ġuse Ġof Ġthis ĠReact Ġcomponent Ġ*/ Ċ fun Ġrequirement Item ( handler : ĠRequirement Item Props . () Ġ-> ĠUnit ): ĠReact Element Ġ{ ĊĠĠĠ Ġreturn ĠcreateElement Ġ{ ĊĠĠĠĠĠĠĠ Ġchild ( Requirement Item :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . attrs ( handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} !! Ċ }