-
Notifications
You must be signed in to change notification settings - Fork 226
Expand file tree
/
Copy pathModeledMethodsList.tsx
More file actions
102 lines (92 loc) · 3.1 KB
/
ModeledMethodsList.tsx
File metadata and controls
102 lines (92 loc) · 3.1 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
import * as React from "react";
import { useMemo } from "react";
import { Method } from "../../model-editor/method";
import { 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 { ModelEditorViewState } from "../../model-editor/shared/view-state";
import { InProgressMethods } from "../../model-editor/shared/in-progress-methods";
export type ModeledMethodsListProps = {
methods: Method[];
modeledMethods: Record<string, ModeledMethod>;
modifiedSignatures: Set<string>;
inProgressMethods: InProgressMethods;
revealedMethodSignature: string | null;
viewState: ModelEditorViewState;
hideModeledMethods: boolean;
onChange: (modeledMethod: ModeledMethod) => void;
onSaveModelClick: (methodSignatures: string[]) => void;
onGenerateFromLlmClick: (
packageName: string,
methods: Method[],
modeledMethods: Record<string, ModeledMethod>,
) => void;
onStopGenerateFromLlmClick: (packageName: string) => void;
onGenerateFromSourceClick: () => void;
onModelDependencyClick: () => void;
};
const libraryNameOverrides: Record<string, string> = {
rt: "Java Runtime",
};
export const ModeledMethodsList = ({
methods,
modeledMethods,
modifiedSignatures,
inProgressMethods,
viewState,
hideModeledMethods,
revealedMethodSignature,
onChange,
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]}
modeledMethods={modeledMethods}
modifiedSignatures={modifiedSignatures}
inProgressMethods={inProgressMethods}
viewState={viewState}
hideModeledMethods={hideModeledMethods}
revealedMethodSignature={revealedMethodSignature}
onChange={onChange}
onSaveModelClick={onSaveModelClick}
onGenerateFromLlmClick={onGenerateFromLlmClick}
onStopGenerateFromLlmClick={onStopGenerateFromLlmClick}
onGenerateFromSourceClick={onGenerateFromSourceClick}
onModelDependencyClick={onModelDependencyClick}
/>
))}
</>
);
};