Compare commits
No commits in common. "f1a67636a9cb76ef7cfc4049e2928ac473173417" and "db487bab193938af7c2c8cc75c34d2674805cee9" have entirely different histories.
f1a67636a9
...
db487bab19
7 changed files with 5 additions and 171 deletions
|
@ -1,9 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
imports = [
|
imports = [./common.nix];
|
||||||
./common.nix
|
|
||||||
|
|
||||||
../programs/rust.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
nil
|
nil
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
agenix,
|
agenix,
|
||||||
home-manager,
|
home-manager,
|
||||||
vencord,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
username = "leo";
|
username = "leo";
|
||||||
|
@ -29,6 +28,7 @@ in {
|
||||||
|
|
||||||
../programs/fish.nix
|
../programs/fish.nix
|
||||||
../programs/git.nix
|
../programs/git.nix
|
||||||
|
../programs/rust.nix
|
||||||
../programs/starship
|
../programs/starship
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ in {
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [(import ../exprs/overlay.nix vencord)];
|
overlays = [(import ../exprs/overlay.nix)];
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
strawberry
|
strawberry
|
||||||
teams-for-linux
|
teams-for-linux
|
||||||
thunderbird
|
thunderbird
|
||||||
(vesktop.override {withSystemVencord = true;})
|
(vesktop.override {withSystemVencord = false;})
|
||||||
vscode
|
vscode
|
||||||
|
|
||||||
# libreoffice stuff
|
# libreoffice stuff
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
vencord-input: final: prev: {
|
final: prev: {
|
||||||
svn2git = prev.svn2git.overrideAttrs (_: rec {
|
svn2git = prev.svn2git.overrideAttrs (_: rec {
|
||||||
version = "2.4.2";
|
version = "2.4.2";
|
||||||
|
|
||||||
|
@ -11,15 +11,4 @@ vencord-input: final: prev: {
|
||||||
});
|
});
|
||||||
|
|
||||||
idea-ultimate-fixed = prev.callPackage ./idea-fixed.nix {};
|
idea-ultimate-fixed = prev.callPackage ./idea-fixed.nix {};
|
||||||
|
|
||||||
vencord = prev.vencord.overrideAttrs (old: {
|
|
||||||
src =
|
|
||||||
vencord-input
|
|
||||||
// {
|
|
||||||
owner = "Vendicated";
|
|
||||||
repo = "Vencord";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = old.patches or [] ++ [./ventex.patch];
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,128 +0,0 @@
|
||||||
diff --git a/src/plugins/ventex/README.md b/src/plugins/ventex/README.md
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..3a0dc43d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/plugins/ventex/README.md
|
|
||||||
@@ -0,0 +1,4 @@
|
|
||||||
+# vencord katex thing
|
|
||||||
+[forum guidelines told me to link this](https://docs.vencord.dev/installing/custom-plugins/)
|
|
||||||
+
|
|
||||||
+renders inline codeblocks starting and ending in `$` and codeblocks with the language `latex` in TeX using KaTeX
|
|
||||||
\ No newline at end of file
|
|
||||||
diff --git a/src/plugins/ventex/index.tsx b/src/plugins/ventex/index.tsx
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..11fc0d22
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/plugins/ventex/index.tsx
|
|
||||||
@@ -0,0 +1,97 @@
|
|
||||||
+import "./katex.css";
|
|
||||||
+
|
|
||||||
+import { Devs } from "@utils/constants";
|
|
||||||
+import definePlugin, { ReporterTestable } from "@utils/types";
|
|
||||||
+import { makeLazy } from "@utils/lazy";
|
|
||||||
+import { React, useEffect, useMemo, useState } from "@webpack/common";
|
|
||||||
+
|
|
||||||
+// @ts-expect-error
|
|
||||||
+export const getKatex = /* #__PURE__*/ makeLazy(async () => (await import("https://unpkg.com/katex@0.16.9/dist/katex.mjs")).default);
|
|
||||||
+
|
|
||||||
+export function useKatex() {
|
|
||||||
+ const [katex, setKatex] = useState();
|
|
||||||
+ useEffect(() => {
|
|
||||||
+ if (katex === undefined)
|
|
||||||
+ getKatex().then(setKatex);
|
|
||||||
+ });
|
|
||||||
+ return katex;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+// @ts-expect-error
|
|
||||||
+export const getDomPurify = /* #__PURE__*/ makeLazy(async () => (await import("https://unpkg.com/dompurify@3.1.7/dist/purify.es.mjs")).default);
|
|
||||||
+
|
|
||||||
+export function useDomPurify() {
|
|
||||||
+ const [domPurify, setDomPurify] = useState();
|
|
||||||
+ useEffect(() => {
|
|
||||||
+ if (domPurify === undefined)
|
|
||||||
+ getDomPurify().then(setDomPurify);
|
|
||||||
+ });
|
|
||||||
+ return domPurify;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+export interface HighlighterProps {
|
|
||||||
+ lang?: string;
|
|
||||||
+ content: string;
|
|
||||||
+ isPreview: boolean;
|
|
||||||
+ tempSettings?: Record<string, any>;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+export default definePlugin({
|
|
||||||
+ name: "KaTeX",
|
|
||||||
+ description: "TeX typesetting in discord",
|
|
||||||
+ authors: [Devs.skyevg],
|
|
||||||
+ reporterTestable: ReporterTestable.Patches,
|
|
||||||
+
|
|
||||||
+ patches: [
|
|
||||||
+ {
|
|
||||||
+ find: "codeBlock:{react(",
|
|
||||||
+ replacement: {
|
|
||||||
+ match: /codeBlock:\{react\((\i),(\i),(\i)\)\{/,
|
|
||||||
+ replace: "$&if($1.lang == 'latex') return $self.createBlock($1,$2,$3);"
|
|
||||||
+ }
|
|
||||||
+ },
|
|
||||||
+ {
|
|
||||||
+ find: "inlineCode:{react:(",
|
|
||||||
+ replacement: {
|
|
||||||
+ match: /inlineCode:\{react:\((\i),(\i),(\i)\)=>/,
|
|
||||||
+ replace: "$&($1.content.startsWith('$$') && $1.content.endsWith('$$'))?$self.createInline($1,$2,$3):"
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ ],
|
|
||||||
+ start: async () => {
|
|
||||||
+ useKatex();
|
|
||||||
+ useDomPurify();
|
|
||||||
+ },
|
|
||||||
+ stop: () => {
|
|
||||||
+ },
|
|
||||||
+
|
|
||||||
+ createBlock: (props: HighlighterProps) => (
|
|
||||||
+ <LazyLatex displayMode formula={props.content} />
|
|
||||||
+ ),
|
|
||||||
+ createInline: (props: HighlighterProps) => (
|
|
||||||
+ <LazyLatex formula={props.content.substring(1, props.content.length - 1)} />
|
|
||||||
+ ),
|
|
||||||
+});
|
|
||||||
+
|
|
||||||
+function LazyLatex(props) {
|
|
||||||
+ const { formula } = props;
|
|
||||||
+ const katex = useKatex();
|
|
||||||
+ const domPurify = useDomPurify();
|
|
||||||
+ return katex && domPurify
|
|
||||||
+ ? <Latex {...props} katex={katex} domPurify={domPurify} />
|
|
||||||
+ : <code>{formula}</code>;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+function Latex({ katex, formula, displayMode, domPurify }) {
|
|
||||||
+ const result = useMemo(() => {
|
|
||||||
+ const html = katex.renderToString(formula, {
|
|
||||||
+ displayMode,
|
|
||||||
+ throwOnError: false
|
|
||||||
+ });
|
|
||||||
+ return domPurify.sanitize(html);
|
|
||||||
+ }, [formula, displayMode]);
|
|
||||||
+
|
|
||||||
+ return displayMode
|
|
||||||
+ ? <div className="tex" dangerouslySetInnerHTML={{ __html: result }} />
|
|
||||||
+ : <span className="tex" dangerouslySetInnerHTML={{ __html: result }} />;
|
|
||||||
+}
|
|
||||||
\ No newline at end of file
|
|
||||||
diff --git a/src/plugins/ventex/katex.css b/src/plugins/ventex/katex.css
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..fbc06b44
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/plugins/ventex/katex.css
|
|
||||||
@@ -0,0 +1,6 @@
|
|
||||||
+@import url("https://unpkg.com/katex@0.16.9/dist/katex.min.css");
|
|
||||||
+
|
|
||||||
+.katex-display {
|
|
||||||
+ width: min-content;
|
|
||||||
+ margin: 1em;
|
|
||||||
+}
|
|
||||||
\ No newline at end of file
|
|
17
flake.lock
generated
17
flake.lock
generated
|
@ -333,7 +333,6 @@
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"systems": "systems_2",
|
"systems": "systems_2",
|
||||||
"ukubot-rs": "ukubot-rs",
|
"ukubot-rs": "ukubot-rs",
|
||||||
"vencord": "vencord",
|
|
||||||
"vscode-extensions": "vscode-extensions"
|
"vscode-extensions": "vscode-extensions"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -411,22 +410,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vencord": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1729849691,
|
|
||||||
"narHash": "sha256-3bCw0ocP8Z5hLPC7dEwz0ckSUCKwHHLMY7BSMXpd/iA=",
|
|
||||||
"owner": "Vendicated",
|
|
||||||
"repo": "Vencord",
|
|
||||||
"rev": "88e8fa7e904e525c4c1110d057f0812e4008ff7c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Vendicated",
|
|
||||||
"repo": "Vencord",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vscode-extensions": {
|
"vscode-extensions": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [],
|
"flake-compat": [],
|
||||||
|
|
|
@ -127,11 +127,5 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.flake-parts.follows = "flake-parts";
|
inputs.flake-parts.follows = "flake-parts";
|
||||||
};
|
};
|
||||||
|
|
||||||
# ==== vencord ====
|
|
||||||
vencord = {
|
|
||||||
url = "github:Vendicated/Vencord";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue