@@ -10,11 +10,7 @@ import { styled } from "styled-components";
1010import { vscode } from "../vscode-api" ;
1111
1212import { Method } from "../../model-editor/method" ;
13- import {
14- ModeledMethod ,
15- ModeledMethodType ,
16- Provenance ,
17- } from "../../model-editor/modeled-method" ;
13+ import { ModeledMethod } from "../../model-editor/modeled-method" ;
1814import { KindInput } from "./KindInput" ;
1915import { extensiblePredicateDefinitions } from "../../model-editor/predicates" ;
2016import { Mode } from "../../model-editor/shared/mode" ;
@@ -26,6 +22,7 @@ import {
2622} from "./ModelingStatusIndicator" ;
2723import { InProgressDropdown } from "./InProgressDropdown" ;
2824import { MethodName } from "./MethodName" ;
25+ import { ModelTypeDropdown } from "./ModelTypeDropdown" ;
2926
3027const ApiOrMethodCell = styled ( VSCodeDataGridCell ) `
3128 display: flex;
@@ -52,14 +49,6 @@ const ProgressRing = styled(VSCodeProgressRing)`
5249 margin-left: auto;
5350` ;
5451
55- const modelTypeOptions : Array < { value : ModeledMethodType ; label : string } > = [
56- { value : "none" , label : "Unmodeled" } ,
57- { value : "source" , label : "Source" } ,
58- { value : "sink" , label : "Sink" } ,
59- { value : "summary" , label : "Flow summary" } ,
60- { value : "neutral" , label : "Neutral" } ,
61- ] ;
62-
6352export type MethodRowProps = {
6453 method : Method ;
6554 methodCanBeModeled : boolean ;
@@ -92,32 +81,6 @@ function ModelableMethodRow(props: MethodRowProps) {
9281 . split ( "," ) ;
9382 } , [ method . methodParameters ] ) ;
9483
95- const handleTypeInput = useCallback (
96- ( e : ChangeEvent < HTMLSelectElement > ) => {
97- let newProvenance : Provenance = "manual" ;
98- if ( modeledMethod ?. provenance === "df-generated" ) {
99- newProvenance = "df-manual" ;
100- } else if ( modeledMethod ?. provenance === "ai-generated" ) {
101- newProvenance = "ai-manual" ;
102- }
103-
104- onChange ( method , {
105- // If there are no arguments, we will default to "Argument[this]"
106- input : argumentsList . length === 0 ? "Argument[this]" : "Argument[0]" ,
107- output : "ReturnValue" ,
108- kind : "value" ,
109- ...modeledMethod ,
110- type : e . target . value as ModeledMethodType ,
111- provenance : newProvenance ,
112- signature : method . signature ,
113- packageName : method . packageName ,
114- typeName : method . typeName ,
115- methodName : method . methodName ,
116- methodParameters : method . methodParameters ,
117- } ) ;
118- } ,
119- [ onChange , method , modeledMethod , argumentsList ] ,
120- ) ;
12184 const handleInputInput = useCallback (
12285 ( e : ChangeEvent < HTMLSelectElement > ) => {
12386 if ( ! modeledMethod ) {
@@ -235,11 +198,10 @@ function ModelableMethodRow(props: MethodRowProps) {
235198 { ! props . modelingInProgress && (
236199 < >
237200 < VSCodeDataGridCell gridColumn = { 2 } >
238- < Dropdown
239- value = { modeledMethod ?. type ?? "none" }
240- options = { modelTypeOptions }
241- onChange = { handleTypeInput }
242- aria-label = "Model type"
201+ < ModelTypeDropdown
202+ method = { method }
203+ modeledMethod = { modeledMethod }
204+ onChange = { onChange }
243205 />
244206 </ VSCodeDataGridCell >
245207 < VSCodeDataGridCell gridColumn = { 3 } >
0 commit comments