Files
Rivertalk/assets/js/ui/core/hook.js
T
2026-02-12 17:10:03 -06:00

56 lines
1.3 KiB
JavaScript

// saladui/core/hook.js
import { registry } from "./factory";
const SaladUIHook = {
mounted() {
this.initComponent();
this.setupServerEvents();
},
initComponent() {
const el = this.el;
const componentType = el.getAttribute("data-component");
if (!componentType) {
console.error(
"SaladUI: Component element is missing data-component attribute",
);
return;
}
// The registry.create method will handle creating the component and calling setupEvents
this.component = registry.create(componentType, el, this);
},
setupServerEvents() {
if (!this.component) return;
this.handleEvent("saladui:command", ({ command, params = {}, target }) => {
if (target && target !== this.el.id) return;
if (this.component) {
this.component.handleCommand(command, params);
}
});
},
updated() {
if (this.component) {
this.component.destroy();
this.component = null;
this.initComponent();
// this.component.parseOptions();
// this.component.setupEvents();
// this.component.updatePartsVisibility();
// this.component.updateUI();
}
},
destroyed() {
this.component?.destroy();
this.component = null;
},
};
export { SaladUIHook };