-
Notifications
You must be signed in to change notification settings - Fork 28.2k
/
Copy pathdev-overlay.tsx
63 lines (59 loc) · 2.01 KB
/
dev-overlay.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import type { OverlayState } from '../shared'
import { ShadowPortal } from './components/shadow-portal'
import { Base } from './styles/base'
import { ComponentStyles } from './styles/component-styles'
import { CssReset } from './styles/css-reset'
import { Colors } from './styles/colors'
import { ErrorOverlay } from './components/errors/error-overlay/error-overlay'
import { DevToolsIndicator } from './components/errors/dev-tools-indicator/dev-tools-indicator'
import { RenderError } from './container/runtime-error/render-error'
import { DarkTheme } from './styles/dark-theme'
import { useDevToolsScale } from './components/errors/dev-tools-indicator/dev-tools-info/preferences'
export function DevOverlay({
state,
isErrorOverlayOpen,
setIsErrorOverlayOpen,
}: {
state: OverlayState
isErrorOverlayOpen: boolean
setIsErrorOverlayOpen: (
isErrorOverlayOpen: boolean | ((prev: boolean) => boolean)
) => void
}) {
const [scale, setScale] = useDevToolsScale()
return (
<ShadowPortal>
<CssReset />
<Base scale={scale} />
<Colors />
<ComponentStyles />
<DarkTheme />
<RenderError state={state} isAppDir={true}>
{({ runtimeErrors, totalErrorCount }) => {
const isBuildError = state.buildError !== null
return (
<>
{state.showIndicator && (
<DevToolsIndicator
scale={scale}
setScale={setScale}
state={state}
errorCount={totalErrorCount}
isBuildError={isBuildError}
setIsErrorOverlayOpen={setIsErrorOverlayOpen}
/>
)}
<ErrorOverlay
state={state}
runtimeErrors={runtimeErrors}
errorCount={totalErrorCount}
isErrorOverlayOpen={isErrorOverlayOpen}
setIsErrorOverlayOpen={setIsErrorOverlayOpen}
/>
</>
)
}}
</RenderError>
</ShadowPortal>
)
}