Files
ignis/plugin/src/settings/inject.js

81 lines
2.0 KiB
JavaScript
Raw Normal View History

2026-03-27 19:53:19 +01:00
const generalTab = require("./general-tab");
const serverPluginsTab = require("./server-plugins-tab");
const { createNavEl, createTab, createGroup } = require("./settings-ui");
const {
setupPluginTabs,
reconcilePluginTabs,
hideIgnisFromCommunityPlugins,
restoreCommunityPlugins,
clearOwnedNavItems,
} = require("./plugin-tabs");
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) {
removeExistingIgnisGroups(setting.tabHeadersEl);
clearOwnedNavItems();
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);
hideIgnisFromCommunityPlugins(setting);
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;
}
restoreCommunityPlugins(plugin.app.setting);
clearOwnedNavItems();
2026-03-27 19:53:19 +01:00
}
window.__ignisReconcilePluginTabs = reconcilePluginTabs;
module.exports = { patchSettingsModal, unpatchSettingsModal, reconcilePluginTabs };