UNPKG

@graphiql/react

Version:

[Changelog](https://github.com/graphql/graphiql/blob/main/packages/graphiql-react/CHANGELOG.md) | [API Docs](https://graphiql-test.netlify.app/typedoc/modules/graphiql_react.html) | [NPM](https://www.npmjs.com/package/@graphiql/react)

57 lines (56 loc) 1.92 kB
import { createStore } from "zustand"; import { JSON_DIAGNOSTIC_OPTIONS, MONACO_THEME_NAME, MONACO_THEME_DATA, MONACO_GRAPHQL_DIAGNOSTIC_SETTINGS } from "../constants.js"; import { createBoundedUseStore } from "../utility/create-bounded-use-store.js"; async function patchFirefox() { const { MouseTargetFactory } = await import( // @ts-expect-error -- no types "monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js" ); const originalFn = MouseTargetFactory._doHitTestWithCaretPositionFromPoint; MouseTargetFactory._doHitTestWithCaretPositionFromPoint = (...args) => { const [ctx, coords] = args; const hitResult = ctx.viewDomNode.ownerDocument.caretPositionFromPoint(coords.clientX, coords.clientY); if (hitResult) { const result = originalFn(...args); return result; } return { type: 0 }; }; } const monacoStore = createStore((set, get) => ({ actions: { async initialize() { const isInitialized = Boolean(get().monaco); if (isInitialized) { return; } const [monaco, { initializeMode }] = await Promise.all([import("monaco-graphql/esm/monaco-editor.js"), import("monaco-graphql/esm/lite.js")]); globalThis.__MONACO = monaco; monaco.languages.json.jsonDefaults.setDiagnosticsOptions(JSON_DIAGNOSTIC_OPTIONS); monaco.editor.defineTheme(MONACO_THEME_NAME.dark, MONACO_THEME_DATA.dark); monaco.editor.defineTheme(MONACO_THEME_NAME.light, MONACO_THEME_DATA.light); if (navigator.userAgent.includes("Firefox/")) { void patchFirefox(); } const monacoGraphQL = initializeMode({ diagnosticSettings: MONACO_GRAPHQL_DIAGNOSTIC_SETTINGS }); set({ monaco, monacoGraphQL }); } } })); const useMonaco = createBoundedUseStore(monacoStore); export { monacoStore, useMonaco }; //# sourceMappingURL=monaco.js.map