import * as React from "react" import StackTrace from "stack-trace" import { Overlay, Header, HeaderOpenClose, Body } from "./overlay" import { useStackFrame } from "./hooks" import { CodeFrame } from "./code-frame" import { getCodeFrameInformation, openInEditor } from "../utils" import { Accordion, AccordionItem } from "./accordion" function WrappedAccordionItem({ error, open }) { const stacktrace = StackTrace.parse(error) const codeFrameInformation = getCodeFrameInformation(stacktrace) const filePath = codeFrameInformation?.moduleId const lineNumber = codeFrameInformation?.lineNumber const columnNumber = codeFrameInformation?.columnNumber const name = codeFrameInformation?.functionName const res = useStackFrame({ moduleId: filePath, lineNumber, columnNumber }) const line = res.sourcePosition?.line const Title = () => { if (!name) { return <>Unknown Runtime Error } return ( <> Error in function{` `} {name} in{` `} {filePath}:{line} ) } return ( }>

{error.message}

{filePath}:{line}
) } export function RuntimeErrors({ errors, dismiss }) { const deduplicatedErrors = React.useMemo( () => Array.from(new Set(errors)), [errors] ) const hasMultipleErrors = deduplicatedErrors.length > 1 return (

{hasMultipleErrors ? `${errors.length} Unhandled Runtime Errors` : `Unhandled Runtime Error`}

{hasMultipleErrors ? `Multiple` : `One`} unhandled runtime{` `} {hasMultipleErrors ? `errors` : `error`} found in your files. See the list below to fix {hasMultipleErrors ? `them` : `it`}:

{deduplicatedErrors.map((error, index) => ( ))}
) }