import { html, LitElement } from "lit"; import appState, { use } from "./state"; import { APIController } from "@/controllers/api"; import { NavigateController } from "@/controllers/navigate"; import { NotifyController } from "@/controllers/notify"; export { html }; /** * @deprecated Use `BtrixElement` instead */ export default class LiteElement extends LitElement { @use() appState = appState; private readonly apiController = new APIController(this); private readonly notifyController = new NotifyController(this); private readonly navigateController = new NavigateController(this); protected get authState() { return this.appState.auth; } protected get userInfo() { return this.appState.userInfo; } protected get userOrg() { return this.appState.userOrg; } protected get orgId() { return this.appState.orgId; } protected get orgSlug() { return this.appState.orgSlug; } protected get org() { return this.appState.org; } protected get orgBasePath() { return this.navigateController.orgBasePath; } createRenderRoot() { return this; } /** * @deprecated New components should use NavigateController directly */ navTo = (...args: Parameters) => this.navigateController.to(...args); /** * @deprecated New components should use NavigateController directly */ navLink = (...args: Parameters) => this.navigateController.link(...args); /** * @deprecated New components should use NotifyController directly */ notify = (...args: Parameters) => this.notifyController.toast(...args); /** * @deprecated New components should use APIController directly */ apiFetch = async (...args: Parameters) => this.apiController.fetch(...args); }