import { html, css, LitElement, TemplateResult, customElement, property, CSSResult, } from "lit-element"; import "@polymer/paper-input/paper-input"; import "../../components/hui-entity-editor"; import "../../components/hui-input-list-editor"; import { struct } from "../../common/structs/struct"; import { EntitiesEditorEvent, EditorTarget } from "../types"; import { HomeAssistant } from "../../../../types"; import { LovelaceCardEditor } from "../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; import { configElementStyle } from "./config-elements-style"; import { processEditorEntities } from "../process-editor-entities"; import { EntityConfig } from "../../entity-rows/types"; import { PolymerChangedEvent } from "../../../../polymer-types"; import { MapCardConfig } from "../../cards/types"; const entitiesConfigStruct = struct.union([ { entity: "entity-id", name: "string?", icon: "icon?", }, "entity-id", ]); const cardConfigStruct = struct({ type: "string", title: "string?", aspect_ratio: "string?", default_zoom: "number?", dark_mode: "boolean?", entities: [entitiesConfigStruct], geo_location_sources: "array?", }); @customElement("hui-map-card-editor") export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { @property() public hass?: HomeAssistant; @property() private _config?: MapCardConfig; @property() private _configEntities?: EntityConfig[]; public setConfig(config: MapCardConfig): void { config = cardConfigStruct(config); this._config = config; this._configEntities = processEditorEntities(config.entities); } get _title(): string { return this._config!.title || ""; } get _aspect_ratio(): string { return this._config!.aspect_ratio || ""; } get _default_zoom(): number { return this._config!.default_zoom || NaN; } get _geo_location_sources(): string[] { return this._config!.geo_location_sources || []; } get _dark_mode(): boolean { return this._config!.dark_mode || false; } protected render(): TemplateResult | void { if (!this.hass) { return html``; } return html` ${configElementStyle}