@@ -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 {
3337CircleAlert ,
3438Info ,
@@ -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 {
4348readonly name : string ;
@@ -121,6 +126,19 @@ const ParameterLabel: FC<ParameterLabelProps> = ({
121126autofill,
122127id,
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+
124142const displayName = parameter . display_name
125143? parameter . display_name
126144: parameter . name ;
@@ -130,26 +148,17 @@ const ParameterLabel: FC<ParameterLabelProps> = ({
130148
131149return (
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
144153htmlFor = { id }
145154className = "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