@@ -4,16 +4,23 @@ import Select from './Select.svelte';
4
4
import Fa from ' svelte-fa' ;
5
5
import type { ModelInfo } from ' @shared/models/IModelInfo' ;
6
6
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
+ }
12
22
13
- /**
14
- * List of models
15
- */
16
- export let models: ModelInfo [];
23
+ let { disabled = false , recommended = undefined , models, value = undefined }: Props = $props ();
17
24
18
25
function getModelSortingScore(modelInfo : ModelInfo ): number {
19
26
let score: number = 0 ;
@@ -22,21 +29,17 @@ function getModelSortingScore(modelInfo: ModelInfo): number {
22
29
return score ;
23
30
}
24
31
25
- /**
26
- * Current value selected
27
- */
28
- export let value: ModelInfo | undefined = undefined ;
29
-
30
32
/**
31
33
* Handy mechanism to provide the mandatory property `label` and `value` to the Select component
32
34
*/
33
- let selected: (ModelInfo & { label: string ; value: string }) | undefined = undefined ;
34
- $ : {
35
+ let selected: (ModelInfo & { label: string ; value: string }) | undefined = $derived .by (() => {
35
36
// let's select a default model
36
37
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 ;
38
41
}
39
- }
42
+ });
40
43
41
44
function handleOnChange(nValue : (ModelInfo & { label: string ; value: string }) | undefined ): void {
42
45
value = nValue ;
0 commit comments