@@ -58,7 +58,30 @@ type Props = {
5858} ;
5959
6060export const MethodRow = ( props : Props ) => {
61- const { externalApiUsage, modeledMethod, mode, onChange } = props ;
61+ const { externalApiUsage, modeledMethod } = props ;
62+
63+ const jumpToUsage = useCallback ( ( ) => {
64+ vscode . postMessage ( {
65+ t : "jumpToUsage" ,
66+ // In framework mode, the first and only usage is the definition of the method
67+ location : externalApiUsage . usages [ 0 ] . url ,
68+ } ) ;
69+ } , [ externalApiUsage ] ) ;
70+
71+ const methodCanBeModeled =
72+ ! externalApiUsage . supported ||
73+ ( modeledMethod && modeledMethod ?. type !== "none" ) ;
74+
75+ if ( methodCanBeModeled ) {
76+ return < ModelableMethodRow { ...props } jumpToUsage = { jumpToUsage } /> ;
77+ } else {
78+ return < UmmodelableMethodRow { ...props } jumpToUsage = { jumpToUsage } /> ;
79+ }
80+ } ;
81+
82+ function ModelableMethodRow ( props : Props & { jumpToUsage : ( ) => void } ) {
83+ const { externalApiUsage, modeledMethod, mode, onChange, jumpToUsage } =
84+ props ;
6285
6386 const argumentsList = useMemo ( ( ) => {
6487 if ( externalApiUsage . methodParameters === "()" ) {
@@ -134,14 +157,6 @@ export const MethodRow = (props: Props) => {
134157 [ onChange , externalApiUsage , modeledMethod ] ,
135158 ) ;
136159
137- const jumpToUsage = useCallback ( ( ) => {
138- vscode . postMessage ( {
139- t : "jumpToUsage" ,
140- // In framework mode, the first and only usage is the definition of the method
141- location : externalApiUsage . usages [ 0 ] . url ,
142- } ) ;
143- } , [ externalApiUsage ] ) ;
144-
145160 const inputOptions = useMemo (
146161 ( ) => [
147162 { value : "Argument[this]" , label : "Argument[this]" } ,
@@ -165,14 +180,6 @@ export const MethodRow = (props: Props) => {
165180 [ argumentsList ] ,
166181 ) ;
167182
168- const methodCanBeModeled =
169- ! externalApiUsage . supported ||
170- ( modeledMethod && modeledMethod ?. type !== "none" ) ;
171-
172- if ( ! methodCanBeModeled ) {
173- return < UmmodelableMethodRow { ...props } jumpToUsage = { jumpToUsage } /> ;
174- }
175-
176183 const showInputCell =
177184 modeledMethod ?. type && [ "sink" , "summary" ] . includes ( modeledMethod ?. type ) ;
178185 const showOutputCell =
@@ -228,7 +235,7 @@ export const MethodRow = (props: Props) => {
228235 </ VSCodeDataGridCell >
229236 </ VSCodeDataGridRow >
230237 ) ;
231- } ;
238+ }
232239
233240function UmmodelableMethodRow ( props : {
234241 externalApiUsage : ExternalApiUsage ;
0 commit comments