mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
perf: only load svelte app on click
This commit is contained in:
@@ -7,6 +7,8 @@ import renderSvelte from "@/interface/main";
|
|||||||
import { SettingsResizer } from "@/seqta/ui/SettingsResizer";
|
import { SettingsResizer } from "@/seqta/ui/SettingsResizer";
|
||||||
import Settings from "@/interface/pages/settings.svelte";
|
import Settings from "@/interface/pages/settings.svelte";
|
||||||
|
|
||||||
|
let isSettingsRendered = false;
|
||||||
|
|
||||||
export function addExtensionSettings() {
|
export function addExtensionSettings() {
|
||||||
const extensionPopup = document.createElement("div");
|
const extensionPopup = document.createElement("div");
|
||||||
extensionPopup.classList.add("outside-container", "hide");
|
extensionPopup.classList.add("outside-container", "hide");
|
||||||
@@ -17,14 +19,6 @@ export function addExtensionSettings() {
|
|||||||
) as HTMLDivElement;
|
) as HTMLDivElement;
|
||||||
if (extensionContainer) extensionContainer.appendChild(extensionPopup);
|
if (extensionContainer) extensionContainer.appendChild(extensionPopup);
|
||||||
|
|
||||||
// create shadow dom and render svelte app
|
|
||||||
try {
|
|
||||||
const shadow = extensionPopup.attachShadow({ mode: "open" });
|
|
||||||
requestIdleCallback(() => renderSvelte(Settings, shadow));
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
const container = document.getElementById("container");
|
const container = document.getElementById("container");
|
||||||
|
|
||||||
new SettingsResizer();
|
new SettingsResizer();
|
||||||
@@ -38,3 +32,18 @@ export function addExtensionSettings() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function renderSettingsIfNeeded() {
|
||||||
|
if (isSettingsRendered) return;
|
||||||
|
|
||||||
|
const extensionPopup = document.getElementById("ExtensionPopup");
|
||||||
|
if (!extensionPopup) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const shadow = extensionPopup.attachShadow({ mode: "open" });
|
||||||
|
requestIdleCallback(() => renderSvelte(Settings, shadow));
|
||||||
|
isSettingsRendered = true;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import {
|
|||||||
} from "./Closers/closeExtensionPopup";
|
} from "./Closers/closeExtensionPopup";
|
||||||
import { animate } from "motion";
|
import { animate } from "motion";
|
||||||
import { settingsState } from "./listeners/SettingsState";
|
import { settingsState } from "./listeners/SettingsState";
|
||||||
|
import { renderSettingsIfNeeded } from "./Adders/AddExtensionSettings";
|
||||||
|
import { delay } from "./delay";
|
||||||
|
|
||||||
export function setupSettingsButton() {
|
export function setupSettingsButton() {
|
||||||
var AddedSettings = document.getElementById("AddedSettings");
|
var AddedSettings = document.getElementById("AddedSettings");
|
||||||
@@ -14,6 +16,10 @@ export function setupSettingsButton() {
|
|||||||
if (SettingsClicked) {
|
if (SettingsClicked) {
|
||||||
closeExtensionPopup(extensionPopup as HTMLElement);
|
closeExtensionPopup(extensionPopup as HTMLElement);
|
||||||
} else {
|
} else {
|
||||||
|
renderSettingsIfNeeded();
|
||||||
|
|
||||||
|
await delay(30);
|
||||||
|
|
||||||
if (settingsState.animations) {
|
if (settingsState.animations) {
|
||||||
animate(0, 1, {
|
animate(0, 1, {
|
||||||
onUpdate: (progress) => {
|
onUpdate: (progress) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user