55 VSCodeProgressRing ,
66} from "@vscode/webview-ui-toolkit/react" ;
77import * as React from "react" ;
8- import { forwardRef , useCallback , useEffect , useRef } from "react" ;
8+ import { forwardRef , useCallback , useEffect , useMemo , useRef } from "react" ;
99import { styled } from "styled-components" ;
1010import { vscode } from "../vscode-api" ;
1111
@@ -103,9 +103,15 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
103103 onChange,
104104 } = props ;
105105
106- const modeledMethods = viewState . showMultipleModels
107- ? modeledMethodsProp
108- : modeledMethodsProp . slice ( 0 , 1 ) ;
106+ const modeledMethods : Array < ModeledMethod | undefined > = useMemo (
107+ ( ) =>
108+ modeledMethodsProp . length === 0
109+ ? [ undefined ]
110+ : viewState . showMultipleModels
111+ ? modeledMethodsProp
112+ : modeledMethodsProp . slice ( 0 , 1 ) ,
113+ [ modeledMethodsProp , viewState ] ,
114+ ) ;
109115
110116 const jumpToMethod = useCallback (
111117 ( ) => sendJumpToMethodMessage ( method ) ,
@@ -153,7 +159,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
153159 { ! props . modelingInProgress && (
154160 < >
155161 < MultiModelColumn gridColumn = { 2 } >
156- { forEachModeledMethod ( modeledMethods , ( modeledMethod , index ) => (
162+ { modeledMethods . map ( ( modeledMethod , index ) => (
157163 < ModelTypeDropdown
158164 key = { index }
159165 method = { method }
@@ -163,7 +169,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
163169 ) ) }
164170 </ MultiModelColumn >
165171 < MultiModelColumn gridColumn = { 3 } >
166- { forEachModeledMethod ( modeledMethods , ( modeledMethod , index ) => (
172+ { modeledMethods . map ( ( modeledMethod , index ) => (
167173 < ModelInputDropdown
168174 key = { index }
169175 method = { method }
@@ -173,7 +179,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
173179 ) ) }
174180 </ MultiModelColumn >
175181 < MultiModelColumn gridColumn = { 4 } >
176- { forEachModeledMethod ( modeledMethods , ( modeledMethod , index ) => (
182+ { modeledMethods . map ( ( modeledMethod , index ) => (
177183 < ModelOutputDropdown
178184 key = { index }
179185 method = { method }
@@ -183,7 +189,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
183189 ) ) }
184190 </ MultiModelColumn >
185191 < MultiModelColumn gridColumn = { 5 } >
186- { forEachModeledMethod ( modeledMethods , ( modeledMethod , index ) => (
192+ { modeledMethods . map ( ( modeledMethod , index ) => (
187193 < ModelKindDropdown
188194 key = { index }
189195 method = { method }
@@ -244,17 +250,3 @@ function sendJumpToMethodMessage(method: Method) {
244250 methodSignature : method . signature ,
245251 } ) ;
246252}
247-
248- function forEachModeledMethod (
249- modeledMethods : ModeledMethod [ ] ,
250- renderer : (
251- modeledMethod : ModeledMethod | undefined ,
252- index : number ,
253- ) => JSX . Element ,
254- ) : JSX . Element | JSX . Element [ ] {
255- if ( modeledMethods . length === 0 ) {
256- return renderer ( undefined , 0 ) ;
257- } else {
258- return modeledMethods . map ( renderer ) ;
259- }
260- }
0 commit comments