|
|
- import {
- limitedScopeApplications,
- MODULE_NAME,
- themedApps,
- systemSheets,
- excludedApplications,
- moduleWindowApps,
- } from "./consts.js";
- import { isPremiumApplication } from "./premium-module-hooks.js";
-
- export function lookupThemeAndSchemeForKey(key) {
- switch (key) {
- case "opaque":
- return { dorakoUiTheme: "opaque", colorScheme: null };
- case "crb":
- return { dorakoUiTheme: "crb", colorScheme: null };
- case "crb-light":
- return { dorakoUiTheme: "crb", colorScheme: "light" };
- case "crb-dark":
- return { dorakoUiTheme: "crb", colorScheme: "dark" };
- case "foundry2":
- return { dorakoUiTheme: "foundry2", colorScheme: "dark" };
- case "bg3":
- return { dorakoUiTheme: "bg3", colorScheme: "dark" };
- case "bg3-brown":
- return { dorakoUiTheme: "bg3-brown", colorScheme: "dark" };
- case "bg3-blue":
- return { dorakoUiTheme: "bg3-blue", colorScheme: "dark" };
- case "discord":
- return { dorakoUiTheme: "discord", colorScheme: "dark" };
- case "discord-light":
- return { dorakoUiTheme: "discord-light", colorScheme: "light" };
- case "discord-dark":
- return { dorakoUiTheme: "discord-dark", colorScheme: "dark" };
- case "custom-light":
- return { dorakoUiTheme: "custom-light", colorScheme: "light" };
- case "custom-dark":
- return { dorakoUiTheme: "custom-dark", colorScheme: "dark" };
- default:
- return "", "";
- }
- }
-
- Hooks.on("renderSvelteApplication", (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.window-app-theme");
- if (theme === "no-theme") return;
- const uiTheme = lookupThemeAndSchemeForKey(theme);
- if (uiTheme === null) return;
- const excludeString = game.settings.get("pf2e-dorako-ui", "customization.excluded-applications");
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name) || excludedApplications.includes(app.constructor.name)) {
- console.debug(`${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications`);
- return;
- }
- const { dorakoUiTheme, colorScheme } = uiTheme;
- app.element[0].dataset.theme = dorakoUiTheme;
- app.element[0].dataset.colorScheme = colorScheme;
- app.element[0].dataset.dorakoUiScope = "unlimited";
- });
-
- for (const appName of [...themedApps]) {
- Hooks.on("render" + appName, (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.app-theme");
- if (theme === "no-theme") return;
- const uiTheme = lookupThemeAndSchemeForKey(theme);
- if (uiTheme === null) return;
- const { dorakoUiTheme, colorScheme } = uiTheme;
- const excludeString = game.settings.get("pf2e-dorako-ui", "customization.excluded-applications");
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name) || excludedApplications.includes(app.constructor.name)) {
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications string ${excludeString} => do not set dorako-ui-theme to ${dorakoUiTheme}`
- );
- return;
- }
-
- app.element[0].dataset.theme = dorakoUiTheme;
- console.debug(`${MODULE_NAME} | render${app.constructor.name} | [data-theme='${dorakoUiTheme}']`);
- });
- }
-
- for (const appName of [...systemSheets, ...moduleWindowApps]) {
- Hooks.on("render" + appName, (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.window-app-theme");
- if (theme === "no-theme") return;
- const uiTheme = lookupThemeAndSchemeForKey(theme);
- if (uiTheme === null) return;
- const { dorakoUiTheme, colorScheme } = uiTheme;
- const excludeString = game.settings.get("pf2e-dorako-ui", "customization.excluded-applications");
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name)) {
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications string ${excludeString} => do not set dorako-ui-theme to ${dorakoUiTheme}`
- );
- return;
- }
- if (
- theme == "crb-light" &&
- (app.constructor.name === "PartySheetPF2e" || app.constructor.name === "FamiliarSheetPF2e")
- )
- return;
- if (theme == "discord-light" && app.constructor.name === "PartySheetPF2e") return;
-
- app.element[0].dataset.theme = dorakoUiTheme;
- app.element[0].dataset.colorScheme = colorScheme;
- app.element[0].dataset.dorakoUiScope = "unlimited";
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | [data-theme='${dorakoUiTheme}'] [data-color-scheme='${colorScheme}'] [data-dorako-ui-scope='unlimited']`
- );
- });
- }
-
- Hooks.on("renderApplication", (app, html, data) => {
- let html0 = html[0];
- if (html0.classList.contains("editable")) return;
- if (!html0.classList.contains("window-app")) return;
- if (isPremiumApplication(app, html, data, app.constructor.name)) return;
- const theme = game.settings.get("pf2e-dorako-ui", "theme.window-app-theme");
- if (theme === "no-theme") return;
- const uiTheme = lookupThemeAndSchemeForKey(theme);
- if (uiTheme === null) return;
- const { dorakoUiTheme, colorScheme } = uiTheme;
- const excludeString =
- game.settings.get("pf2e-dorako-ui", "customization.excluded-applications") +
- ", EnhancedJournal" +
- ", SceneActorsLayer" +
- ", SmallTimeApp" +
- ", SceneDarknessAdjuster" +
- ", AutorecMenuApp" +
- ", ImagePopout";
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name) || excludedApplications.includes(app.constructor.name)) {
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications string ${excludeString} => do not set dorako-ui-theme to ${dorakoUiTheme}`
- );
- return;
- }
-
- const fakeDialogPatterns = ["popup", "dialog"];
- for (const fakeDialogPattern of [...fakeDialogPatterns]) {
- if (app.constructor.name.toLowerCase().includes(fakeDialogPattern)) {
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | constructor includes '${fakeDialogPattern}' => add .dialog`
- );
- html.addClass("dialog");
- }
- }
- app.element[0].dataset.theme = dorakoUiTheme;
- app.element[0].dataset.colorScheme = colorScheme;
- app.element[0].dataset.dorakoUiScope = "unlimited";
- });
-
- // Hooks.on("renderDialog", (app, html, data) => {
- // const theme = game.settings.get("pf2e-dorako-ui", "theme.window-app-theme");
- // if (theme === "no-theme") return;
- // const uiTheme = getUiTheme();
- // if (uiTheme === null) return;
- // const { dorakoUiTheme, colorScheme } = uiTheme;
- // console.debug(`${MODULE_NAME} | render${app.constructor.name} | set dorako-ui-theme to ${dorakoUiTheme}`);
- // app.element[0].dataset.theme = dorakoUiTheme;
- // app.element[0].dataset.colorScheme = colorScheme;
- // app.element[0].dataset.dorakoUiScope = "unlimited";
- // });
-
- for (const appName of [...limitedScopeApplications]) {
- Hooks.on("render" + appName, (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.window-app-theme");
- if (theme === "no-theme") return;
- const uiTheme = lookupThemeAndSchemeForKey(theme);
- if (uiTheme === null) return;
- const excludeString = game.settings.get("pf2e-dorako-ui", "customization.excluded-applications");
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name)) {
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications string ${excludeString} => do not set data-dorako-ui-scope to 'limited'`
- );
- return;
- }
- console.debug(
- `${MODULE_NAME} | render${app.constructor.name} | theme: ${theme} => set data-dorako-ui-scope to 'limited'`
- );
- app.element[0].dataset.dorakoUiScope = "limited";
- });
- }
-
- for (const appName of ["CharacterSheetPF2e", "VehicleSheetPF2e"]) {
- Hooks.on("render" + appName, (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.sheet-theme-color");
- if (theme === "default") return;
- app.element[0].dataset.themeColor = theme;
- });
- }
-
- Hooks.on("render" + "ItemSheetPF2e", (app, html, data) => {
- const rarity = app?.object?.rarity;
- if (rarity) app.element[0].dataset.rarity = rarity;
- });
-
- Hooks.on("render" + "NPCSheetPF2e", (app, html, data) => {
- const rarity = app?.object?.rarity;
- if (rarity) app.element[0].dataset.rarity = rarity;
- });
-
- Hooks.on("render" + "ChatMessage", (app, html, data) => {
- const footer = html.find("footer")[0];
- if (footer) html[0].dataset.hasFooter = "";
- });
-
- Hooks.on("render" + "ChatLogPF2e", (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.app-theme");
- if (theme === "no-theme") return;
- app.element[0].dataset.chatInterfaceTheme = theme;
- });
-
- Hooks.on("render" + "Sidebar", (app, html, data) => {
- const theme = game.settings.get("pf2e-dorako-ui", "theme.app-theme");
- if (theme === "no-theme") return;
- if (theme === "bg3") {
- app.element[0].dataset.chatInterfaceTheme = "bg3-translucent";
- } else {
- app.element[0].dataset.chatInterfaceTheme = theme;
- }
- });
-
- Hooks.on("render" + "Sidebar", (app, html, data) => {
- const excludeString = game.settings.get("pf2e-dorako-ui", "customization.excluded-applications");
- const excludeList = excludeString.split(/[\s,]+/);
- if (excludeList.includes(app.constructor.name)) {
- console.debug(`${MODULE_NAME} | render${app.constructor.name} | is included in excluded applications string`);
- return;
- }
-
- $("#sidebar-tabs").attr("data-theme", "");
- app.element[0].dataset.dorakoUiScope = "sidebar";
- });
|