mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 11:44:40 +00:00
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import {
|
|
changeSettingsClicked,
|
|
closeExtensionPopup,
|
|
SettingsClicked,
|
|
} from "../Closers/closeExtensionPopup";
|
|
import renderSvelte from "@/interface/main";
|
|
import { SettingsResizer } from "@/seqta/ui/SettingsResizer";
|
|
import Settings from "@/interface/pages/settings.svelte";
|
|
|
|
let isSettingsRendered = false;
|
|
|
|
export function addExtensionSettings() {
|
|
const extensionPopup = document.createElement("div");
|
|
extensionPopup.classList.add("outside-container", "hide");
|
|
extensionPopup.id = "ExtensionPopup";
|
|
|
|
const extensionContainer = document.querySelector(
|
|
"#container",
|
|
) as HTMLDivElement;
|
|
if (extensionContainer) extensionContainer.appendChild(extensionPopup);
|
|
|
|
const container = document.getElementById("container");
|
|
|
|
new SettingsResizer();
|
|
|
|
container!.onclick = (event) => {
|
|
if (!SettingsClicked) return;
|
|
|
|
if (!(event.target as HTMLElement).closest("#AddedSettings")) {
|
|
if (event.target == extensionPopup) return;
|
|
changeSettingsClicked(closeExtensionPopup());
|
|
}
|
|
};
|
|
}
|
|
|
|
export function renderSettingsIfNeeded() {
|
|
if (isSettingsRendered) return;
|
|
|
|
const extensionPopup = document.getElementById("ExtensionPopup");
|
|
if (!extensionPopup) return;
|
|
|
|
try {
|
|
const shadow = extensionPopup.attachShadow({ mode: "open" });
|
|
if ('requestIdleCallback' in window) {
|
|
requestIdleCallback(() => renderSvelte(Settings, shadow));
|
|
} else {
|
|
renderSvelte(Settings, shadow);
|
|
}
|
|
isSettingsRendered = true;
|
|
} catch (err) {
|
|
console.error(err);
|
|
}
|
|
}
|