@@ -4,16 +4,23 @@ import Select from './Select.svelte';
44import Fa from ' svelte-fa' ;
55import type { ModelInfo } from ' @shared/models/IModelInfo' ;
66
7- export let disabled: boolean = false ;
8- /**
9- * Recommended model ids
10- */
11- export let recommended: string [] | undefined = undefined ;
7+ interface Props {
8+ disabled? : boolean ;
9+ /**
10+ * Recommended model ids
11+ */
12+ recommended? : string [];
13+ /**
14+ * List of models
15+ */
16+ models: ModelInfo [];
17+ /**
18+ * Current value selected
19+ */
20+ value: ModelInfo | undefined ;
21+ }
1222
13- /**
14- * List of models
15- */
16- export let models: ModelInfo [];
23+ let { disabled = false , recommended = undefined , models, value = undefined }: Props = $props ();
1724
1825function getModelSortingScore(modelInfo : ModelInfo ): number {
1926 let score: number = 0 ;
@@ -22,21 +29,17 @@ function getModelSortingScore(modelInfo: ModelInfo): number {
2229 return score ;
2330}
2431
25- /**
26- * Current value selected
27- */
28- export let value: ModelInfo | undefined = undefined ;
29-
3032/**
3133 * Handy mechanism to provide the mandatory property `label` and `value` to the Select component
3234 */
33- let selected: (ModelInfo & { label: string ; value: string }) | undefined = undefined ;
34- $ : {
35+ let selected: (ModelInfo & { label: string ; value: string }) | undefined = $derived .by (() => {
3536 // let's select a default model
3637 if (value ) {
37- selected = { ... value , label: value .name , value: value .id };
38+ return { ... value , label: value .name , value: value .id };
39+ } else {
40+ return undefined ;
3841 }
39- }
42+ });
4043
4144function handleOnChange(nValue : (ModelInfo & { label: string ; value: string }) | undefined ): void {
4245 value = nValue ;
0 commit comments