@@ -28,7 +28,11 @@ import {
2828} from "@/client/components/Tooltip" ;
2929import { useDebouncedValue } from "@/client/hooks/debounce" ;
3030import { useEffectEvent } from "@/client/hooks/hookPolyfills" ;
31- import type { NullHCLString , Parameter , ParameterOption } from "@/gen/types" ;
31+ import type {
32+ NullHCLString ,
33+ ParameterWithSource as Parameter ,
34+ ParameterOption ,
35+ } from "@/gen/types" ;
3236import {
3337 CircleAlert ,
3438 Info ,
@@ -38,6 +42,7 @@ import {
3842} from "lucide-react" ;
3943import { type FC , useEffect , useId , useRef , useState } from "react" ;
4044import * as Yup from "yup" ;
45+ import { useStore } from "@/client/store" ;
4146
4247interface WorkspaceBuildParameter {
4348 readonly name : string ;
@@ -121,6 +126,19 @@ const ParameterLabel: FC<ParameterLabelProps> = ({
121126 autofill,
122127 id,
123128} ) => {
129+ const $editor = useStore ( ( state ) => state . editor ) ;
130+
131+ const onGoToDefinition = ( ) => {
132+ $editor ?. revealLine ( parameter . def_range . Start . Line ) ;
133+ $editor ?. setSelection ( {
134+ startLineNumber : parameter . def_range . Start . Line ,
135+ startColumn : parameter . def_range . Start . Column ,
136+ endColumn : parameter . def_range . End . Column ,
137+ endLineNumber : parameter . def_range . End . Line ,
138+ } ) ;
139+ $editor ?. focus ( )
140+ } ;
141+
124142 const displayName = parameter . display_name
125143 ? parameter . display_name
126144 : parameter . name ;
@@ -130,26 +148,17 @@ const ParameterLabel: FC<ParameterLabelProps> = ({
130148
131149 return (
132150 < div className = "flex items-start gap-2" >
133- {
134- // {parameter.icon && (
135- // <ExternalImage
136- // className="w-5 h-5 mt-0.5 object-contain"
137- // alt="Parameter icon"
138- // src={parameter.icon}
139- // />
140- // )}
141- }
142151 < div className = "flex w-full flex-col gap-1" >
143152 < Label
144153 htmlFor = { id }
145154 className = "flex flex-wrap gap-2 font-medium text-content-primary text-sm"
146155 >
147- < span className = "flex" >
156+ < button className = "flex hover:underline" onClick = { onGoToDefinition } >
148157 { displayName }
149158 { parameter . required && (
150159 < span className = "text-content-destructive" > *</ span >
151160 ) }
152- </ span >
161+ </ button >
153162 { ! parameter . mutable && (
154163 < TooltipProvider delayDuration = { 100 } >
155164 < Tooltip >
0 commit comments