File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- import type { RefObject } from "react" ;
1+ import { useEffect , useState , type RefObject } from "react" ;
22
33import type { SimulatorMetadata , VideoCodecMode } from "../../api/types" ;
44import type { StreamTransportMode } from "../stream/streamWorkerClient" ;
@@ -73,6 +73,25 @@ export function Toolbar({
7373 touchOverlayVisible,
7474 videoCodec,
7575} : ToolbarProps ) {
76+ const [ errorCopied , setErrorCopied ] = useState ( false ) ;
77+
78+ useEffect ( ( ) => {
79+ setErrorCopied ( false ) ;
80+ } , [ error ] ) ;
81+
82+ async function copyError ( ) {
83+ if ( ! error ) {
84+ return ;
85+ }
86+ try {
87+ await navigator . clipboard . writeText ( error ) ;
88+ setErrorCopied ( true ) ;
89+ window . setTimeout ( ( ) => setErrorCopied ( false ) , 1200 ) ;
90+ } catch {
91+ setErrorCopied ( false ) ;
92+ }
93+ }
94+
7695 return (
7796 < header className = "toolbar" >
7897 < div className = "toolbar-left" >
@@ -205,7 +224,16 @@ export function Toolbar({
205224 </ button >
206225 </ div >
207226 ) : null }
208- { error ? < span className = "error-msg" > { error } </ span > : null }
227+ { error ? (
228+ < button
229+ className = { `error-msg ${ errorCopied ? "copied" : "" } ` }
230+ onClick = { copyError }
231+ title = { errorCopied ? "Copied" : "Copy error" }
232+ type = "button"
233+ >
234+ { errorCopied ? "Copied" : error }
235+ </ button >
236+ ) : null }
209237 </ div >
210238 </ header >
211239 ) ;
Original file line number Diff line number Diff line change 13801380}
13811381
13821382.error-msg {
1383+ height : 24px ;
1384+ padding : 0 6px ;
1385+ border : 1px solid transparent;
1386+ border-radius : 5px ;
1387+ background : transparent;
13831388 color : var (--error );
13841389 font-size : 11px ;
13851390 white-space : nowrap;
13891394 max-width : 220px ;
13901395}
13911396
1397+ .error-msg : hover {
1398+ border-color : color-mix (in srgb, var (--error ) 35% , transparent);
1399+ background : color-mix (in srgb, var (--error ) 10% , transparent);
1400+ }
1401+
1402+ .error-msg .copied {
1403+ color : var (--text );
1404+ }
1405+
13921406.muted {
13931407 color : var (--text-muted );
13941408}
You can’t perform that action at this time.
0 commit comments