aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/shikiCodeblocks/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/shikiCodeblocks/hooks')
-rw-r--r--src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts b/src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts
index 416f8e9..0d92f80 100644
--- a/src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts
+++ b/src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts
@@ -18,8 +18,19 @@
import { useSettings } from "@api/settings";
+import { shiki } from "../api/shiki";
import { ShikiSettings } from "../types";
-export function useShikiSettings(settings: (keyof ShikiSettings)[]) {
- return useSettings(settings.map(setting => `plugins.ShikiCodeblocks.${setting}`)).plugins.ShikiCodeblocks as ShikiSettings;
+export function useShikiSettings(settingKeys: (keyof ShikiSettings)[], overrides?: Record<string, any>) {
+ const settings = useSettings(settingKeys.map(key => `plugins.ShikiCodeblocks.${key}`)).plugins.ShikiCodeblocks as ShikiSettings;
+
+ const withOverrides = { ...settings, ...overrides };
+
+ const themeUrl = withOverrides.customTheme || withOverrides.theme;
+ if (themeUrl !== shiki.currentThemeUrl) shiki.setTheme(themeUrl);
+
+ return {
+ ...withOverrides,
+ isThemeLoading: themeUrl !== shiki.currentThemeUrl,
+ };
}