Files
remnawave-minishop/frontend/src/adminEntry.js
T
2026-05-21 10:43:55 +03:00

46 lines
1.1 KiB
JavaScript

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: window.SubscriptionWebAppAdmin,
})
);