@@ -8,7 +8,11 @@ import {
88}  from  "@/client/components/DropdownMenu" ; 
99import  {  ResizablePanel  }  from  "@/client/components/Resizable" ; 
1010import  *  as  Tabs  from  "@/client/components/Tabs" ; 
11- import  {  Tooltip ,  TooltipContent ,  TooltipTrigger  }  from  "@/client/components/Tooltip" ; 
11+ import  { 
12+ Tooltip , 
13+ TooltipContent , 
14+ TooltipTrigger , 
15+ }  from  "@/client/components/Tooltip" ; 
1216import  {  useStore  }  from  "@/client/store" ; 
1317import  { 
1418BookIcon , 
@@ -31,6 +35,8 @@ import { highlight, languages } from "prismjs/components/prism-core";
3135import  "prismjs/components/prism-hcl" ; 
3236import  "prismjs/themes/prism.css" ; 
3337import  {  cn  }  from  "@/utils/cn" ; 
38+ import  {  rpc  }  from  "@/utils/rpc" ; 
39+ import  {  useParams  }  from  "react-router" ; 
3440
3541// Adds line numbers to the highlight. 
3642const  hightlightWithLineNumbers  =  ( input : string ,  language : unknown )  => 
@@ -43,6 +49,7 @@ const hightlightWithLineNumbers = (input: string, language: unknown) =>
4349. join ( "\n" ) ; 
4450
4551export  const  Editor : FC  =  ( )  =>  { 
52+ const  params  =  useParams ( ) ; 
4653const  $code  =  useStore ( ( state )  =>  state . code ) ; 
4754const  $setCode  =  useStore ( ( state )  =>  state . setCode ) ; 
4855
@@ -58,6 +65,28 @@ export const Editor: FC = () => {
5865setCodeCopied ( ( )  =>  true ) ; 
5966} ; 
6067
68+ useEffect ( ( )  =>  { 
69+ const  loadCode  =  async  ( )  =>  { 
70+ const  {  id }  =  params ; 
71+ if  ( ! id )  { 
72+ return ; 
73+ } 
74+ 
75+ try  { 
76+ const  res  =  await  rpc . parameters [ ":id" ] . $get ( {  param : {  id }  } ) ; 
77+ if  ( res . ok )  { 
78+ const  {  code }  =  await  res . json ( ) ; 
79+ $setCode ( code ) ; 
80+ } 
81+ }  catch  ( e )  { 
82+ console . error ( `Error loading playground: ${ e }  ) ; 
83+ return ; 
84+ } 
85+ } ; 
86+ 
87+ loadCode ( ) ; 
88+ } ,  [ params ,  $setCode ] ) ; 
89+ 
6190useEffect ( ( )  =>  { 
6291if  ( ! codeCopied )  { 
6392return ; 
@@ -136,7 +165,12 @@ export const Editor: FC = () => {
136165tab  !==  "code"  &&  "hidden" , 
137166) } 
138167> 
139- < Button  className = "pointer-events-auto z-10"  variant = "subtle"  size = "sm"  onClick = { onCopy } > 
168+ < Button 
169+ className = "pointer-events-auto z-10" 
170+ variant = "subtle" 
171+ size = "sm" 
172+ onClick = { onCopy } 
173+ > 
140174{ codeCopied  ? < CheckIcon  />  : < CopyIcon  /> }  Copy
141175</ Button > 
142176</ div > 
0 commit comments