import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { MessageController } from '../components-lib/message/controller.js'; import messageStyle from '../scss/message.scss'; import { Message } from '../types.js'; import './icon.js'; export function renderMessage( message: Message | null, renderOptions?: { overlay?: boolean; }, ): TemplateResult { return html` `; } @customElement('advanced-camera-card-message') export class AdvancedCameraCardMessage extends LitElement { @property({ attribute: false }) public message?: Message; @property({ attribute: true, type: Boolean }) public overlay = false; private _controller = new MessageController(); protected render(): TemplateResult | void { if (!this.message) { return; } const url = this._controller.getURL(this.message); const messageTemplate = html` ${this._controller.getMessageString(this.message)} ${url ? html`. ${url.title}` : ''} `; const icon = this._controller.getIcon(this.message); const classes = { dotdotdot: !!this.message?.dotdotdot, }; return html`
${messageTemplate} ${this._controller .getContextStrings(this.message) .map((contextItem) => html`
${contextItem}
`)}
`; } static get styles(): CSSResultGroup { return unsafeCSS(messageStyle); } } declare global { interface HTMLElementTagNameMap { 'advanced-camera-card-message': AdvancedCameraCardMessage; } }