diff --git a/scripts/build/common.mjs b/scripts/build/common.mjs index db87134..33763b2 100644 --- a/scripts/build/common.mjs +++ b/scripts/build/common.mjs @@ -17,7 +17,6 @@ */ import { exec, execSync } from "child_process"; -import esbuild from "esbuild"; import { existsSync } from "fs"; import { readdir, readFile } from "fs/promises"; import { join } from "path"; @@ -142,7 +141,7 @@ export const fileIncludePlugin = { }; /** - * @type {esbuild.BuildOptions} + * @type {import("esbuild").BuildOptions} */ export const commonOpts = { logLevel: "info", @@ -152,5 +151,10 @@ export const commonOpts = { sourcemap: watch ? "inline" : "", legalComments: "linked", plugins: [fileIncludePlugin, gitHashPlugin, gitRemotePlugin], - external: ["~plugins", "~git-hash", "~git-remote"] + external: ["~plugins", "~git-hash", "~git-remote"], + inject: ["./scripts/build/inject/react.mjs"], + jsxFactory: "VencordCreateElement", + jsxFragment: "VencordFragment", + // Work around https://github.com/evanw/esbuild/issues/2460 + tsconfig: "./scripts/build/tsconfig.esbuild.json" }; diff --git a/scripts/build/inject/react.mjs b/scripts/build/inject/react.mjs new file mode 100644 index 0000000..1343b5f --- /dev/null +++ b/scripts/build/inject/react.mjs @@ -0,0 +1,21 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2022 Vendicated and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +export const VencordFragment = Symbol.for("react.fragment"); +export let VencordCreateElement = + (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args); diff --git a/scripts/build/tsconfig.esbuild.json b/scripts/build/tsconfig.esbuild.json new file mode 100644 index 0000000..e3e28a1 --- /dev/null +++ b/scripts/build/tsconfig.esbuild.json @@ -0,0 +1,7 @@ +// Work around https://github.com/evanw/esbuild/issues/2460 +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react" + } +} diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index e720c6f..b4504a2 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -23,7 +23,6 @@ import { useAwaiter } from "../utils/misc"; import { Alerts, Button, Forms, Margins, Parser, React, Switch } from "../webpack/common"; import ErrorBoundary from "./ErrorBoundary"; import { Flex } from "./Flex"; -import { launchMonacoEditor } from "./Monaco"; export default ErrorBoundary.wrap(function Settings() { const [settingsDir, , settingsDirPending] = useAwaiter(() => VencordNative.ipc.invoke(IpcEvents.GET_SETTINGS_DIR), "Loading..."); @@ -85,7 +84,7 @@ export default ErrorBoundary.wrap(function Settings() { } {IS_WEB &&