package Ġorg . cascade bot . cascade bot . utils . inter actions Ċ Ċ import Ġnet . dv 8 tion . j da . api . entities . Emoji Ċ import Ġnet . dv 8 tion . j da . api . inter actions . components . Component Ċ import Ġnet . dv 8 tion . j da . api . inter actions . components . selections . Selection Menu Ċ Ċ class ĠCascade Select Box ( id : ĠString , Ġval Ġconsumer : ĠI Selection Runnable ) Ġ: ĠCascade Component ( id ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbuilder : ĠSelection Menu . Builder Ġ= ĠSelection Menu . create ( id ) ĊĊĠĠĠ Ġvar Ġmin Select Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġ 1 Ġ|| Ġvalue Ġ> Ġmax Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Minimum Ġselection Ġnumber Ġcannot Ġbe Ġless Ġthen Ġ 1 Ġor Ġgreater Ġthen Ġthe Ġmax Ġselect Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmax Select Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġ 2 5 Ġ|| Ġvalue Ġ< Ġmin Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Maximum Ġselection Ġnumber Ġcannot Ġbe Ġgreater Ġthen Ġ 2 5 Ġor Ġless Ġthen Ġthe Ġmin Ġselect Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdefaults : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġval Ġdiscord Component : ĠComponent ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . max Values Ġ= Ġmax Select ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . min Values Ġ= Ġmin Select ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setDefault Values ( defaults ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġadd Option ( label : ĠString , Ġdefault : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . add Option ( label , Ġlabel ) ĊĠĠĠĠĠĠĠ Ġhandle Default ( label , Ġdefault ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Option ( label : ĠString , Ġdescription : ĠString , Ġdefault : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . add Option ( label , Ġlabel , Ġdescription ) ĊĠĠĠĠĠĠĠ Ġhandle Default ( label , Ġdefault ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Option ( label : ĠString , Ġemoji : ĠEmoji , Ġdefault : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"$ label -" Ġ+ Ġif Ġ( emoji . is Unicode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . name ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . add Option ( label , Ġvalue , Ġemoji ) ĊĠĠĠĠĠĠĠ Ġhandle Default ( value , Ġdefault ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Option ( label : ĠString , Ġdescription : ĠString , Ġemoji : ĠEmoji , Ġdefault : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"$ label -" Ġ+ Ġif Ġ( emoji . is Unicode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . name ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . add Option ( label , Ġvalue , Ġdescription , Ġemoji ) ĊĠĠĠĠĠĠĠ Ġhandle Default ( value , Ġdefault ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Default ( value : ĠString , Ġdefault : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( defaults . size Ġ>= Ġmax Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Cannot Ġadd Ġmore Ġdefaults Ġthen Ġthe Ġuser Ġcan Ġselect ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefaults . add ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Placeholder ( place Holder : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . placeholder Ġ= Ġplace Holder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Default ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Default ( value , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Defaults () Ġ{ ĊĠĠĠĠĠĠĠ Ġdefaults . clear () ĊĠĠĠ Ġ} Ċ Ċ }