-
Notifications
You must be signed in to change notification settings - Fork 226
Expand file tree
/
Copy pathModeledMethodsList.tsx
More file actions
105 lines (95 loc) · 3.21 KB
/
ModeledMethodsList.tsx
File metadata and controls
105 lines (95 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import { useMemo } from "react";
import type { Method } from "../../model-editor/method";
import type { ModeledMethod } from "../../model-editor/modeled-method";
import { LibraryRow } from "./LibraryRow";
import { Mode } from "../../model-editor/shared/mode";
import {
groupMethods,
sortGroupNames,
} from "../../model-editor/shared/sorting";
import type { ModelEditorViewState } from "../../model-editor/shared/view-state";
export type ModeledMethodsListProps = {
methods: Method[];
modeledMethodsMap: Record<string, ModeledMethod[]>;
modifiedSignatures: Set<string>;
selectedSignatures: Set<string>;
inProgressMethods: Set<string>;
revealedMethodSignature: string | null;
viewState: ModelEditorViewState;
hideModeledMethods: boolean;
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
onMethodClick: (methodSignature: string) => void;
onSaveModelClick: (methodSignatures: string[]) => void;
onGenerateFromLlmClick: (
packageName: string,
methodSignatures: string[],
) => void;
onStopGenerateFromLlmClick: (packageName: string) => void;
onGenerateFromSourceClick: () => void;
onModelDependencyClick: () => void;
};
const libraryNameOverrides: Record<string, string> = {
rt: "Java Runtime",
};
export const ModeledMethodsList = ({
methods,
modeledMethodsMap,
modifiedSignatures,
selectedSignatures,
inProgressMethods,
viewState,
hideModeledMethods,
revealedMethodSignature,
onChange,
onMethodClick,
onSaveModelClick,
onGenerateFromLlmClick,
onStopGenerateFromLlmClick,
onGenerateFromSourceClick,
onModelDependencyClick,
}: ModeledMethodsListProps) => {
const grouped = useMemo(
() => groupMethods(methods, viewState.mode),
[methods, viewState.mode],
);
const libraryVersions = useMemo(() => {
if (viewState.mode !== Mode.Application) {
return {};
}
const libraryVersions: Record<string, string> = {};
for (const method of methods) {
const { library, libraryVersion } = method;
if (library && libraryVersion) {
libraryVersions[library] = libraryVersion;
}
}
return libraryVersions;
}, [methods, viewState.mode]);
const sortedGroupNames = useMemo(() => sortGroupNames(grouped), [grouped]);
return (
<>
{sortedGroupNames.map((libraryName) => (
<LibraryRow
key={libraryName}
title={libraryNameOverrides[libraryName] ?? libraryName}
libraryVersion={libraryVersions[libraryName]}
methods={grouped[libraryName]}
modeledMethodsMap={modeledMethodsMap}
modifiedSignatures={modifiedSignatures}
selectedSignatures={selectedSignatures}
inProgressMethods={inProgressMethods}
viewState={viewState}
hideModeledMethods={hideModeledMethods}
revealedMethodSignature={revealedMethodSignature}
onChange={onChange}
onMethodClick={onMethodClick}
onSaveModelClick={onSaveModelClick}
onGenerateFromLlmClick={onGenerateFromLlmClick}
onStopGenerateFromLlmClick={onStopGenerateFromLlmClick}
onGenerateFromSourceClick={onGenerateFromSourceClick}
onModelDependencyClick={onModelDependencyClick}
/>
))}
</>
);
};