11import type { ChangeEvent } from "react" ;
2- import { useCallback } from "react" ;
2+ import { useCallback , useMemo } from "react" ;
33import type {
44 ModeledMethod ,
55 ModeledMethodType ,
@@ -12,19 +12,11 @@ import type { Method } from "../../model-editor/method";
1212import { createEmptyModeledMethod } from "../../model-editor/modeled-method-empty" ;
1313import type { Mutable } from "../../common/mutable" ;
1414import { ReadonlyDropdown } from "../common/ReadonlyDropdown" ;
15- import type { QueryLanguage } from "../../common/query-language" ;
15+ import { QueryLanguage } from "../../common/query-language" ;
1616import { getModelsAsDataLanguage } from "../../model-editor/languages" ;
1717import type { ModelingStatus } from "../../model-editor/shared/modeling-status" ;
1818import { InputDropdown } from "./InputDropdown" ;
1919
20- const options : Array < { value : ModeledMethodType ; label : string } > = [
21- { value : "none" , label : "Unmodeled" } ,
22- { value : "source" , label : "Source" } ,
23- { value : "sink" , label : "Sink" } ,
24- { value : "summary" , label : "Flow summary" } ,
25- { value : "neutral" , label : "Neutral" } ,
26- ] ;
27-
2820type Props = {
2921 language : QueryLanguage ;
3022 method : Method ;
@@ -40,6 +32,21 @@ export const ModelTypeDropdown = ({
4032 modelingStatus,
4133 onChange,
4234} : Props ) : JSX . Element => {
35+ const options = useMemo ( ( ) => {
36+ const baseOptions : Array < { value : ModeledMethodType ; label : string } > = [
37+ { value : "none" , label : "Unmodeled" } ,
38+ { value : "source" , label : "Source" } ,
39+ { value : "sink" , label : "Sink" } ,
40+ { value : "summary" , label : "Flow summary" } ,
41+ { value : "neutral" , label : "Neutral" } ,
42+ ] ;
43+ if ( language === QueryLanguage . Ruby ) {
44+ baseOptions . push ( { value : "type" , label : "Type" } ) ;
45+ }
46+
47+ return baseOptions ;
48+ } , [ language ] ) ;
49+
4350 const handleChange = useCallback (
4451 ( e : ChangeEvent < HTMLSelectElement > ) => {
4552 const modelsAsDataLanguage = getModelsAsDataLanguage ( language ) ;
0 commit comments