fix: admin panel loading
This commit is contained in:
@@ -1,9 +1,45 @@
|
||||
import { mount, unmount } from "svelte";
|
||||
|
||||
import AdminPanel from "./admin/AdminPanel.svelte";
|
||||
import "./styles-admin.css";
|
||||
|
||||
function mountAdminPanel(target, props = {}) {
|
||||
if (!target) throw new Error("admin_mount_target_missing");
|
||||
|
||||
const currentProps = { ...props };
|
||||
const instance = mount(AdminPanel, { target, props: currentProps });
|
||||
let destroyed = false;
|
||||
|
||||
return {
|
||||
update(nextProps = {}) {
|
||||
if (destroyed) return;
|
||||
Object.assign(currentProps, nextProps);
|
||||
|
||||
if (typeof instance.$set === "function") {
|
||||
instance.$set(nextProps);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const [key, value] of Object.entries(nextProps)) {
|
||||
if (key in instance) instance[key] = value;
|
||||
}
|
||||
},
|
||||
destroy() {
|
||||
if (destroyed) return;
|
||||
destroyed = true;
|
||||
void unmount(instance);
|
||||
target.replaceChildren();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
window.SubscriptionWebAppAdmin = {
|
||||
AdminPanel,
|
||||
mount: mountAdminPanel,
|
||||
};
|
||||
window.SubscriptionWebAppAdminPanel = AdminPanel;
|
||||
window.dispatchEvent(
|
||||
new CustomEvent("subscription-webapp-admin-ready", {
|
||||
detail: { AdminPanel },
|
||||
detail: window.SubscriptionWebAppAdmin,
|
||||
})
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user