2026-03-27 19:53:19 +01:00
|
|
|
const generalTab = require("./general-tab");
|
|
|
|
|
const serverPluginsTab = require("./server-plugins-tab");
|
2026-03-29 17:44:41 +02:00
|
|
|
const { createNavEl, createTab, createGroup } = require("./settings-ui");
|
|
|
|
|
const {
|
|
|
|
|
setupPluginTabs,
|
|
|
|
|
reconcilePluginTabs,
|
|
|
|
|
hideIgnisFromCommunityPlugins,
|
|
|
|
|
restoreCommunityPlugins,
|
|
|
|
|
clearOwnedNavItems,
|
|
|
|
|
} = require("./plugin-tabs");
|
2026-03-29 16:36:23 +02:00
|
|
|
|
|
|
|
|
function removeExistingIgnisGroups(tabHeadersEl) {
|
|
|
|
|
const groups = tabHeadersEl.querySelectorAll(".vertical-tab-header-group");
|
|
|
|
|
|
|
|
|
|
for (const g of groups) {
|
|
|
|
|
const title = g.querySelector(".vertical-tab-header-group-title");
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
title?.textContent === "Ignis" ||
|
|
|
|
|
title?.textContent === "Ignis Core Plugins"
|
|
|
|
|
) {
|
|
|
|
|
g.remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-28 14:52:41 +01:00
|
|
|
function injectIgnisSettings(setting, app) {
|
2026-03-29 16:36:23 +02:00
|
|
|
removeExistingIgnisGroups(setting.tabHeadersEl);
|
2026-03-29 17:44:41 +02:00
|
|
|
clearOwnedNavItems();
|
2026-03-29 16:36:23 +02:00
|
|
|
|
2026-03-28 14:52:41 +01:00
|
|
|
const ignis = createGroup("Ignis");
|
|
|
|
|
|
2026-03-27 19:53:19 +01:00
|
|
|
const tabs = [
|
2026-03-28 14:58:17 +01:00
|
|
|
createTab("ignis-general", "General", generalTab.display, app, "flame"),
|
2026-03-28 14:52:41 +01:00
|
|
|
createTab(
|
|
|
|
|
"ignis-core-plugins",
|
|
|
|
|
"Core plugins",
|
|
|
|
|
serverPluginsTab.display,
|
|
|
|
|
app,
|
2026-03-28 14:58:17 +01:00
|
|
|
"blocks",
|
2026-03-28 14:52:41 +01:00
|
|
|
),
|
2026-03-27 19:53:19 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
for (const tab of tabs) {
|
|
|
|
|
tab.navEl = createNavEl(tab, setting);
|
2026-03-28 14:52:41 +01:00
|
|
|
ignis.items.appendChild(tab.navEl);
|
2026-03-27 19:53:19 +01:00
|
|
|
}
|
|
|
|
|
|
2026-03-28 14:52:41 +01:00
|
|
|
setting.tabHeadersEl.appendChild(ignis.group);
|
|
|
|
|
|
|
|
|
|
const corePlugins = createGroup("Ignis Core Plugins");
|
|
|
|
|
setting.tabHeadersEl.appendChild(corePlugins.group);
|
2026-03-29 16:36:23 +02:00
|
|
|
|
|
|
|
|
hideIgnisFromCommunityPlugins(setting);
|
2026-03-29 17:44:41 +02:00
|
|
|
setupPluginTabs(setting, corePlugins.items);
|
2026-03-27 19:53:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function patchSettingsModal(plugin) {
|
|
|
|
|
const original = plugin.app.setting.onOpen;
|
2026-03-27 23:11:19 +01:00
|
|
|
const app = plugin.app;
|
2026-03-27 19:53:19 +01:00
|
|
|
plugin._originalOnOpen = original;
|
|
|
|
|
|
|
|
|
|
plugin.app.setting.onOpen = function () {
|
|
|
|
|
original.call(this);
|
2026-03-27 23:11:19 +01:00
|
|
|
injectIgnisSettings(this, app);
|
2026-03-27 19:53:19 +01:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function unpatchSettingsModal(plugin) {
|
|
|
|
|
if (plugin._originalOnOpen) {
|
|
|
|
|
plugin.app.setting.onOpen = plugin._originalOnOpen;
|
|
|
|
|
}
|
2026-03-29 16:36:23 +02:00
|
|
|
|
2026-03-29 17:44:41 +02:00
|
|
|
restoreCommunityPlugins(plugin.app.setting);
|
|
|
|
|
clearOwnedNavItems();
|
2026-03-27 19:53:19 +01:00
|
|
|
}
|
|
|
|
|
|
2026-03-29 16:36:23 +02:00
|
|
|
window.__ignisReconcilePluginTabs = reconcilePluginTabs;
|
|
|
|
|
|
|
|
|
|
module.exports = { patchSettingsModal, unpatchSettingsModal, reconcilePluginTabs };
|