@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
JavaScript
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