diff --git a/tv-card-editor.js b/tv-card-editor.js new file mode 100644 index 0000000..ea21a80 --- /dev/null +++ b/tv-card-editor.js @@ -0,0 +1,190 @@ +if (!customElements.get("paper-input")) { + console.log("imported", "paper-input"); + import("https://unpkg.com/@polymer/paper-input/paper-input.js?module"); +} + +const fireEvent = (node, type, detail, options) => { + options = options || {}; + detail = detail === null || detail === undefined ? {} : detail; + const event = new Event(type, { + bubbles: options.bubbles === undefined ? true : options.bubbles, + cancelable: Boolean(options.cancelable), + composed: options.composed === undefined ? true : options.composed + }); + event.detail = detail; + node.dispatchEvent(event); + return event; +}; + +const LitElement = Object.getPrototypeOf( + customElements.get("ha-panel-lovelace") +); +const html = LitElement.prototype.html; + +export class TVCardEditor extends LitElement { + setConfig(config) { + this._config = config; + } + + static get properties() { + return { hass: {}, _config: {} }; + } + + get _name() { + return this._config.name || ""; + } + + get _entity() { + return this._config.entity || ""; + } + + get _remote() { + return this._config.remote || ""; + } + + get _theme() { + return this._config.theme; + } + + get _tv() { + return this._config.tv || false; + } + + render() { + if (!this.hass) { + return html``; + } + + const themes = ["Backend-selected", "default"].concat( + Object.keys(this.hass.themes.themes).sort() + ); + + const entities = Object.keys(this.hass.states).filter( + eid => eid.substr(0, eid.indexOf(".")) === "media_player" + ); + const remotes = [""].concat( + Object.keys(this.hass.states).filter( + eid => eid.substr(0, eid.indexOf(".")) === "remote" + ) + ); + + return html` + ${this.renderStyle()} +