-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathDevModePanel.tsx
More file actions
63 lines (55 loc) · 2.52 KB
/
DevModePanel.tsx
File metadata and controls
63 lines (55 loc) · 2.52 KB
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
// @ts-strict-ignore
import { useDashboardTheme } from "@dashboard/components/GraphiQL/styles";
import { DashboardModal } from "@dashboard/components/Modal";
import { useOnboarding } from "@dashboard/welcomePage/WelcomePageOnboarding/onboardingContext";
import { type FetcherOpts, type FetcherParams } from "@graphiql/toolkit";
import { useIntl } from "react-intl";
import { ContextualLine } from "../AppLayout/ContextualLinks/ContextualLine";
import { useContextualLink } from "../AppLayout/ContextualLinks/useContextualLink";
import PlainGraphiQL from "../GraphiQLPlain";
import { useDevModeContext } from "./hooks";
import { messages } from "./messages";
import { getFetcher } from "./utils";
export const DevModePanel = () => {
const intl = useIntl();
const subtitle = useContextualLink("dev_panel");
const { rootStyle } = useDashboardTheme();
const { markOnboardingStepAsCompleted } = useOnboarding();
const { isDevModeVisible, variables, devModeContent, setDevModeVisibility } = useDevModeContext();
const fetcher = async (graphQLParams: FetcherParams, opts: FetcherOpts) => {
if (graphQLParams.operationName !== "IntrospectionQuery") {
markOnboardingStepAsCompleted("graphql-playground");
}
const baseFetcher = getFetcher(opts);
const result = await baseFetcher(graphQLParams, opts);
return result;
};
const overwriteCodeMirrorCSSVariables = {
__html: `
.graphiql-container, .CodeMirror-info, .CodeMirror-lint-tooltip, reach-portal{
--font-size-hint: ${rootStyle["--font-size-hint"]} !important;
--font-size-inline-code: ${rootStyle["--font-size-inline-code"]} !important;
--font-size-body: ${rootStyle["--font-size-body"]} !important;
--font-size-h4: ${rootStyle["--font-size-h4"]} !important;
--font-size-h3: ${rootStyle["--font-size-h3"]} !important;
--font-size-h2: ${rootStyle["--font-size-h2"]} !important;
`,
};
return (
<DashboardModal open={isDevModeVisible} onChange={() => setDevModeVisibility(false)}>
<DashboardModal.Content
size="xl"
__gridTemplateRows="auto 1fr"
height="100%"
disableEscapeKeyDown
>
<style dangerouslySetInnerHTML={overwriteCodeMirrorCSSVariables}></style>
<DashboardModal.Header>
{intl.formatMessage(messages.title)}
<ContextualLine>{subtitle}</ContextualLine>
</DashboardModal.Header>
<PlainGraphiQL query={devModeContent} variables={variables} fetcher={fetcher} />
</DashboardModal.Content>
</DashboardModal>
);
};