package Ġcom . r net t . spell book . components . filter Ċ Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . Local Scrollbar Style Ċ import Ġandroidx . compose . foundation . Vertical Scrollbar Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . remember Scrollbar Adapter Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Button Defaults Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . TextField Defaults Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Add Ċ import Ġandroidx . compose . material . icons . filled . Remove Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State ListOf Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . text . input . TextField Value Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . r net t . spell book . Filter Colors Ċ import Ġcom . r net t . spell book . Local Main State Ċ import Ġcom . r net t . spell book . as Compose Ċ import Ġcom . r net t . spell book . components . IconButton Hand Ċ import Ġcom . r net t . spell book . components . Icon With Tooltip Ċ import Ġcom . r net t . spell book . components . Small TextField Ċ import Ġcom . r net t . spell book . components . spell . ActionType Tag Ċ import Ġcom . r net t . spell book . components . spell . Actions Tag Ċ import Ġcom . r net t . spell book . components . spell . Attack Tag Ċ import Ġcom . r net t . spell book . components . spell . Condition Tag Ċ import Ġcom . r net t . spell book . components . spell . Duration Tag Ċ import Ġcom . r net t . spell book . components . spell . Save Tag Ċ import Ġcom . r net t . spell book . components . spell . Spell List Tag Ċ import Ġcom . r net t . spell book . components . spell . Target ing Tag Ċ import Ġcom . r net t . spell book . components . spell . Trait Tag Ċ import Ġcom . r net t . spell book . data . all Dur ations Ċ import Ġcom . r net t . spell book . data . all Target ing Ċ import Ġcom . r net t . spell book . data . interest ing Spell Conditions Ċ import Ġcom . r net t . spell book . data . non Special Spell Traits Ċ import Ġcom . r net t . spell book . data . spell Conditions ByName Ċ import Ġcom . r net t . spell book . data . traits ByName Ċ import Ġcom . r net t . spell book . filter . Action Filter Ċ import Ġcom . r net t . spell book . filter . Attack Type Filter Ċ import Ġcom . r net t . spell book . filter . Duration Filter Ċ import Ġcom . r net t . spell book . filter . Level Filter Ċ import Ġcom . r net t . spell book . filter . Spell Filter Ċ import Ġcom . r net t . spell book . filter . filter Ċ import Ġcom . r net t . spell book . spell . Cast ActionType Ċ import Ġcom . r net t . spell book . spell . R arity Ċ import Ġcom . r net t . spell book . spell . Save Ċ import Ġcom . r net t . spell book . spell . School Ċ import Ġcom . r net t . spell book . spell . Spell List Ċ import Ġcom . r net t . spell book . spell book . Spell Slot Spec Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min ĊĊ Ċ private Ġval Ġpick able Attack Types Ġ= ĊĠĠĠ Ġ( Save . values (). map Ġ{ ĠAttack Type Filter . Target Save ( it , Ġnull ) Ġ} Ġ+ ĠAttack Type Filter . Attack ). toSet () Ċ Ċ private Ġval Ġpick able Action Types Ġ= ĊĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠ ĠAction Filter . Free , ĊĠĠĠĠĠĠĠ ĠAction Filter . Single , ĊĠĠĠĠĠĠĠ ĠAction Filter . Double , ĊĠĠĠĠĠĠĠ ĠAction Filter . Triple , ĊĠĠĠĠĠĠĠ ĠAction Filter . Reaction , ĊĠĠĠĠĠĠĠ ĠAction Filter . Duration ĊĠĠĠ Ġ) Ċ Ċ class ĠExp ansion Manager Ġ{ ĊĠĠĠ Ġval Ġcomponents : ĠMutable List < Boolean > Ġ= Ġmutable State ListOf < Boolean >() ĊĊĠĠĠ Ġfun Ġclose All () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponents . indices . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents [ it ] Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġon Expand Ġ= Ġmutable State ListOf < () Ġ-> ĠUnit >() ĊĊĠĠĠ Ġfun Ġon Expanded ( handler : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Expand Ġ+= Ġhandler ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwhen Expanded () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Expand . forEach Ġ{ Ġit () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun Ġcomponent (): ĠComponent Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponents . add ( false ) ĊĠĠĠĠĠĠĠ ĠComponent ( components . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠComponent ( val Ġidx : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġexpand ( expanded : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Expanded () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents [ idx ] Ġ= Ġexpanded ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġval Ġexpanded Ġget () Ġ= Ġcomponents [ idx ] ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Foundation Api :: class , Ġandroidx . compose . ui . Experimental Compose Ui Api :: class ) Ċ @ Composable Ċ fun ĠSpell Filter Editor ( ĊĠĠĠ Ġfilter : ĠSpell Filter , ĊĠĠĠ Ġpreset Slot : ĠSpell Slot Spec ? Ġ= Ġnull , ĊĠĠĠ Ġshow Reset : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġupdate : Ġ( Spell Filter ) Ġ-> ĠUnit Ċ ) Ġ{ Ċ // ĠĠĠ Ġval Ġname Search F oc user Ġ= Ġremember Ġ{ ĠFocus Request er () Ġ} ĊĠĠĠ Ġval Ġscroll State Ġ= Ġremember Scroll State () ĊĠĠĠ ĠBox ( Modifier . fill Max Height ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 1 0 . dp , Ġbottom Ġ= Ġ 1 0 . dp , Ġstart Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 2 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( scroll State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpanded States Ġ= Ġremember Ġ{ ĠExp ansion Manager () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġglobal Key Events Ġ= ĠLocal Main State . current . global Key Events ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Value Ġby Ġremember Ġ{ Ġmutable State Of ( TextField Value ( filter . name )) Ġ} Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLa unched Effect ( name Search F oc user , Ġfilter ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Key Events . collect Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠnewName : ĠString ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Typed Event Ġ&& Ġit . native KeyEvent . key Char . is Letter ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewName Ġ= Ġfilter . name Ġ+ Ġit . native KeyEvent . key Char Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . type Ġ== ĠKey EventType . KeyDown Ġ&& Ġit . key Ġ== ĠKey . Back space Ġ&& Ġfilter . name . isNotEmpty ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewName Ġ= Ġfilter . name . drop Last ( 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Name Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= ĠText FieldValue ( new Name , ĠText Range ( new Name . length )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( name Ġ= ĠnewName )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Search F oc user . request Focus () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSmall TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . text Ġ!= Ġtext Value . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( name Ġ= Ġit . text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . height ( 3 8 . dp ). fill Max Width () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. focus Request er ( name Search F oc user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Name ", Ġcolor Ġ= ĠColor . White . copy ( alpha Ġ= Ġ 0 . 6 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Line Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠTextField Defaults . textField Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Color Ġ= ĠFilter Colors . divider Color . as Compose (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Cursor Color Ġ= ĠFilter Colors . divider Color . as Compose (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocused Indicator Color Ġ= ĠFilter Colors . divider Color . as Compose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . height ( 1 5 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( preset Slot Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . lists , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpell List . lists . minus ( Spell List . Other ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( lists Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Spell ĠLists ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpell List Tag ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . is C ant rip , Ġ{ Ġupdate ( filter . copy ( is C ant rip Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" C ant rip ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . is Focus , Ġ{ Ġupdate ( filter . copy ( is Focus Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Focus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Limit Ġ= Ġpreset Slot ?. max Level Ġ?: Ġ 1 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Min ĠLevel ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . weight ( 1 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button Hand ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( level Ġ= Ġfilter . level . copy ( min Ġ= Ġfilter . level . min Ġ- Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . size ( 2 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfilter . level . min Ġ> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon With Tooltip ( Icons . Default . Remove , Ġ" Minus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( filter . level . min . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button Hand ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġfilter . level . min Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( level Ġ= ĠLevel Filter ( newValue , Ġmax ( filter . level . max , ĠnewValue )))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . size ( 2 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfilter . level . min Ġ< Ġlevel Limit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon With Tooltip ( Icons . Default . Add , Ġ" Plus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Max ĠLevel ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . weight ( 1 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button Hand ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġfilter . level . max Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( level Ġ= ĠLevel Filter ( min ( newValue , Ġfilter . level . min ), ĠnewValue ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . size ( 2 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfilter . level . max Ġ> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon With Tooltip ( Icons . Default . Remove , Ġ" Minus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( filter . level . max . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button Hand ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( filter . copy ( level Ġ= Ġfilter . level . copy ( max Ġ= Ġfilter . level . max Ġ+ Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . size ( 2 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfilter . level . max Ġ< Ġlevel Limit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon With Tooltip ( Icons . Default . Add , Ġ" Plus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Divider ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . attack Types , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick able Attack Types , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( attack Types Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Attack ĠType ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttack Type Filter . Attack Ġ-> ĠAttack Tag () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAttack Type Filter . Target Save Ġ-> ĠSave Tag ( it . save , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . persistent Damage , Ġ{ Ġupdate ( filter . copy ( persistent Damage Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Persistent ĠDamage ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . conditions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteresting Spell Conditions . map Ġ{ Ġit . filter Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( conditions Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Conditions ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCondition Tag ( spell Conditions ByName . getValue ( it . name ), Ġsidebar Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . inc ap ac itation , Ġ{ Ġupdate ( filter . copy ( inc ap ac itation Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" In capac itation ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . actions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick able Action Types , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( actions Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Actions ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( Modifier . height ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActions Tag ( it . to Actions ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . has Manip ulate , Ġ{ Ġupdate ( filter . copy ( has Manip ulate Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Manip ulate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . target ing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Target ing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( target ing Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Target ing ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTarget ing Tag ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Dur ations . map Ġ{ ĠDuration Filter ( it ) Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( duration Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Duration ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDuration Tag ( it . duration , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . s ust ained , Ġ{ Ġupdate ( filter . copy ( s ust ained Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" S ust ained ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet Editor ( filter . has Action Types . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCast ActionType . values (). toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( has Action Types Ġ= Ġit . if Empty Ġ{ Ġnull Ġ})) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Required ĠCast ĠActions ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type Tag ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet Editor ( filter . does nt Have Action Types . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCast ActionType . values (). toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( does nt Have Action Types Ġ= Ġit . if Empty Ġ{ Ġnull Ġ})) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Forbidden ĠCast ĠActions ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type Tag ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . r arity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR arity . traits , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( r arity Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" R arity ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrait Tag ( traits ByName . getValue ( it . name ), Ġsidebar Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . sch ools , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchool . sch ools , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( sch ools Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" School ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrait Tag ( traits ByName . getValue ( it . name ), Ġsidebar Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . has Sum mon s , Ġ{ Ġupdate ( filter . copy ( has Sum mon s Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Has ĠSum mon s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Boolean ( filter . has Height ening , Ġ{ Ġupdate ( filter . copy ( has Height ening Ġ= Ġit )) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Height enable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Editor ( filter . traits , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnon Special Spell Traits . map Ġ{ Ġit . key Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġupdate ( filter . copy ( traits Ġ= Ġit )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠText (" Traits ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrait Tag ( traits ByName . getValue ( it . name ), Ġsidebar Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Reset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . height ( 1 0 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded States . close All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( Spell Filter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill Max Width (). align ( Alignment . Center H orizontally ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠButton Defaults . button Colors ( backgroundColor Ġ= ĠFilter Colors . cancel Reset . as Compose ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" RESET ", ĠtextAlign Ġ= ĠText Align . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġscroll Style Ġ= ĠLocal Scrollbar Style . current . let Ġ{ Ġit . copy ( un hover Color Ġ= Ġit . hover Color , Ġthickness Ġ= Ġ 1 2 . dp ) Ġ} ĊĠĠĠĠĠĠĠ ĠVertical Scrollbar ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremember Scrollbar Adapter ( scroll State ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . align ( Alignment . Center End ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġscroll Style ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }