import { LitElement, css, html } from "lit"; import { customElement, queryAll } from "lit/decorators.js"; import PulseController from "./PulseController.ts"; import "./DominoFace.ts"; function times() { const now = new Date(); const rawHours = now.getHours(); return { hour: rawHours > 12 ? rawHours - 12 : rawHours, minute: Math.floor(now.getUTCMinutes() / 5), second: Math.floor(now.getUTCSeconds() / 5), }; } @customElement("domino-clock") export class DominoClock extends LitElement { static styles = css` :host { --dominoclock-default-direction: row; --dominoclock-default-face-gap: 0.25rem; } .dominoclock { display: flex; flex-direction: var(--dominoclock-direction, var(--dominoclock-default-direction, row)); gap: var(--dominoclock-face-gap, var(--dominoclock-default-face-gap, 0.25rem)); } `; @queryAll("domino-face") faces: HTMLCollection; timer: PulseController; constructor() { super(); this.timer = new PulseController(this, 250, this.paint); } paint() { const update = times(); Array.from(this.faces).forEach(face => { const name = face.getAttribute("name"); face.setAttribute("time", `${update[name]}`); }); } render() { const update = times(); return html`
`; } } export default DominoClock;