let elementName = "topbar-component" import { on, off } from "../system/events.mjs" import {getApiConfig, ready} from "../system/core.mjs" import "../components/topbar-user.mjs" import "../components/topbar-notifications.mjs" import { toggleInRightbar } from "../pages/rightbar/rightbar.mjs" import Toast from "../components/toast.mjs" const template = document.createElement('template'); template.innerHTML = `
`; class Element extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); this.shadowRoot.appendChild(template.content.cloneNode(true)); this.clearCurLogItem = this.clearCurLogItem.bind(this); this.shadowRoot.getElementById("container").addEventListener("click", e => { toggleInRightbar(e.target.getAttribute("page")) }) ready.then(() => { let components = getApiConfig().mods.map(m => m.files.filter(f => /\/topbar\-[a-zA-z0-9]+\.mjs/.test(f))).flat(); let beforeTarget = this.shadowRoot.querySelector(".beforetarget") for(let path of components.sort((a, b) => a < b ? -1 : 1)){ import(`..${path}`).then(i => { let div = document.createElement("div") div.innerHTML = `<${i.name}>` this.shadowRoot.getElementById("container").insertBefore(div, beforeTarget) }) } }) } connectedCallback() { on("log", "topbar", (message) => { /* clearTimeout(this.logTimeout) this.shadowRoot.getElementById("log").classList.remove("hidden") let msg = typeof message === "object" ? message : { level: "info", message } msg.level = msg.level || "info" this.shadowRoot.getElementById("log").setAttribute("level", msg.level == "error" ? "error" : "info") this.shadowRoot.getElementById("log").innerText = msg.message this.logTimeout = setTimeout(this.clearCurLogItem, 5000) */ new Toast({ text: typeof message === "object" ? message.message : message }) }) } clearCurLogItem() { this.shadowRoot.getElementById("log").classList.add("hidden") } disconnectedCallback() { off("log", "topbar") } } window.customElements.define(elementName, Element); export { Element, elementName as name }