mirror of
https://github.com/Equicord/Equicord.git
synced 2025-06-27 15:34:26 -04:00
Bundle dependencies with extensions for webstore rule compliance (#1740)
This commit is contained in:
parent
efb88a4df8
commit
41f5d71e38
46 changed files with 1633 additions and 73 deletions
32
src/plugins/shikiCodeblocks.desktop/utils/color.ts
Normal file
32
src/plugins/shikiCodeblocks.desktop/utils/color.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export function hex2Rgb(hex: string) {
|
||||
hex = hex.slice(1);
|
||||
if (hex.length < 6)
|
||||
hex = hex
|
||||
.split("")
|
||||
.map(c => c + c)
|
||||
.join("");
|
||||
if (hex.length === 6) hex += "ff";
|
||||
if (hex.length > 6) hex = hex.slice(0, 6);
|
||||
return hex
|
||||
.split(/(..)/)
|
||||
.filter(Boolean)
|
||||
.map(c => parseInt(c, 16));
|
||||
}
|
36
src/plugins/shikiCodeblocks.desktop/utils/createStyle.ts
Normal file
36
src/plugins/shikiCodeblocks.desktop/utils/createStyle.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const styles = new Map<string, HTMLStyleElement>();
|
||||
|
||||
export function setStyle(css: string, id: string) {
|
||||
const style = document.createElement("style");
|
||||
style.innerText = css;
|
||||
document.head.appendChild(style);
|
||||
styles.set(id, style);
|
||||
}
|
||||
|
||||
export function removeStyle(id: string) {
|
||||
styles.get(id)?.remove();
|
||||
return styles.delete(id);
|
||||
}
|
||||
|
||||
export const clearStyles = () => {
|
||||
styles.forEach(style => style.remove());
|
||||
styles.clear();
|
||||
};
|
50
src/plugins/shikiCodeblocks.desktop/utils/misc.ts
Normal file
50
src/plugins/shikiCodeblocks.desktop/utils/misc.ts
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { classNameFactory } from "@api/Styles";
|
||||
import { hljs } from "@webpack/common";
|
||||
|
||||
import { resolveLang } from "../api/languages";
|
||||
import { HighlighterProps } from "../components/Highlighter";
|
||||
import { HljsSetting } from "../types";
|
||||
|
||||
export const cl = classNameFactory("shiki-");
|
||||
|
||||
export const shouldUseHljs = ({
|
||||
lang,
|
||||
tryHljs,
|
||||
}: {
|
||||
lang: HighlighterProps["lang"],
|
||||
tryHljs: HljsSetting,
|
||||
}) => {
|
||||
const hljsLang = lang ? hljs?.getLanguage?.(lang) : null;
|
||||
const shikiLang = lang ? resolveLang(lang) : null;
|
||||
const langName = shikiLang?.name;
|
||||
|
||||
switch (tryHljs) {
|
||||
case HljsSetting.Always:
|
||||
return true;
|
||||
case HljsSetting.Primary:
|
||||
return !!hljsLang || lang === "";
|
||||
case HljsSetting.Secondary:
|
||||
return !langName && !!hljsLang;
|
||||
case HljsSetting.Never:
|
||||
return false;
|
||||
default: return false;
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue