diff --git a/.eslintrc-hound.json b/.eslintrc-hound.json deleted file mode 100644 index 9866534ccf..0000000000 --- a/.eslintrc-hound.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "extends": ["airbnb-base", "prettier"], - "parserOptions": { - "ecmaVersion": "2020", - "ecmaFeatures": { - "jsx": true, - "modules": true - } - }, - "settings": { - "react": { - "pragma": "h", - "version": "15.0" - }, - "import/resolver": { - "webpack": { - "config": "webpack.config.js" - } - } - }, - "globals": { - "__DEV__": false, - "__DEMO__": false, - "__BUILD__": false, - "__VERSION__": false, - "__STATIC_PATH__": false, - "Polymer": true, - "webkitSpeechRecognition": false, - "ResizeObserver": false - }, - "env": { - "browser": true, - "mocha": true - }, - "rules": { - "class-methods-use-this": 0, - "new-cap": 0, - "prefer-template": 0, - "object-shorthand": 0, - "func-names": 0, - "prefer-arrow-callback": 0, - "no-underscore-dangle": 0, - "no-var": 0, - "strict": 0, - "prefer-spread": 0, - "no-plusplus": 0, - "no-bitwise": 0, - "comma-dangle": 0, - "vars-on-top": 0, - "no-continue": 0, - "no-param-reassign": 0, - "no-multi-assign": 0, - "radix": 0, - "no-alert": 0, - "no-return-await": 0, - "prefer-destructuring": 0, - "no-restricted-globals": [2, "event"], - "prefer-promise-reject-errors": 0, - "import/prefer-default-export": 0, - "import/no-unresolved": 0, - "import/extensions": [2, "ignorePackages"], - "object-curly-newline": 0, - "default-case": 0, - "react/jsx-no-bind": [2, { "ignoreRefs": true }], - "react/jsx-no-duplicate-props": 2, - "react/self-closing-comp": 2, - "react/prefer-es6-class": 2, - "react/no-string-refs": 2, - "react/require-render-return": 2, - "react/no-find-dom-node": 2, - "react/no-is-mounted": 2, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-undef": 2, - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "no-restricted-syntax": [0, "ForOfStatement"], - "prettier/prettier": "error" - }, - "plugins": ["react", "prettier"] -} diff --git a/.eslintrc.json b/.eslintrc.json index 5bcf910f99..53eb374190 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,12 +1,100 @@ { - "extends": "./.eslintrc-hound.json", - "plugins": ["react"], + "extends": [ + "plugin:@typescript-eslint/recommended", + "airbnb-typescript/base", + "plugin:wc/recommended", + "plugin:lit/recommended", + "prettier", + "prettier/@typescript-eslint" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2020, + "ecmaFeatures": { + "jsx": true, + "modules": true + }, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "settings": { + "react": { + "pragma": "h", + "version": "15.0" + }, + "import/resolver": { + "webpack": { + "config": "./webpack.config.js" + } + } + }, + "globals": { + "__DEV__": false, + "__DEMO__": false, + "__BUILD__": false, + "__VERSION__": false, + "__STATIC_PATH__": false, + "Polymer": true, + "webkitSpeechRecognition": false, + "ResizeObserver": false + }, "env": { - "browser": true + "browser": true, + "es6": true }, "rules": { - "import/no-unresolved": 2, - "linebreak-style": 0, - "implicit-arrow-linebreak": 0 - } + "class-methods-use-this": 0, + "new-cap": 0, + "prefer-template": 0, + "object-shorthand": 0, + "func-names": 0, + "prefer-arrow-callback": 0, + "no-underscore-dangle": 0, + "no-var": 0, + "strict": 0, + "prefer-spread": 0, + "no-plusplus": 0, + "no-bitwise": 0, + "comma-dangle": 0, + "vars-on-top": 0, + "no-continue": 0, + "no-param-reassign": 0, + "no-multi-assign": 0, + "radix": 0, + "no-alert": 0, + "no-return-await": 0, + "no-nested-ternary": 0, + "prefer-destructuring": 0, + "no-restricted-globals": [2, "event"], + "prefer-promise-reject-errors": 0, + "import/order": 0, + "import/prefer-default-export": 0, + "import/no-unresolved": 0, + "import/no-cycle": 0, + "import/extensions": [ + 2, + "ignorePackages", + { "ts": "never", "js": "never" } + ], + "no-restricted-syntax": ["error", "LabeledStatement", "WithStatement"], + "object-curly-newline": 0, + "default-case": 0, + "wc/no-self-class": 0, + "@typescript-eslint/camelcase": 0, + "@typescript-eslint/ban-ts-ignore": 0, + "@typescript-eslint/no-use-before-define": 0, + "@typescript-eslint/no-non-null-assertion": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-unused-vars": 0, + "@typescript-eslint/explicit-function-return-type": 0 + }, + "plugins": [ + "disable", + "import", + "react", + "lit", + "prettier", + "@typescript-eslint" + ], + "processor": "disable/disable" } diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md index 634724fcbe..640740f5ac 100644 --- a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md @@ -3,23 +3,24 @@ name: Request a feature for the UI, Frontend or Lovelace about: Request an new feature for the Home Assistant frontend. labels: feature request --- + + ## The request - - ## The alternatives + - ## Additional information - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f73933940c..a28fd83e4d 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,7 +2,9 @@ You are amazing! Thanks for contributing to our project! Please, DO NOT DELETE ANY TEXT from this template! (unless instructed). --> + ## Breaking change + - ## Proposed change - - ## Type of change + @@ -36,6 +38,7 @@ - [ ] Code quality improvements to existing code or addition of tests ## Example configuration + - This PR fixes or closes issue: fixes # -- This PR is related to issue: -- Link to documentation pull request: +- This PR is related to issue: +- Link to documentation pull request: ## Checklist + + [docs-repository]: https://github.com/home-assistant/home-assistant.io diff --git a/.github/lock.yml b/.github/lock.yml index 63db6533f2..2566272cb3 100644 --- a/.github/lock.yml +++ b/.github/lock.yml @@ -24,4 +24,4 @@ only: pulls # Optionally, specify configuration settings just for `issues` or `pulls` issues: - daysUntilLock: 30 + daysUntilLock: 30 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..324cce418c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,37 @@ +build +build-translations/* +translations/* +node_modules/* +npm-debug.log +.DS_Store +hass_frontend/* +.reify-cache +demo/hademo-icons.html + +# Python stuff +*.py[cod] +*.egg +*.egg-info + +# venv stuff +pyvenv.cfg +pip-selfcheck.json +venv +.venv +lib +bin +dist + +# vscode +.vscode/* +!.vscode/extensions.json + +# Cast dev settings +src/cast/dev_const.ts + +# Secrets +.lokalise_token +yarn-error.log + +#asdf +.tool-versions diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 411ffee836..8bea127242 100755 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,6 @@ { "recommendations": [ "dbaeumer.vscode-eslint", - "ms-vscode.vscode-typescript-tslint-plugin", "esbenp.prettier-vscode", "bierner.lit-html", "runem.lit-plugin" diff --git a/cast/src/launcher/entrypoint.ts b/cast/src/launcher/entrypoint.ts index 74330ec866..db52293458 100644 --- a/cast/src/launcher/entrypoint.ts +++ b/cast/src/launcher/entrypoint.ts @@ -1,5 +1,5 @@ -import "../../../src/resources/ha-style"; -import "../../../src/resources/roboto"; import "../../../src/components/ha-iconset-svg"; +import "../../../src/resources/ha-style"; import "../../../src/resources/hass-icons"; +import "../../../src/resources/roboto"; import "./layout/hc-connect"; diff --git a/cast/src/launcher/layout/hc-cast.ts b/cast/src/launcher/layout/hc-cast.ts index b9bb9f76fb..69fbabcecd 100644 --- a/cast/src/launcher/layout/hc-cast.ts +++ b/cast/src/launcher/layout/hc-cast.ts @@ -1,51 +1,53 @@ +import "@polymer/iron-icon"; +import "@polymer/paper-item/paper-icon-item"; +import "@polymer/paper-listbox/paper-listbox"; +import { Auth, Connection } from "home-assistant-js-websocket"; import { + css, + CSSResult, customElement, + html, LitElement, property, TemplateResult, - html, - CSSResult, - css, } from "lit-element"; -import { Connection, Auth } from "home-assistant-js-websocket"; -import "@polymer/iron-icon"; -import "@polymer/paper-listbox/paper-listbox"; -import "@polymer/paper-item/paper-icon-item"; -import "../../../../src/components/ha-icon"; -import { - enableWrite, - askWrite, - saveTokens, -} from "../../../../src/common/auth/token_storage"; -import { - ensureConnectedCastSession, - castSendShowLovelaceView, -} from "../../../../src/cast/receiver_messages"; -import "../../../../src/layouts/loading-screen"; import { CastManager } from "../../../../src/cast/cast_manager"; import { - LovelaceConfig, - getLovelaceCollection, - getLegacyLovelaceCollection, -} from "../../../../src/data/lovelace"; -import "./hc-layout"; -import { generateDefaultViewConfig } from "../../../../src/panels/lovelace/common/generate-lovelace-config"; -import { toggleAttribute } from "../../../../src/common/dom/toggle_attribute"; + castSendShowLovelaceView, + ensureConnectedCastSession, +} from "../../../../src/cast/receiver_messages"; +import { + askWrite, + enableWrite, + saveTokens, +} from "../../../../src/common/auth/token_storage"; import { atLeastVersion } from "../../../../src/common/config/version"; +import { toggleAttribute } from "../../../../src/common/dom/toggle_attribute"; +import "../../../../src/components/ha-icon"; +import { + getLegacyLovelaceCollection, + getLovelaceCollection, + LovelaceConfig, +} from "../../../../src/data/lovelace"; +import "../../../../src/layouts/loading-screen"; +import { generateDefaultViewConfig } from "../../../../src/panels/lovelace/common/generate-lovelace-config"; +import "./hc-layout"; @customElement("hc-cast") class HcCast extends LitElement { @property() public auth!: Auth; + @property() public connection!: Connection; + @property() public castManager!: CastManager; + @property() private askWrite = false; + @property() private lovelaceConfig?: LovelaceConfig | null; protected render(): TemplateResult { if (this.lovelaceConfig === undefined) { - return html` - > - `; + return html` > `; } const error = @@ -75,9 +77,7 @@ class HcCast extends LitElement { ` : ""} ${error - ? html` -
${error}
- ` + ? html`
${error}
` : !this.castManager.status ? html`

diff --git a/cast/src/launcher/layout/hc-connect.ts b/cast/src/launcher/layout/hc-connect.ts index a2ab3fb179..1c9ca40e6c 100644 --- a/cast/src/launcher/layout/hc-connect.ts +++ b/cast/src/launcher/layout/hc-connect.ts @@ -1,35 +1,35 @@ +import "@material/mwc-button"; +import "@polymer/iron-icon"; +import "@polymer/paper-input/paper-input"; import { - LitElement, + Auth, + Connection, + createConnection, + ERR_CANNOT_CONNECT, + ERR_HASS_HOST_REQUIRED, + ERR_INVALID_AUTH, + ERR_INVALID_HTTPS_TO_HTTP, + getAuth, + getAuthOptions, +} from "home-assistant-js-websocket"; +import { + css, + CSSResult, customElement, + html, + LitElement, property, TemplateResult, - html, - CSSResult, - css, } from "lit-element"; -import { - getAuth, - createConnection, - Auth, - getAuthOptions, - ERR_HASS_HOST_REQUIRED, - ERR_INVALID_HTTPS_TO_HTTP, - Connection, - ERR_CANNOT_CONNECT, - ERR_INVALID_AUTH, -} from "home-assistant-js-websocket"; -import "@polymer/iron-icon"; -import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; +import { CastManager, getCastManager } from "../../../../src/cast/cast_manager"; +import { castSendShowDemo } from "../../../../src/cast/receiver_messages"; import { loadTokens, saveTokens, } from "../../../../src/common/auth/token_storage"; import "../../../../src/layouts/loading-screen"; -import { CastManager, getCastManager } from "../../../../src/cast/cast_manager"; -import "./hc-layout"; -import { castSendShowDemo } from "../../../../src/cast/receiver_messages"; import { registerServiceWorker } from "../../../../src/util/register-service-worker"; +import "./hc-layout"; const seeFAQ = (qid) => html` See the FAQ for more @@ -61,13 +61,19 @@ const INTRO = html` @customElement("hc-connect") export class HcConnect extends LitElement { @property() private loading = false; + // If we had stored credentials but we cannot connect, // show a screen asking retry or logout. @property() private cannotConnect = false; + @property() private error?: string | TemplateResult; + @property() private auth?: Auth; + @property() private connection?: Connection; + @property() private castManager?: CastManager | null; + private openDemo = false; protected render(): TemplateResult { @@ -92,9 +98,7 @@ export class HcConnect extends LitElement { } if (this.castManager === undefined || this.loading) { - return html` - - `; + return html` `; } if (this.castManager === null) { @@ -127,11 +131,7 @@ export class HcConnect extends LitElement { @keydown=${this._handleInputKeyDown} >

- ${this.error - ? html` -

${this.error}

- ` - : ""} + ${this.error ? html`

${this.error}

` : ""}
@@ -211,7 +211,8 @@ export class HcConnect extends LitElement { if (value === "") { this.error = "Please enter a Home Assistant URL."; return; - } else if (value.indexOf("://") === -1) { + } + if (value.indexOf("://") === -1) { this.error = "Please enter your full URL, including the protocol part (https://)."; return; diff --git a/cast/src/launcher/layout/hc-layout.ts b/cast/src/launcher/layout/hc-layout.ts index aaf9d8c17a..f9d82223b2 100644 --- a/cast/src/launcher/layout/hc-layout.ts +++ b/cast/src/launcher/layout/hc-layout.ts @@ -1,25 +1,28 @@ -import { - customElement, - LitElement, - TemplateResult, - html, - CSSResult, - css, - property, -} from "lit-element"; import { Auth, Connection, - HassUser, getUser, + HassUser, } from "home-assistant-js-websocket"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../../src/components/ha-card"; @customElement("hc-layout") class HcLayout extends LitElement { @property() public subtitle?: string | undefined; + @property() public auth?: Auth; + @property() public connection?: Connection; + @property() public user?: HassUser; protected render(): TemplateResult { @@ -37,11 +40,7 @@ class HcLayout extends LitElement { this.auth.data.hassUrl.indexOf("//") + 2 )} - ${this.user - ? html` - – ${this.user.name} - ` - : ""} + ${this.user ? html` – ${this.user.name} ` : ""}
` : ""} diff --git a/cast/src/receiver/cast_context.ts b/cast/src/receiver/cast_context.ts index 587624c74f..931a3353f0 100644 --- a/cast/src/receiver/cast_context.ts +++ b/cast/src/receiver/cast_context.ts @@ -1 +1,2 @@ +/* eslint-disable no-undef */ export const castContext = cast.framework.CastReceiverContext.getInstance(); diff --git a/cast/src/receiver/demo/cast-demo-entities.ts b/cast/src/receiver/demo/cast-demo-entities.ts index c0e8089e16..ff8956804c 100644 --- a/cast/src/receiver/demo/cast-demo-entities.ts +++ b/cast/src/receiver/demo/cast-demo-entities.ts @@ -1,4 +1,4 @@ -import { Entity, convertEntities } from "../../../../src/fake_data/entity"; +import { convertEntities, Entity } from "../../../../src/fake_data/entity"; export const castDemoEntities: () => Entity[] = () => convertEntities({ diff --git a/cast/src/receiver/demo/cast-demo-lovelace.ts b/cast/src/receiver/demo/cast-demo-lovelace.ts index 62f739e793..e948564485 100644 --- a/cast/src/receiver/demo/cast-demo-lovelace.ts +++ b/cast/src/receiver/demo/cast-demo-lovelace.ts @@ -1,6 +1,6 @@ import { - LovelaceConfig, LovelaceCardConfig, + LovelaceConfig, } from "../../../../src/data/lovelace"; import { castContext } from "../cast_context"; diff --git a/cast/src/receiver/entrypoint.ts b/cast/src/receiver/entrypoint.ts index 0430dbbf5a..c52c137048 100644 --- a/cast/src/receiver/entrypoint.ts +++ b/cast/src/receiver/entrypoint.ts @@ -1,9 +1,10 @@ +/* eslint-disable no-undef */ +import { CAST_NS } from "../../../src/cast/const"; +import { HassMessage } from "../../../src/cast/receiver_messages"; import "../../../src/resources/custom-card-support"; import { castContext } from "./cast_context"; -import { ReceivedMessage } from "./types"; -import { HassMessage } from "../../../src/cast/receiver_messages"; import { HcMain } from "./layout/hc-main"; -import { CAST_NS } from "../../../src/cast/const"; +import { ReceivedMessage } from "./types"; const controller = new HcMain(); document.body.append(controller); diff --git a/cast/src/receiver/layout/hc-demo.ts b/cast/src/receiver/layout/hc-demo.ts index 4b597d6e1f..b3c0fcab0e 100644 --- a/cast/src/receiver/layout/hc-demo.ts +++ b/cast/src/receiver/layout/hc-demo.ts @@ -1,19 +1,20 @@ -import { HassElement } from "../../../../src/state/hass-element"; -import "./hc-lovelace"; -import { customElement, TemplateResult, html, property } from "lit-element"; +import { customElement, html, property, TemplateResult } from "lit-element"; +import { mockHistory } from "../../../../demo/src/stubs/history"; +import { LovelaceConfig } from "../../../../src/data/lovelace"; import { MockHomeAssistant, provideHass, } from "../../../../src/fake_data/provide_hass"; +import { HassElement } from "../../../../src/state/hass-element"; import { HomeAssistant } from "../../../../src/types"; -import { LovelaceConfig } from "../../../../src/data/lovelace"; import { castDemoEntities } from "../demo/cast-demo-entities"; import { castDemoLovelace } from "../demo/cast-demo-lovelace"; -import { mockHistory } from "../../../../demo/src/stubs/history"; +import "./hc-lovelace"; @customElement("hc-demo") class HcDemo extends HassElement { @property() public lovelacePath!: string; + @property() private _lovelaceConfig?: LovelaceConfig; protected render(): TemplateResult { @@ -28,6 +29,7 @@ class HcDemo extends HassElement { > `; } + protected firstUpdated(changedProps) { super.firstUpdated(changedProps); this._initialize(); diff --git a/cast/src/receiver/layout/hc-launch-screen.ts b/cast/src/receiver/layout/hc-launch-screen.ts index ee2586e391..b2d729bf65 100644 --- a/cast/src/receiver/layout/hc-launch-screen.ts +++ b/cast/src/receiver/layout/hc-launch-screen.ts @@ -1,17 +1,18 @@ import { - LitElement, - TemplateResult, - html, - customElement, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; import { HomeAssistant } from "../../../../src/types"; @customElement("hc-launch-screen") class HcLaunchScreen extends LitElement { @property() public hass?: HomeAssistant; + @property() public error?: string; protected render(): TemplateResult { @@ -22,11 +23,7 @@ class HcLaunchScreen extends LitElement { />
${this.hass ? "Connected" : "Not Connected"} - ${this.error - ? html` -

Error: ${this.error}

- ` - : ""} + ${this.error ? html`

Error: ${this.error}

` : ""}
`; diff --git a/cast/src/receiver/layout/hc-lovelace.ts b/cast/src/receiver/layout/hc-lovelace.ts index fad09d6329..b8478cc370 100644 --- a/cast/src/receiver/layout/hc-lovelace.ts +++ b/cast/src/receiver/layout/hc-lovelace.ts @@ -1,17 +1,17 @@ import { - LitElement, - TemplateResult, - html, - customElement, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; import { LovelaceConfig } from "../../../../src/data/lovelace"; -import "../../../../src/panels/lovelace/views/hui-view"; -import "../../../../src/panels/lovelace/views/hui-panel-view"; -import { HomeAssistant } from "../../../../src/types"; import { Lovelace } from "../../../../src/panels/lovelace/types"; +import "../../../../src/panels/lovelace/views/hui-panel-view"; +import "../../../../src/panels/lovelace/views/hui-view"; +import { HomeAssistant } from "../../../../src/types"; import "./hc-launch-screen"; @customElement("hc-lovelace") diff --git a/cast/src/receiver/layout/hc-main.ts b/cast/src/receiver/layout/hc-main.ts index cb5773b416..9c6f92e016 100644 --- a/cast/src/receiver/layout/hc-main.ts +++ b/cast/src/receiver/layout/hc-main.ts @@ -1,31 +1,31 @@ import { - getAuth, createConnection, + getAuth, UnsubscribeFunc, } from "home-assistant-js-websocket"; -import { customElement, TemplateResult, html, property } from "lit-element"; -import { HassElement } from "../../../../src/state/hass-element"; -import { - HassMessage, - ConnectMessage, - ShowLovelaceViewMessage, - GetStatusMessage, - ShowDemoMessage, -} from "../../../../src/cast/receiver_messages"; -import { - LovelaceConfig, - getLovelaceCollection, - fetchResources, - LegacyLovelaceConfig, - getLegacyLovelaceCollection, -} from "../../../../src/data/lovelace"; -import "./hc-launch-screen"; -import { castContext } from "../cast_context"; +import { customElement, html, property, TemplateResult } from "lit-element"; import { CAST_NS } from "../../../../src/cast/const"; +import { + ConnectMessage, + GetStatusMessage, + HassMessage, + ShowDemoMessage, + ShowLovelaceViewMessage, +} from "../../../../src/cast/receiver_messages"; import { ReceiverStatusMessage } from "../../../../src/cast/sender_messages"; -import { loadLovelaceResources } from "../../../../src/panels/lovelace/common/load-resources"; -import { isNavigationClick } from "../../../../src/common/dom/is-navigation-click"; import { atLeastVersion } from "../../../../src/common/config/version"; +import { isNavigationClick } from "../../../../src/common/dom/is-navigation-click"; +import { + fetchResources, + getLegacyLovelaceCollection, + getLovelaceCollection, + LegacyLovelaceConfig, + LovelaceConfig, +} from "../../../../src/data/lovelace"; +import { loadLovelaceResources } from "../../../../src/panels/lovelace/common/load-resources"; +import { HassElement } from "../../../../src/state/hass-element"; +import { castContext } from "../cast_context"; +import "./hc-launch-screen"; let resourcesLoaded = false; @@ -40,6 +40,7 @@ export class HcMain extends HassElement { @property() private _error?: string; private _unsubLovelace?: UnsubscribeFunc; + private _urlPath?: string | null; public processIncomingMessage(msg: HassMessage) { @@ -52,16 +53,14 @@ export class HcMain extends HassElement { } else if (msg.type === "show_demo") { this._handleShowDemo(msg); } else { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.warn("unknown msg type", msg); } } protected render(): TemplateResult { if (this._showDemo) { - return html` - - `; + return html` `; } if ( diff --git a/cast/src/receiver/second-load.ts b/cast/src/receiver/second-load.ts index 97d76cdfd1..7fe5d01e02 100644 --- a/cast/src/receiver/second-load.ts +++ b/cast/src/receiver/second-load.ts @@ -1,5 +1,5 @@ import "web-animations-js/web-animations-next-lite.min"; +import "../../../src/components/ha-iconset-svg"; import "../../../src/resources/hass-icons"; import "../../../src/resources/roboto"; -import "../../../src/components/ha-iconset-svg"; import "./layout/hc-lovelace"; diff --git a/demo/src/configs/arsaboo/index.ts b/demo/src/configs/arsaboo/index.ts index 5b31d1cac0..991c0605fe 100644 --- a/demo/src/configs/arsaboo/index.ts +++ b/demo/src/configs/arsaboo/index.ts @@ -1,6 +1,6 @@ import { DemoConfig } from "../types"; -import { demoLovelaceArsaboo } from "./lovelace"; import { demoEntitiesArsaboo } from "./entities"; +import { demoLovelaceArsaboo } from "./lovelace"; import { demoThemeArsaboo } from "./theme"; export const demoArsaboo: DemoConfig = { diff --git a/demo/src/configs/demo-configs.ts b/demo/src/configs/demo-configs.ts index c0bfef2e35..7e586a7c71 100644 --- a/demo/src/configs/demo-configs.ts +++ b/demo/src/configs/demo-configs.ts @@ -21,7 +21,9 @@ export const demoConfigs: Array<() => Promise> = [ ), ]; -export let selectedDemoConfigIndex: number = 0; +// eslint-disable-next-line import/no-mutable-exports +export let selectedDemoConfigIndex = 0; +// eslint-disable-next-line import/no-mutable-exports export let selectedDemoConfig: Promise = demoConfigs[ selectedDemoConfigIndex ](); diff --git a/demo/src/configs/jimpower/index.ts b/demo/src/configs/jimpower/index.ts index c035b22fca..f0c8e24abf 100644 --- a/demo/src/configs/jimpower/index.ts +++ b/demo/src/configs/jimpower/index.ts @@ -1,6 +1,6 @@ import { DemoConfig } from "../types"; -import { demoLovelaceJimpower } from "./lovelace"; import { demoEntitiesJimpower } from "./entities"; +import { demoLovelaceJimpower } from "./lovelace"; import { demoThemeJimpower } from "./theme"; export const demoJimpower: DemoConfig = { diff --git a/demo/src/configs/kernehed/index.ts b/demo/src/configs/kernehed/index.ts index 6c20f83800..3c20f5a7a8 100644 --- a/demo/src/configs/kernehed/index.ts +++ b/demo/src/configs/kernehed/index.ts @@ -1,6 +1,6 @@ import { DemoConfig } from "../types"; -import { demoLovelaceKernehed } from "./lovelace"; import { demoEntitiesKernehed } from "./entities"; +import { demoLovelaceKernehed } from "./lovelace"; import { demoThemeKernehed } from "./theme"; export const demoKernehed: DemoConfig = { diff --git a/demo/src/configs/teachingbirds/index.ts b/demo/src/configs/teachingbirds/index.ts index 380ab6716f..ce1a743dcb 100644 --- a/demo/src/configs/teachingbirds/index.ts +++ b/demo/src/configs/teachingbirds/index.ts @@ -1,6 +1,6 @@ import { DemoConfig } from "../types"; -import { demoLovelaceTeachingbirds } from "./lovelace"; import { demoEntitiesTeachingbirds } from "./entities"; +import { demoLovelaceTeachingbirds } from "./lovelace"; import { demoThemeTeachingbirds } from "./theme"; export const demoTeachingbirds: DemoConfig = { diff --git a/demo/src/configs/types.ts b/demo/src/configs/types.ts index 34ffd8afa7..c0643d65ac 100644 --- a/demo/src/configs/types.ts +++ b/demo/src/configs/types.ts @@ -1,6 +1,6 @@ +import { LocalizeFunc } from "../../../src/common/translations/localize"; import { LovelaceConfig } from "../../../src/data/lovelace"; import { Entity } from "../../../src/fake_data/entity"; -import { LocalizeFunc } from "../../../src/common/translations/localize"; export interface DemoConfig { index?: number; diff --git a/demo/src/custom-cards/card-modder.js b/demo/src/custom-cards/card-modder.js index aaec2b7322..c915a95668 100644 --- a/demo/src/custom-cards/card-modder.js +++ b/demo/src/custom-cards/card-modder.js @@ -1,3 +1,4 @@ +/* eslint-disable */ import { LitElement } from "lit-element"; import "./card-tools"; diff --git a/demo/src/custom-cards/card-tools.js b/demo/src/custom-cards/card-tools.js index 17a9cb9973..39cf7598fb 100644 --- a/demo/src/custom-cards/card-tools.js +++ b/demo/src/custom-cards/card-tools.js @@ -1,4 +1,5 @@ -import { LitElement, html } from "lit-element"; +/* eslint-disable */ +import { html, LitElement } from "lit-element"; if (!window.cardTools) { const version = 0.2; diff --git a/demo/src/custom-cards/cast-demo-row.ts b/demo/src/custom-cards/cast-demo-row.ts index 4a19eaf373..2f00a9fdad 100644 --- a/demo/src/custom-cards/cast-demo-row.ts +++ b/demo/src/custom-cards/cast-demo-row.ts @@ -1,21 +1,20 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "../../../src/components/ha-icon"; -import { - LovelaceRow, - CastConfig, -} from "../../../src/panels/lovelace/entity-rows/types"; -import { HomeAssistant } from "../../../src/types"; import { CastManager } from "../../../src/cast/cast_manager"; import { castSendShowDemo } from "../../../src/cast/receiver_messages"; +import "../../../src/components/ha-icon"; +import { + CastConfig, + LovelaceRow, +} from "../../../src/panels/lovelace/entity-rows/types"; +import { HomeAssistant } from "../../../src/types"; @customElement("cast-demo-row") class CastDemoRow extends LitElement implements LovelaceRow { @@ -52,6 +51,7 @@ class CastDemoRow extends LitElement implements LovelaceRow { this.requestUpdate(); }); mgr.castContext.addEventListener( + // eslint-disable-next-line no-undef cast.framework.CastContextEventType.SESSION_STATE_CHANGED, (ev) => { // On Android, opening a new session always results in SESSION_RESUMED. diff --git a/demo/src/custom-cards/ha-demo-card.ts b/demo/src/custom-cards/ha-demo-card.ts index 45c887db9d..aeb248d79a 100644 --- a/demo/src/custom-cards/ha-demo-card.ts +++ b/demo/src/custom-cards/ha-demo-card.ts @@ -1,22 +1,32 @@ -import { LitElement, html, CSSResult, css, property } from "lit-element"; -import { until } from "lit-html/directives/until"; import "@material/mwc-button"; import "@polymer/paper-spinner/paper-spinner-lite"; +import { + css, + CSSResult, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { until } from "lit-html/directives/until"; import "../../../src/components/ha-card"; -import { LovelaceCard, Lovelace } from "../../../src/panels/lovelace/types"; import { LovelaceCardConfig } from "../../../src/data/lovelace"; import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; +import { Lovelace, LovelaceCard } from "../../../src/panels/lovelace/types"; import { demoConfigs, selectedDemoConfig, - setDemoConfig, selectedDemoConfigIndex, + setDemoConfig, } from "../configs/demo-configs"; export class HADemoCard extends LitElement implements LovelaceCard { @property() public lovelace?: Lovelace; + @property() public hass!: MockHomeAssistant; + @property() private _switching?: boolean; + private _hidden = localStorage.hide_demo_card; public getCardSize() { @@ -25,22 +35,21 @@ export class HADemoCard extends LitElement implements LovelaceCard { public setConfig( // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-unused-vars config: LovelaceCardConfig - // tslint:disable-next-line:no-empty + // eslint-disable-next-line @typescript-eslint/no-empty-function ) {} - protected render() { + protected render(): TemplateResult { if (this._hidden) { - return; + return html``; } return html`
${this._switching - ? html` - - ` + ? html` ` : until( selectedDemoConfig.then( (conf) => html` diff --git a/demo/src/entrypoint.ts b/demo/src/entrypoint.ts index bacc0978a8..20fdcb71ab 100644 --- a/demo/src/entrypoint.ts +++ b/demo/src/entrypoint.ts @@ -1,12 +1,10 @@ import "@polymer/paper-styles/typography"; import "@polymer/polymer/lib/elements/dom-if"; import "@polymer/polymer/lib/elements/dom-repeat"; - -import "../../src/resources/hass-icons"; -import "../../src/resources/ha-style"; -import "../../src/resources/roboto"; import "../../src/components/ha-iconset-svg"; - +import "../../src/resources/ha-style"; +import "../../src/resources/hass-icons"; +import "../../src/resources/roboto"; import "./ha-demo"; import "./resources/hademo-icons"; diff --git a/demo/src/ha-demo.ts b/demo/src/ha-demo.ts index 6eb383eb22..6fd33b7f57 100644 --- a/demo/src/ha-demo.ts +++ b/demo/src/ha-demo.ts @@ -1,23 +1,23 @@ -import { HomeAssistantAppEl } from "../../src/layouts/home-assistant"; -import { - provideHass, - MockHomeAssistant, -} from "../../src/fake_data/provide_hass"; +import { isNavigationClick } from "../../src/common/dom/is-navigation-click"; import { navigate } from "../../src/common/navigate"; -import { mockLovelace } from "./stubs/lovelace"; -import { mockAuth } from "./stubs/auth"; +import { + MockHomeAssistant, + provideHass, +} from "../../src/fake_data/provide_hass"; +import { HomeAssistantAppEl } from "../../src/layouts/home-assistant"; +import { HomeAssistant } from "../../src/types"; import { selectedDemoConfig } from "./configs/demo-configs"; -import { mockTranslations } from "./stubs/translations"; +import { mockAuth } from "./stubs/auth"; +import { mockEvents } from "./stubs/events"; +import { mockFrontend } from "./stubs/frontend"; import { mockHistory } from "./stubs/history"; +import { mockLovelace } from "./stubs/lovelace"; +import { mockMediaPlayer } from "./stubs/media_player"; +import { mockPersistentNotification } from "./stubs/persistent_notification"; import { mockShoppingList } from "./stubs/shopping_list"; import { mockSystemLog } from "./stubs/system_log"; import { mockTemplate } from "./stubs/template"; -import { mockEvents } from "./stubs/events"; -import { mockMediaPlayer } from "./stubs/media_player"; -import { HomeAssistant } from "../../src/types"; -import { mockFrontend } from "./stubs/frontend"; -import { mockPersistentNotification } from "./stubs/persistent_notification"; -import { isNavigationClick } from "../../src/common/dom/is-navigation-click"; +import { mockTranslations } from "./stubs/translations"; class HaDemo extends HomeAssistantAppEl { protected async _initialize() { diff --git a/demo/src/stubs/history.ts b/demo/src/stubs/history.ts index 84ef96619a..96fd787037 100644 --- a/demo/src/stubs/history.ts +++ b/demo/src/stubs/history.ts @@ -1,5 +1,5 @@ -import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; import { HassEntity } from "home-assistant-js-websocket"; +import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; interface HistoryQueryParams { filter_entity_id: string; @@ -95,7 +95,7 @@ export const mockHistory = (mockHass: MockHomeAssistant) => { const numberState = Number(state.state); if (isNaN(numberState)) { - // tslint:disable-next-line + // eslint-disable-next-line console.log( "Ignoring state with unparsable state but with a unit", entityId, diff --git a/demo/src/stubs/lovelace.ts b/demo/src/stubs/lovelace.ts index 138a15aff4..3928e5eaf0 100644 --- a/demo/src/stubs/lovelace.ts +++ b/demo/src/stubs/lovelace.ts @@ -1,11 +1,9 @@ -import "../custom-cards/ha-demo-card"; -import "../custom-cards/cast-demo-row"; -// Not duplicate, one is for typing. -// tslint:disable-next-line -import { HADemoCard } from "../custom-cards/ha-demo-card"; -import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; +import type { LocalizeFunc } from "../../../src/common/translations/localize"; +import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; import { selectedDemoConfig } from "../configs/demo-configs"; -import { LocalizeFunc } from "../../../src/common/translations/localize"; +import "../custom-cards/cast-demo-row"; +import "../custom-cards/ha-demo-card"; +import type { HADemoCard } from "../custom-cards/ha-demo-card"; export const mockLovelace = ( hass: MockHomeAssistant, @@ -22,12 +20,12 @@ export const mockLovelace = ( }; customElements.whenDefined("hui-view").then(() => { - // tslint:disable-next-line + // eslint-disable-next-line const HUIView = customElements.get("hui-view"); // Patch HUI-VIEW to make the lovelace object available to the demo card const oldCreateCard = HUIView.prototype.createCardElement; - HUIView.prototype.createCardElement = function(config) { + HUIView.prototype.createCardElement = function (config) { const el = oldCreateCard.call(this, config); if (el.tagName === "HA-DEMO-CARD") { (el as HADemoCard).lovelace = this.lovelace; diff --git a/demo/src/stubs/persistent_notification.ts b/demo/src/stubs/persistent_notification.ts index 2dcd4f61bd..b5a2d7223d 100644 --- a/demo/src/stubs/persistent_notification.ts +++ b/demo/src/stubs/persistent_notification.ts @@ -1,5 +1,5 @@ -import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; import { PersistentNotification } from "../../../src/data/persistent_notification"; +import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; export const mockPersistentNotification = (hass: MockHomeAssistant) => { hass.mockWS("persistent_notification/get", () => diff --git a/demo/src/stubs/shopping_list.ts b/demo/src/stubs/shopping_list.ts index 44864e09cd..7b714a6e01 100644 --- a/demo/src/stubs/shopping_list.ts +++ b/demo/src/stubs/shopping_list.ts @@ -1,5 +1,5 @@ -import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; import { ShoppingListItem } from "../../../src/data/shopping-list"; +import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; let items: ShoppingListItem[] = [ { diff --git a/gallery/src/components/demo-card.js b/gallery/src/components/demo-card.js index 41d3fe0702..6a88200a6c 100644 --- a/gallery/src/components/demo-card.js +++ b/gallery/src/components/demo-card.js @@ -1,7 +1,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import { safeLoad } from "js-yaml"; - import { createCardElement } from "../../../src/panels/lovelace/create-element/create-card-element"; class DemoCard extends PolymerElement { diff --git a/gallery/src/components/demo-cards.js b/gallery/src/components/demo-cards.js index db01c7fe13..5b1c8123ad 100644 --- a/gallery/src/components/demo-cards.js +++ b/gallery/src/components/demo-cards.js @@ -1,9 +1,9 @@ -import { html } from "@polymer/polymer/lib/utils/html-tag"; -import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@polymer/app-layout/app-toolbar/app-toolbar"; - -import "./demo-card"; +import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ +import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../../src/components/ha-switch"; +import "./demo-card"; class DemoCards extends PolymerElement { static get template() { diff --git a/gallery/src/components/demo-more-info.js b/gallery/src/components/demo-more-info.js index ce5fda13d8..c1cac68c8b 100644 --- a/gallery/src/components/demo-more-info.js +++ b/gallery/src/components/demo-more-info.js @@ -1,9 +1,9 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../src/state-summary/state-card-content"; -import "../../../src/dialogs/more-info/controls/more-info-content"; import "../../../src/components/ha-card"; +import "../../../src/dialogs/more-info/controls/more-info-content"; +import "../../../src/state-summary/state-card-content"; class DemoMoreInfo extends PolymerElement { static get template() { diff --git a/gallery/src/components/demo-more-infos.js b/gallery/src/components/demo-more-infos.js index 8f82e2a8ab..f1de5f0908 100644 --- a/gallery/src/components/demo-more-infos.js +++ b/gallery/src/components/demo-more-infos.js @@ -1,9 +1,9 @@ -import { html } from "@polymer/polymer/lib/utils/html-tag"; -import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@polymer/app-layout/app-toolbar/app-toolbar"; - -import "./demo-more-info"; +import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ +import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../../src/components/ha-switch"; +import "./demo-more-info"; class DemoMoreInfos extends PolymerElement { static get template() { diff --git a/gallery/src/demos/demo-hui-alarm-panel-card.ts b/gallery/src/demos/demo-hui-alarm-panel-card.ts index 83fbf2bc25..12b5f130b4 100644 --- a/gallery/src/demos/demo-hui-alarm-panel-card.ts +++ b/gallery/src/demos/demo-hui-alarm-panel-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; diff --git a/gallery/src/demos/demo-hui-conditional-card.ts b/gallery/src/demos/demo-hui-conditional-card.ts index f68ddb127a..e5ce595f91 100644 --- a/gallery/src/demos/demo-hui-conditional-card.ts +++ b/gallery/src/demos/demo-hui-conditional-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; diff --git a/gallery/src/demos/demo-hui-entities-card.ts b/gallery/src/demos/demo-hui-entities-card.ts index 0b219d5b12..bb0261e9d5 100644 --- a/gallery/src/demos/demo-hui-entities-card.ts +++ b/gallery/src/demos/demo-hui-entities-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -219,9 +219,7 @@ const CONFIGS = [ class DemoEntities extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-entity-button-card.ts b/gallery/src/demos/demo-hui-entity-button-card.ts index 978e1ae963..8c4c77e100 100644 --- a/gallery/src/demos/demo-hui-entity-button-card.ts +++ b/gallery/src/demos/demo-hui-entity-button-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; diff --git a/gallery/src/demos/demo-hui-entity-filter-card.ts b/gallery/src/demos/demo-hui-entity-filter-card.ts index 22d8f9f5be..66a0c08b70 100644 --- a/gallery/src/demos/demo-hui-entity-filter-card.ts +++ b/gallery/src/demos/demo-hui-entity-filter-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -91,9 +91,7 @@ const CONFIGS = [ class DemoFilter extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-gauge-card.ts b/gallery/src/demos/demo-hui-gauge-card.ts index 18ea542f4d..2963cab228 100644 --- a/gallery/src/demos/demo-hui-gauge-card.ts +++ b/gallery/src/demos/demo-hui-gauge-card.ts @@ -1,9 +1,9 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/demo-cards"; import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; +import "../components/demo-cards"; const ENTITIES = [ getEntity("sensor", "brightness", "12", {}), @@ -78,9 +78,7 @@ const CONFIGS = [ class DemoGaugeEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-glance-card.ts b/gallery/src/demos/demo-hui-glance-card.ts index 8bd85b9812..5455232a3d 100644 --- a/gallery/src/demos/demo-hui-glance-card.ts +++ b/gallery/src/demos/demo-hui-glance-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -220,9 +220,7 @@ const CONFIGS = [ class DemoPicEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-iframe-card.ts b/gallery/src/demos/demo-hui-iframe-card.ts index d7651473b1..596f6d302f 100644 --- a/gallery/src/demos/demo-hui-iframe-card.ts +++ b/gallery/src/demos/demo-hui-iframe-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/demo-cards"; const CONFIGS = [ @@ -39,9 +39,7 @@ const CONFIGS = [ class DemoIframe extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-light-card.ts b/gallery/src/demos/demo-hui-light-card.ts index 6e1a44ac68..552bb2b0df 100644 --- a/gallery/src/demos/demo-hui-light-card.ts +++ b/gallery/src/demos/demo-hui-light-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -51,9 +51,7 @@ const CONFIGS = [ class DemoLightEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-map-card.ts b/gallery/src/demos/demo-hui-map-card.ts index 4246d2857e..df4c8844db 100644 --- a/gallery/src/demos/demo-hui-map-card.ts +++ b/gallery/src/demos/demo-hui-map-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; diff --git a/gallery/src/demos/demo-hui-markdown-card.ts b/gallery/src/demos/demo-hui-markdown-card.ts index fe0ca6d175..07e974316e 100644 --- a/gallery/src/demos/demo-hui-markdown-card.ts +++ b/gallery/src/demos/demo-hui-markdown-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/demo-cards"; const CONFIGS = [ @@ -254,9 +254,7 @@ const CONFIGS = [ class DemoMarkdown extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-media-control-card.ts b/gallery/src/demos/demo-hui-media-control-card.ts index ca85e36f1d..a26a13a8a3 100644 --- a/gallery/src/demos/demo-hui-media-control-card.ts +++ b/gallery/src/demos/demo-hui-media-control-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; import { createMediaPlayerEntities } from "../data/media_players"; diff --git a/gallery/src/demos/demo-hui-media-player-rows.ts b/gallery/src/demos/demo-hui-media-player-rows.ts index f5a7d329a5..1077e7a7b8 100644 --- a/gallery/src/demos/demo-hui-media-player-rows.ts +++ b/gallery/src/demos/demo-hui-media-player-rows.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; import { createMediaPlayerEntities } from "../data/media_players"; diff --git a/gallery/src/demos/demo-hui-picture-elements-card.ts b/gallery/src/demos/demo-hui-picture-elements-card.ts index 48f8dd51e6..bed6be4c47 100644 --- a/gallery/src/demos/demo-hui-picture-elements-card.ts +++ b/gallery/src/demos/demo-hui-picture-elements-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -129,9 +129,7 @@ const CONFIGS = [ class DemoPicElements extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-picture-entity-card.ts b/gallery/src/demos/demo-hui-picture-entity-card.ts index 9e848e3527..d4df8f31f4 100644 --- a/gallery/src/demos/demo-hui-picture-entity-card.ts +++ b/gallery/src/demos/demo-hui-picture-entity-card.ts @@ -1,9 +1,9 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/demo-cards"; -import { provideHass } from "../../../src/fake_data/provide_hass"; import { getEntity } from "../../../src/fake_data/entity"; +import { provideHass } from "../../../src/fake_data/provide_hass"; +import "../components/demo-cards"; const ENTITIES = [ getEntity("light", "kitchen_lights", "on", { @@ -82,9 +82,7 @@ const CONFIGS = [ class DemoPicEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-picture-glance-card.ts b/gallery/src/demos/demo-hui-picture-glance-card.ts index ec099beda9..684aaa2071 100644 --- a/gallery/src/demos/demo-hui-picture-glance-card.ts +++ b/gallery/src/demos/demo-hui-picture-glance-card.ts @@ -1,9 +1,9 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/demo-cards"; import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; +import "../components/demo-cards"; const ENTITIES = [ getEntity("switch", "decorative_lights", "on", { @@ -123,9 +123,7 @@ const CONFIGS = [ class DemoPicGlance extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-shopping-list-card.ts b/gallery/src/demos/demo-hui-shopping-list-card.ts index ad37d60739..9abb1afc1e 100644 --- a/gallery/src/demos/demo-hui-shopping-list-card.ts +++ b/gallery/src/demos/demo-hui-shopping-list-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -22,9 +22,7 @@ const CONFIGS = [ class DemoShoppingListEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-stack-card.ts b/gallery/src/demos/demo-hui-stack-card.ts index 942a7fb84b..b746888dc1 100644 --- a/gallery/src/demos/demo-hui-stack-card.ts +++ b/gallery/src/demos/demo-hui-stack-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -93,9 +93,7 @@ const CONFIGS = [ class DemoStack extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-hui-thermostat-card.ts b/gallery/src/demos/demo-hui-thermostat-card.ts index 8ce3652e35..81b344e689 100644 --- a/gallery/src/demos/demo-hui-thermostat-card.ts +++ b/gallery/src/demos/demo-hui-thermostat-card.ts @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; @@ -76,9 +76,7 @@ const CONFIGS = [ class DemoThermostatEntity extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/gallery/src/demos/demo-more-info-light.ts b/gallery/src/demos/demo-more-info-light.ts index 37e53dfc81..67cd631b87 100644 --- a/gallery/src/demos/demo-more-info-light.ts +++ b/gallery/src/demos/demo-more-info-light.ts @@ -1,14 +1,12 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../src/dialogs/more-info/controls/more-info-content"; import "../../../src/components/ha-card"; - +import { SUPPORT_BRIGHTNESS } from "../../../src/data/light"; +import "../../../src/dialogs/more-info/controls/more-info-content"; import { getEntity } from "../../../src/fake_data/entity"; import { provideHass } from "../../../src/fake_data/provide_hass"; - import "../components/demo-more-infos"; -import { SUPPORT_BRIGHTNESS } from "../../../src/data/light"; const ENTITIES = [ getEntity("light", "bed_light", "on", { diff --git a/gallery/src/demos/demo-util-long-press.ts b/gallery/src/demos/demo-util-long-press.ts index b1da49043e..518af1df39 100644 --- a/gallery/src/demos/demo-util-long-press.ts +++ b/gallery/src/demos/demo-util-long-press.ts @@ -1,9 +1,8 @@ -import { html, LitElement, TemplateResult } from "lit-element"; import "@material/mwc-button"; - +import { html, LitElement, TemplateResult } from "lit-element"; import "../../../src/components/ha-card"; -import { actionHandler } from "../../../src/panels/lovelace/common/directives/action-handler-directive"; import { ActionHandlerEvent } from "../../../src/data/lovelace"; +import { actionHandler } from "../../../src/panels/lovelace/common/directives/action-handler-directive"; export class DemoUtilLongPress extends LitElement { protected render(): TemplateResult { diff --git a/gallery/src/entrypoint.js b/gallery/src/entrypoint.js index 6e656edc98..4cf309e612 100644 --- a/gallery/src/entrypoint.js +++ b/gallery/src/entrypoint.js @@ -1,12 +1,10 @@ import "@polymer/paper-styles/typography"; import "@polymer/polymer/lib/elements/dom-if"; import "@polymer/polymer/lib/elements/dom-repeat"; - -import "../../src/resources/hass-icons"; -import "../../src/resources/ha-style"; -import "../../src/resources/roboto"; import "../../src/components/ha-iconset-svg"; - +import "../../src/resources/ha-style"; +import "../../src/resources/hass-icons"; +import "../../src/resources/roboto"; import "./ha-gallery"; document.body.appendChild(document.createElement("ha-gallery")); diff --git a/gallery/src/ha-gallery.js b/gallery/src/ha-gallery.js index a53fa66462..1c68e07e33 100644 --- a/gallery/src/ha-gallery.js +++ b/gallery/src/ha-gallery.js @@ -2,15 +2,16 @@ import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/iron-icon/iron-icon"; +import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; -import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../src/managers/notification-manager"; import "../../src/components/ha-card"; +import "../../src/managers/notification-manager"; +// eslint-disable-next-line no-undef const DEMOS = require.context("./demos", true, /^(.*\.(ts$))[^.]*$/im); const fixPath = (path) => path.substr(2, path.length - 5); diff --git a/hassio/src/addon-store/hassio-addon-repository.ts b/hassio/src/addon-store/hassio-addon-repository.ts index 8cf0bdc1bf..080d4a3d77 100644 --- a/hassio/src/addon-store/hassio-addon-repository.ts +++ b/hassio/src/addon-store/hassio-addon-repository.ts @@ -1,29 +1,31 @@ +import "@polymer/paper-card/paper-card"; import { css, - TemplateResult, + CSSResultArray, html, LitElement, property, - CSSResultArray, + TemplateResult, } from "lit-element"; -import "@polymer/paper-card/paper-card"; import memoizeOne from "memoize-one"; - -import "../components/hassio-card-content"; -import { hassioStyle } from "../resources/hassio-style"; -import { HomeAssistant } from "../../../src/types"; +import { atLeastVersion } from "../../../src/common/config/version"; +import { navigate } from "../../../src/common/navigate"; import { HassioAddonInfo, HassioAddonRepository, } from "../../../src/data/hassio/addon"; -import { navigate } from "../../../src/common/navigate"; +import { HomeAssistant } from "../../../src/types"; +import "../components/hassio-card-content"; import { filterAndSort } from "../components/hassio-filter-addons"; -import { atLeastVersion } from "../../../src/common/config/version"; +import { hassioStyle } from "../resources/hassio-style"; class HassioAddonRepositoryEl extends LitElement { @property() public hass!: HomeAssistant; + @property() public repo!: HassioAddonRepository; + @property() public addons!: HassioAddonInfo[]; + @property() public filter!: string; private _getAddons = memoizeOne( diff --git a/hassio/src/addon-store/hassio-addon-store.ts b/hassio/src/addon-store/hassio-addon-store.ts index 628ef2bef9..5d9093c90c 100644 --- a/hassio/src/addon-store/hassio-addon-store.ts +++ b/hassio/src/addon-store/hassio-addon-store.ts @@ -1,22 +1,22 @@ -import "./hassio-addon-repository"; -import "./hassio-repositories-editor"; -import { TemplateResult, html } from "lit-html"; import { - LitElement, - CSSResult, css, + CSSResult, + LitElement, property, PropertyValues, } from "lit-element"; -import { HomeAssistant } from "../../../src/types"; +import { html, TemplateResult } from "lit-html"; import { - HassioAddonRepository, - HassioAddonInfo, fetchHassioAddonsInfo, + HassioAddonInfo, + HassioAddonRepository, reloadHassioAddons, } from "../../../src/data/hassio/addon"; import "../../../src/layouts/loading-screen"; +import { HomeAssistant } from "../../../src/types"; import "../components/hassio-search-input"; +import "./hassio-addon-repository"; +import "./hassio-repositories-editor"; const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => { if (a.slug === "local") { @@ -36,8 +36,11 @@ const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => { class HassioAddonStore extends LitElement { @property() public hass!: HomeAssistant; + @property() private _addons?: HassioAddonInfo[]; + @property() private _repos?: HassioAddonRepository[]; + @property() private _filter?: string; public async refreshData() { @@ -50,9 +53,7 @@ class HassioAddonStore extends LitElement { protected render(): TemplateResult { if (!this._addons || !this._repos) { - return html` - - `; + return html` `; } const repos: TemplateResult[] = []; diff --git a/hassio/src/addon-store/hassio-repositories-editor.ts b/hassio/src/addon-store/hassio-repositories-editor.ts index 27241482b4..1a23949cdf 100644 --- a/hassio/src/addon-store/hassio-repositories-editor.ts +++ b/hassio/src/addon-store/hassio-repositories-editor.ts @@ -1,30 +1,31 @@ -import { - LitElement, - html, - CSSResultArray, - css, - property, - TemplateResult, - customElement, - PropertyValues, -} from "lit-element"; import "@polymer/iron-icon/iron-icon"; import "@polymer/paper-card/paper-card"; import "@polymer/paper-input/paper-input"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { repeat } from "lit-html/directives/repeat"; import memoizeOne from "memoize-one"; - import "../../../src/components/buttons/ha-call-api-button"; -import "../components/hassio-card-content"; -import { hassioStyle } from "../resources/hassio-style"; -import { HomeAssistant } from "../../../src/types"; import { HassioAddonRepository } from "../../../src/data/hassio/addon"; import { PolymerChangedEvent } from "../../../src/polymer-types"; -import { repeat } from "lit-html/directives/repeat"; +import { HomeAssistant } from "../../../src/types"; +import "../components/hassio-card-content"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-repositories-editor") class HassioRepositoriesEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public repos!: HassioAddonRepository[]; + @property() private _repoUrl = ""; private _sortedRepos = memoizeOne((repos: HassioAddonRepository[]) => diff --git a/hassio/src/addon-view/hassio-addon-audio.ts b/hassio/src/addon-view/hassio-addon-audio.ts index eeda1084a5..2a087ff351 100644 --- a/hassio/src/addon-view/hassio-addon-audio.ts +++ b/hassio/src/addon-view/hassio-addon-audio.ts @@ -1,5 +1,3 @@ -import "web-animations-js/web-animations-next-lite.min"; - import "@material/mwc-button"; import "@polymer/paper-card/paper-card"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; @@ -15,39 +13,41 @@ import { PropertyValues, TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../src/types"; +import "web-animations-js/web-animations-next-lite.min"; import { HassioAddonDetails, - setHassioAddonOption, HassioAddonSetOptionParams, + setHassioAddonOption, } from "../../../src/data/hassio/addon"; import { - HassioHardwareAudioDevice, fetchHassioHardwareAudio, + HassioHardwareAudioDevice, } from "../../../src/data/hassio/hardware"; -import { hassioStyle } from "../resources/hassio-style"; import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-addon-audio") class HassioAddonAudio extends LitElement { @property() public hass!: HomeAssistant; + @property() public addon!: HassioAddonDetails; + @property() private _error?: string; + @property() private _inputDevices?: HassioHardwareAudioDevice[]; + @property() private _outputDevices?: HassioHardwareAudioDevice[]; + @property() private _selectedInput!: null | string; + @property() private _selectedOutput!: null | string; protected render(): TemplateResult { return html`
- ${this._error - ? html` -
${this._error}
- ` - : ""} + ${this._error ? html`
${this._error}
` : ""} ${this._inputDevices && - this._inputDevices.map((item) => { - return html` - ${item.name} - `; - })} + this._inputDevices.map((item) => { + return html` + ${item.name} + `; + })} ${this._outputDevices && - this._outputDevices.map((item) => { - return html` - ${item.name} - `; - })} + this._outputDevices.map((item) => { + return html` + ${item.name} + `; + })}
diff --git a/hassio/src/addon-view/hassio-addon-config.ts b/hassio/src/addon-view/hassio-addon-config.ts index 1a91052163..5d18556ecc 100644 --- a/hassio/src/addon-view/hassio-addon-config.ts +++ b/hassio/src/addon-view/hassio-addon-config.ts @@ -1,5 +1,5 @@ -import "@polymer/iron-autogrow-textarea/iron-autogrow-textarea"; import "@material/mwc-button"; +import "@polymer/iron-autogrow-textarea/iron-autogrow-textarea"; import "@polymer/paper-card/paper-card"; import { css, @@ -9,29 +9,30 @@ import { LitElement, property, PropertyValues, - TemplateResult, query, + TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../src/types"; -import { - HassioAddonDetails, - setHassioAddonOption, - HassioAddonSetOptionParams, -} from "../../../src/data/hassio/addon"; -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; import { fireEvent } from "../../../src/common/dom/fire_event"; import "../../../src/components/ha-yaml-editor"; -// tslint:disable-next-line: no-duplicate-imports -import { HaYamlEditor } from "../../../src/components/ha-yaml-editor"; +import type { HaYamlEditor } from "../../../src/components/ha-yaml-editor"; +import { + HassioAddonDetails, + HassioAddonSetOptionParams, + setHassioAddonOption, +} from "../../../src/data/hassio/addon"; import { showConfirmationDialog } from "../../../src/dialogs/generic/show-dialog-box"; +import { haStyle } from "../../../src/resources/styles"; +import type { HomeAssistant } from "../../../src/types"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-addon-config") class HassioAddonConfig extends LitElement { @property() public hass!: HomeAssistant; + @property() public addon!: HassioAddonDetails; + @property() private _error?: string; + @property({ type: Boolean }) private _configHasChanged = false; @query("ha-yaml-editor") private _editor!: HaYamlEditor; @@ -47,16 +48,8 @@ class HassioAddonConfig extends LitElement { - ${this._error - ? html` -
${this._error}
- ` - : ""} - ${valid - ? "" - : html` -
Invalid YAML
- `} + ${this._error ? html`
${this._error}
` : ""} + ${valid ? "" : html`
Invalid YAML
`}
@@ -140,8 +133,9 @@ class HassioAddonConfig extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to reset addon configuration, ${err.body?.message || - err}`; + this._error = `Failed to reset addon configuration, ${ + err.body?.message || err + }`; } } @@ -166,8 +160,9 @@ class HassioAddonConfig extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to save addon configuration, ${err.body?.message || - err}`; + this._error = `Failed to save addon configuration, ${ + err.body?.message || err + }`; } } } diff --git a/hassio/src/addon-view/hassio-addon-info.ts b/hassio/src/addon-view/hassio-addon-info.ts index 04b736f34f..1395a3ee43 100644 --- a/hassio/src/addon-view/hassio-addon-info.ts +++ b/hassio/src/addon-view/hassio-addon-info.ts @@ -12,31 +12,29 @@ import { TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; - +import { atLeastVersion } from "../../../src/common/config/version"; +import { fireEvent } from "../../../src/common/dom/fire_event"; +import { navigate } from "../../../src/common/navigate"; import "../../../src/components/buttons/ha-call-api-button"; import "../../../src/components/buttons/ha-progress-button"; import "../../../src/components/ha-label-badge"; import "../../../src/components/ha-markdown"; import "../../../src/components/ha-switch"; -import "../components/hassio-card-content"; - -import { fireEvent } from "../../../src/common/dom/fire_event"; import { + fetchHassioAddonChangelog, HassioAddonDetails, HassioAddonSetOptionParams, HassioAddonSetSecurityParams, + installHassioAddon, setHassioAddonOption, setHassioAddonSecurity, uninstallHassioAddon, - installHassioAddon, - fetchHassioAddonChangelog, } from "../../../src/data/hassio/addon"; -import { hassioStyle } from "../resources/hassio-style"; import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; -import { navigate } from "../../../src/common/navigate"; +import "../components/hassio-card-content"; import { showHassioMarkdownDialog } from "../dialogs/markdown/show-dialog-hassio-markdown"; -import { atLeastVersion } from "../../../src/common/config/version"; +import { hassioStyle } from "../resources/hassio-style"; const PERMIS_DESC = { rating: { @@ -94,8 +92,11 @@ const PERMIS_DESC = { @customElement("hassio-addon-info") class HassioAddonInfo extends LitElement { @property() public hass!: HomeAssistant; + @property() public addon!: HassioAddonDetails; + @property() private _error?: string; + @property({ type: Boolean }) private _installing = false; protected render(): TemplateResult { @@ -178,9 +179,7 @@ class HassioAddonInfo extends LitElement { > `} ` - : html` - ${this.addon.version_latest} - `} + : html` ${this.addon.version_latest} `}
@@ -379,11 +378,7 @@ class HassioAddonInfo extends LitElement { : ""} ` : ""} - ${this._error - ? html` -
${this._error}
- ` - : ""} + ${this._error ? html`
${this._error}
` : ""}
${this.addon.version @@ -721,8 +716,9 @@ class HassioAddonInfo extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to set addon security option, ${err.body?.message || - err}`; + this._error = `Failed to set addon security option, ${ + err.body?.message || err + }`; } } @@ -756,8 +752,9 @@ class HassioAddonInfo extends LitElement { content, }); } catch (err) { - this._error = `Failed to get addon changelog, ${err.body?.message || - err}`; + this._error = `Failed to get addon changelog, ${ + err.body?.message || err + }`; } } diff --git a/hassio/src/addon-view/hassio-addon-logs.ts b/hassio/src/addon-view/hassio-addon-logs.ts index 0f568df2c7..b5ad7f38e9 100644 --- a/hassio/src/addon-view/hassio-addon-logs.ts +++ b/hassio/src/addon-view/hassio-addon-logs.ts @@ -7,23 +7,26 @@ import { html, LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../src/types"; import { - HassioAddonDetails, fetchHassioAddonLogs, + HassioAddonDetails, } from "../../../src/data/hassio/addon"; +import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; import { ANSI_HTML_STYLE, parseTextToColoredPre } from "../ansi-to-html"; import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; @customElement("hassio-addon-logs") class HassioAddonLogs extends LitElement { @property() public hass!: HomeAssistant; + @property() public addon!: HassioAddonDetails; + @property() private _error?: string; + @query("#content") private _logContent!: any; public async connectedCallback(): Promise { @@ -34,11 +37,7 @@ class HassioAddonLogs extends LitElement { protected render(): TemplateResult { return html` - ${this._error - ? html` -
${this._error}
- ` - : ""} + ${this._error ? html`
${this._error}
` : ""}
Refresh diff --git a/hassio/src/addon-view/hassio-addon-network.ts b/hassio/src/addon-view/hassio-addon-network.ts index 2ad9e008a7..914157438f 100644 --- a/hassio/src/addon-view/hassio-addon-network.ts +++ b/hassio/src/addon-view/hassio-addon-network.ts @@ -1,4 +1,5 @@ import "@polymer/paper-card/paper-card"; +import { PaperInputElement } from "@polymer/paper-input/paper-input"; import { css, CSSResult, @@ -9,18 +10,15 @@ import { PropertyValues, TemplateResult, } from "lit-element"; - -import { PaperInputElement } from "@polymer/paper-input/paper-input"; - -import { HomeAssistant } from "../../../src/types"; +import { fireEvent } from "../../../src/common/dom/fire_event"; import { HassioAddonDetails, HassioAddonSetOptionParams, setHassioAddonOption, } from "../../../src/data/hassio/addon"; -import { hassioStyle } from "../resources/hassio-style"; import { haStyle } from "../../../src/resources/styles"; -import { fireEvent } from "../../../src/common/dom/fire_event"; +import { HomeAssistant } from "../../../src/types"; +import { hassioStyle } from "../resources/hassio-style"; interface NetworkItem { description: string; @@ -35,8 +33,11 @@ interface NetworkItemInput extends PaperInputElement { @customElement("hassio-addon-network") class HassioAddonNetwork extends LitElement { @property() public hass!: HomeAssistant; + @property() public addon!: HassioAddonDetails; + @property() private _error?: string; + @property() private _config?: NetworkItem[]; public connectedCallback(): void { @@ -52,11 +53,7 @@ class HassioAddonNetwork extends LitElement { return html`
- ${this._error - ? html` -
${this._error}
- ` - : ""} + ${this._error ? html`
${this._error}
` : ""} @@ -164,8 +161,9 @@ class HassioAddonNetwork extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to set addon network configuration, ${err.body - ?.message || err}`; + this._error = `Failed to set addon network configuration, ${ + err.body?.message || err + }`; } } @@ -189,8 +187,9 @@ class HassioAddonNetwork extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to set addon network configuration, ${err.body - ?.message || err}`; + this._error = `Failed to set addon network configuration, ${ + err.body?.message || err + }`; } } } diff --git a/hassio/src/addon-view/hassio-addon-view.ts b/hassio/src/addon-view/hassio-addon-view.ts index 4f5b2cfd70..50dff7aa21 100644 --- a/hassio/src/addon-view/hassio-addon-view.ts +++ b/hassio/src/addon-view/hassio-addon-view.ts @@ -12,15 +12,13 @@ import { property, TemplateResult, } from "lit-element"; - -import { HomeAssistant, Route } from "../../../src/types"; import { - HassioAddonDetails, fetchHassioAddonInfo, + HassioAddonDetails, } from "../../../src/data/hassio/addon"; -import { hassioStyle } from "../resources/hassio-style"; import { haStyle } from "../../../src/resources/styles"; - +import { HomeAssistant, Route } from "../../../src/types"; +import { hassioStyle } from "../resources/hassio-style"; import "./hassio-addon-audio"; import "./hassio-addon-config"; import "./hassio-addon-info"; @@ -30,14 +28,14 @@ import "./hassio-addon-network"; @customElement("hassio-addon-view") class HassioAddonView extends LitElement { @property() public hass!: HomeAssistant; + @property() public route!: Route; + @property() public addon?: HassioAddonDetails; protected render(): TemplateResult { if (!this.addon) { - return html` - - `; + return html` `; } return html` diff --git a/hassio/src/ansi-to-html.ts b/hassio/src/ansi-to-html.ts index cbe66946bc..0601f5ba5a 100644 --- a/hassio/src/ansi-to-html.ts +++ b/hassio/src/ansi-to-html.ts @@ -112,7 +112,7 @@ export function parseTextToColoredPre(text) { /* eslint-disable no-cond-assign */ let match; - // tslint:disable-next-line + // eslint-disable-next-line while ((match = re.exec(text)) !== null) { const j = match!.index; addSpan(text.substring(i, j)); diff --git a/hassio/src/components/hassio-card-content.ts b/hassio/src/components/hassio-card-content.ts index 737c36edc3..a2174a77e9 100644 --- a/hassio/src/components/hassio-card-content.ts +++ b/hassio/src/components/hassio-card-content.ts @@ -1,37 +1,44 @@ -import { - LitElement, - TemplateResult, - html, - CSSResult, - css, - property, - customElement, -} from "lit-element"; import "@polymer/iron-icon/iron-icon"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../src/components/ha-relative-time"; import { HomeAssistant } from "../../../src/types"; @customElement("hassio-card-content") class HassioCardContent extends LitElement { @property() public hass!: HomeAssistant; + @property() public title!: string; + @property() public description?: string; - @property({ type: Boolean }) public available: boolean = true; - @property({ type: Boolean }) public showTopbar: boolean = false; + + @property({ type: Boolean }) public available = true; + + @property({ type: Boolean }) public showTopbar = false; + @property() public topbarClass?: string; + @property() public datetime?: string; + @property() public iconTitle?: string; + @property() public iconClass?: string; + @property() public icon = "hass:help-circle"; + @property() public iconImage?: string; protected render(): TemplateResult { return html` ${this.showTopbar - ? html` -
- ` + ? html`
` : ""} ${this.iconImage ? html` diff --git a/hassio/src/components/hassio-filter-addons.ts b/hassio/src/components/hassio-filter-addons.ts index 25eb72e5c3..270c8e7612 100644 --- a/hassio/src/components/hassio-filter-addons.ts +++ b/hassio/src/components/hassio-filter-addons.ts @@ -1,5 +1,5 @@ -import { HassioAddonInfo } from "../../../src/data/hassio/addon"; import * as Fuse from "fuse.js"; +import { HassioAddonInfo } from "../../../src/data/hassio/addon"; export function filterAndSort(addons: HassioAddonInfo[], filter: string) { const options: Fuse.FuseOptions = { diff --git a/hassio/src/components/hassio-search-input.ts b/hassio/src/components/hassio-search-input.ts index bfd55eff0e..ba4ac7c229 100644 --- a/hassio/src/components/hassio-search-input.ts +++ b/hassio/src/components/hassio-search-input.ts @@ -1,4 +1,7 @@ -import { TemplateResult, html } from "lit-html"; +import "@material/mwc-button"; +import "@polymer/iron-icon/iron-icon"; +import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-input/paper-input"; import { css, CSSResult, @@ -6,11 +9,8 @@ import { LitElement, property, } from "lit-element"; +import { html, TemplateResult } from "lit-html"; import { fireEvent } from "../../../src/common/dom/fire_event"; -import "@polymer/iron-icon/iron-icon"; -import "@polymer/paper-input/paper-input"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "@material/mwc-button"; @customElement("hassio-search-input") class HassioSearchInput extends LitElement { @@ -30,16 +30,16 @@ class HassioSearchInput extends LitElement { class="prefix" > ${this.filter && - html` - - `} + html` + + `} `; diff --git a/hassio/src/dashboard/hassio-addons.ts b/hassio/src/dashboard/hassio-addons.ts index c59edcfc5e..1265512a9e 100644 --- a/hassio/src/dashboard/hassio-addons.ts +++ b/hassio/src/dashboard/hassio-addons.ts @@ -8,18 +8,18 @@ import { property, TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../src/types"; -import { HassioAddonInfo } from "../../../src/data/hassio/addon"; -import { navigate } from "../../../src/common/navigate"; -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; -import "../components/hassio-card-content"; import { atLeastVersion } from "../../../src/common/config/version"; +import { navigate } from "../../../src/common/navigate"; +import { HassioAddonInfo } from "../../../src/data/hassio/addon"; +import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; +import "../components/hassio-card-content"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-addons") class HassioAddons extends LitElement { @property() public hass!: HomeAssistant; + @property() public addons?: HassioAddonInfo[]; protected render(): TemplateResult { diff --git a/hassio/src/dashboard/hassio-dashboard.ts b/hassio/src/dashboard/hassio-dashboard.ts index a1db26663a..c847e3bc26 100644 --- a/hassio/src/dashboard/hassio-dashboard.ts +++ b/hassio/src/dashboard/hassio-dashboard.ts @@ -1,27 +1,30 @@ import { - LitElement, - TemplateResult, - html, - CSSResult, css, - property, + CSSResult, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import "./hassio-addons"; -import "./hassio-update"; -import { haStyle } from "../../../src/resources/styles"; -import { HomeAssistant } from "../../../src/types"; import { HassioHassOSInfo } from "../../../src/data/hassio/host"; import { - HassioSupervisorInfo, HassioHomeAssistantInfo, + HassioSupervisorInfo, } from "../../../src/data/hassio/supervisor"; +import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; +import "./hassio-addons"; +import "./hassio-update"; @customElement("hassio-dashboard") class HassioDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public supervisorInfo!: HassioSupervisorInfo; + @property() public hassInfo!: HassioHomeAssistantInfo; + @property() public hassOsInfo!: HassioHassOSInfo; protected render(): TemplateResult { diff --git a/hassio/src/dashboard/hassio-update.ts b/hassio/src/dashboard/hassio-update.ts index d04ed1854a..926e4019e0 100644 --- a/hassio/src/dashboard/hassio-update.ts +++ b/hassio/src/dashboard/hassio-update.ts @@ -1,35 +1,36 @@ -import { - LitElement, - TemplateResult, - html, - CSSResult, - css, - property, - customElement, -} from "lit-element"; +import "@material/mwc-button"; import "@polymer/iron-icon/iron-icon"; - -import { HomeAssistant } from "../../../src/types"; +import "@polymer/paper-card/paper-card"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import "../../../src/components/buttons/ha-call-api-button"; import { HassioHassOSInfo } from "../../../src/data/hassio/host"; import { HassioHomeAssistantInfo, HassioSupervisorInfo, } from "../../../src/data/hassio/supervisor"; - -import { hassioStyle } from "../resources/hassio-style"; import { haStyle } from "../../../src/resources/styles"; - -import "@material/mwc-button"; -import "@polymer/paper-card/paper-card"; -import "../../../src/components/buttons/ha-call-api-button"; +import { HomeAssistant } from "../../../src/types"; import "../components/hassio-card-content"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-update") export class HassioUpdate extends LitElement { @property() public hass!: HomeAssistant; + @property() public hassInfo: HassioHomeAssistantInfo; + @property() public hassOsInfo?: HassioHassOSInfo; + @property() public supervisorInfo: HassioSupervisorInfo; + @property() private _error?: string; protected render(): TemplateResult { @@ -55,9 +56,7 @@ export class HassioUpdate extends LitElement { return html`
${this._error - ? html` -
Error: ${this._error}
- ` + ? html`
Error: ${this._error}
` : ""}

${updatesAvailable > 1 @@ -113,7 +112,7 @@ export class HassioUpdate extends LitElement { ${icon ? html`
- +
` : ""} @@ -138,7 +137,7 @@ export class HassioUpdate extends LitElement { `; } - private _apiCalled(ev) { + private _apiCalled(ev): void { if (ev.detail.success) { this._error = ""; return; @@ -146,9 +145,11 @@ export class HassioUpdate extends LitElement { const response = ev.detail.response; - typeof response.body === "object" - ? (this._error = response.body.message || "Unknown error") - : (this._error = response.body); + if (typeof response.body === "object") { + this._error = response.body.message || "Unknown error"; + } else { + this._error = response.body; + } } static get styles(): CSSResult[] { diff --git a/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts b/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts index a8af334830..c930ee9a44 100644 --- a/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts +++ b/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts @@ -1,7 +1,7 @@ import "@polymer/app-layout/app-toolbar/app-toolbar"; +import { PaperDialogElement } from "@polymer/paper-dialog"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-icon-button/paper-icon-button"; -import { PaperDialogElement } from "@polymer/paper-dialog"; import { css, CSSResult, @@ -9,21 +9,21 @@ import { html, LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; - -import { hassioStyle } from "../../resources/hassio-style"; -import { haStyleDialog } from "../../../../src/resources/styles"; -import { HassioMarkdownDialogParams } from "./show-dialog-hassio-markdown"; - import "../../../../src/components/dialog/ha-paper-dialog"; import "../../../../src/components/ha-markdown"; +import { haStyleDialog } from "../../../../src/resources/styles"; +import { hassioStyle } from "../../resources/hassio-style"; +import { HassioMarkdownDialogParams } from "./show-dialog-hassio-markdown"; @customElement("dialog-hassio-markdown") class HassioMarkdownDialog extends LitElement { @property() public title!: string; + @property() public content!: string; + @query("#dialog") private _dialog!: PaperDialogElement; public showDialog(params: HassioMarkdownDialogParams) { diff --git a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts index 56baec7e8c..87f22529a2 100755 --- a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts +++ b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts @@ -1,11 +1,11 @@ import "@material/mwc-button"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/iron-icon/iron-icon"; +import { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; +import { PaperDialogElement } from "@polymer/paper-dialog"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; -import { PaperDialogElement } from "@polymer/paper-dialog"; -import { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; import { css, CSSResult, @@ -13,21 +13,19 @@ import { html, LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; - +import "../../../../src/components/dialog/ha-paper-dialog"; +import { getSignedPath } from "../../../../src/data/auth"; import { fetchHassioSnapshotInfo, HassioSnapshotDetail, } from "../../../../src/data/hassio/snapshot"; -import { getSignedPath } from "../../../../src/data/auth"; -import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot"; +import { PolymerChangedEvent } from "../../../../src/polymer-types"; import { haStyleDialog } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; -import { PolymerChangedEvent } from "../../../../src/polymer-types"; - -import "../../../../src/components/dialog/ha-paper-dialog"; +import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot"; const _computeFolders = (folders) => { const list: Array<{ slug: string; name: string; checked: boolean }> = []; @@ -75,13 +73,21 @@ interface FolderItem { @customElement("dialog-hassio-snapshot") class HassioSnapshotDialog extends LitElement { @property() public hass!: HomeAssistant; + @property() private _error?: string; + @property() private snapshot?: HassioSnapshotDetail; + @property() private _folders!: FolderItem[]; + @property() private _addons!: AddonItem[]; + @property() private _dialogParams?: HassioSnapshotDialogParams; + @property() private _snapshotPassword!: string; + @property() private _restoreHass: boolean | null | undefined = true; + @query("#dialog") private _dialog!: PaperDialogElement; public async showDialog(params: HassioSnapshotDialogParams) { @@ -129,8 +135,9 @@ class HassioSnapshotDialog extends LitElement {
Home Assistant:
Home Assistant ${this.snapshot.homeassistant} @@ -187,11 +194,7 @@ class HassioSnapshotDialog extends LitElement { > ` : ""} - ${this._error - ? html` -

Error: ${this._error}

- ` - : ""} + ${this._error ? html`

Error: ${this._error}

` : ""}
Actions:
    diff --git a/hassio/src/hassio-main.ts b/hassio/src/hassio-main.ts index ff5def6b41..029b419f5d 100644 --- a/hassio/src/hassio-main.ts +++ b/hassio/src/hassio-main.ts @@ -1,39 +1,38 @@ -import { customElement, PropertyValues, property } from "lit-element"; -import { PolymerElement } from "@polymer/polymer"; import "@polymer/paper-icon-button"; - -import "../../src/resources/ha-style"; +import { PolymerElement } from "@polymer/polymer"; +import { customElement, property, PropertyValues } from "lit-element"; import { applyThemesOnElement } from "../../src/common/dom/apply_themes_on_element"; import { fireEvent } from "../../src/common/dom/fire_event"; +import { navigate } from "../../src/common/navigate"; +import { fetchHassioAddonInfo } from "../../src/data/hassio/addon"; +import { + fetchHassioHassOsInfo, + fetchHassioHostInfo, + HassioHassOSInfo, + HassioHostInfo, +} from "../../src/data/hassio/host"; +import { + createHassioSession, + fetchHassioHomeAssistantInfo, + fetchHassioSupervisorInfo, + HassioHomeAssistantInfo, + HassioPanelInfo, + HassioSupervisorInfo, +} from "../../src/data/hassio/supervisor"; +import { + AlertDialogParams, + showAlertDialog, +} from "../../src/dialogs/generic/show-dialog-box"; +import { makeDialogManager } from "../../src/dialogs/make-dialog-manager"; import { HassRouterPage, RouterOptions, } from "../../src/layouts/hass-router-page"; -import { HomeAssistant } from "../../src/types"; -import { - fetchHassioSupervisorInfo, - fetchHassioHomeAssistantInfo, - HassioSupervisorInfo, - HassioHomeAssistantInfo, - createHassioSession, - HassioPanelInfo, -} from "../../src/data/hassio/supervisor"; -import { - fetchHassioHostInfo, - fetchHassioHassOsInfo, - HassioHostInfo, - HassioHassOSInfo, -} from "../../src/data/hassio/host"; -import { fetchHassioAddonInfo } from "../../src/data/hassio/addon"; -import { makeDialogManager } from "../../src/dialogs/make-dialog-manager"; import { ProvideHassLitMixin } from "../../src/mixins/provide-hass-lit-mixin"; +import "../../src/resources/ha-style"; +import { HomeAssistant } from "../../src/types"; // Don't codesplit it, that way the dashboard always loads fast. import "./hassio-pages-with-tabs"; -import { navigate } from "../../src/common/navigate"; -import { - showAlertDialog, - AlertDialogParams, -} from "../../src/dialogs/generic/show-dialog-box"; // The register callback of the IronA11yKeysBehavior inside paper-icon-button // is not called, causing _keyBindings to be uninitiliazed for paper-icon-button, @@ -44,7 +43,9 @@ customElements.get("paper-icon-button").prototype._keyBindings = {}; @customElement("hassio-main") class HassioMain extends ProvideHassLitMixin(HassRouterPage) { @property() public hass!: HomeAssistant; + @property() public panel!: HassioPanelInfo; + @property() public narrow!: boolean; protected routerOptions: RouterOptions = { @@ -76,9 +77,13 @@ class HassioMain extends ProvideHassLitMixin(HassRouterPage) { }, }, }; + @property() private _supervisorInfo: HassioSupervisorInfo; + @property() private _hostInfo: HassioHostInfo; + @property() private _hassOsInfo?: HassioHassOSInfo; + @property() private _hassInfo: HassioHomeAssistantInfo; protected firstUpdated(changedProps: PropertyValues) { diff --git a/hassio/src/hassio-pages-with-tabs.ts b/hassio/src/hassio-pages-with-tabs.ts index becdccdf49..ba646f42a1 100644 --- a/hassio/src/hassio-pages-with-tabs.ts +++ b/hassio/src/hassio-pages-with-tabs.ts @@ -1,44 +1,47 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - customElement, - property, -} from "lit-element"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tabs"; - -import "../../src/components/ha-menu-button"; -import "../../src/resources/ha-style"; -import "./hassio-tabs-router"; - +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import scrollToTarget from "../../src/common/dom/scroll-to-target"; - +import { navigate } from "../../src/common/navigate"; +import "../../src/components/ha-menu-button"; +import { HassioHassOSInfo, HassioHostInfo } from "../../src/data/hassio/host"; +import { + HassioHomeAssistantInfo, + HassioSupervisorInfo, +} from "../../src/data/hassio/supervisor"; +import "../../src/resources/ha-style"; import { haStyle } from "../../src/resources/styles"; import { HomeAssistant, Route } from "../../src/types"; -import { navigate } from "../../src/common/navigate"; -import { HassioHostInfo, HassioHassOSInfo } from "../../src/data/hassio/host"; -import { - HassioSupervisorInfo, - HassioHomeAssistantInfo, -} from "../../src/data/hassio/supervisor"; +import "./hassio-tabs-router"; const HAS_REFRESH_BUTTON = ["store", "snapshots"]; @customElement("hassio-pages-with-tabs") class HassioPagesWithTabs extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public supervisorInfo!: HassioSupervisorInfo; + @property() public hostInfo!: HassioHostInfo; + @property() public hassInfo!: HassioHomeAssistantInfo; + @property() public hassOsInfo!: HassioHassOSInfo; protected render(): TemplateResult { diff --git a/hassio/src/hassio-tabs-router.ts b/hassio/src/hassio-tabs-router.ts index a77d821bc8..dd4a66c270 100644 --- a/hassio/src/hassio-tabs-router.ts +++ b/hassio/src/hassio-tabs-router.ts @@ -1,28 +1,32 @@ +import { PolymerElement } from "@polymer/polymer"; +import { customElement, property } from "lit-element"; +import { HassioHassOSInfo, HassioHostInfo } from "../../src/data/hassio/host"; +import { + HassioHomeAssistantInfo, + HassioSupervisorInfo, +} from "../../src/data/hassio/supervisor"; import { HassRouterPage, RouterOptions, } from "../../src/layouts/hass-router-page"; -import { customElement, property } from "lit-element"; -import { PolymerElement } from "@polymer/polymer"; import { HomeAssistant } from "../../src/types"; +import "./addon-store/hassio-addon-store"; // Don't codesplit it, that way the dashboard always loads fast. import "./dashboard/hassio-dashboard"; // Don't codesplit the others, because it breaks the UI when pushed to a Pi import "./snapshots/hassio-snapshots"; -import "./addon-store/hassio-addon-store"; import "./system/hassio-system"; -import { HassioHostInfo, HassioHassOSInfo } from "../../src/data/hassio/host"; -import { - HassioSupervisorInfo, - HassioHomeAssistantInfo, -} from "../../src/data/hassio/supervisor"; @customElement("hassio-tabs-router") class HassioTabsRouter extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public supervisorInfo: HassioSupervisorInfo; + @property() public hostInfo: HassioHostInfo; + @property() public hassInfo: HassioHomeAssistantInfo; + @property() public hassOsInfo!: HassioHassOSInfo; protected routerOptions: RouterOptions = { diff --git a/hassio/src/ingress-view/hassio-ingress-view.ts b/hassio/src/ingress-view/hassio-ingress-view.ts index a9ccf349f1..2dffe09ca3 100644 --- a/hassio/src/ingress-view/hassio-ingress-view.ts +++ b/hassio/src/ingress-view/hassio-ingress-view.ts @@ -1,33 +1,33 @@ import { - LitElement, - customElement, - property, - TemplateResult, - html, - PropertyValues, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; -import { HomeAssistant, Route } from "../../../src/types"; -import { createHassioSession } from "../../../src/data/hassio/supervisor"; import { - HassioAddonDetails, fetchHassioAddonInfo, + HassioAddonDetails, } from "../../../src/data/hassio/addon"; +import { createHassioSession } from "../../../src/data/hassio/supervisor"; import "../../../src/layouts/hass-loading-screen"; import "../../../src/layouts/hass-subpage"; +import { HomeAssistant, Route } from "../../../src/types"; @customElement("hassio-ingress-view") class HassioIngressView extends LitElement { @property() public hass!: HomeAssistant; + @property() public route!: Route; + @property() private _addon?: HassioAddonDetails; protected render(): TemplateResult { if (!this._addon) { - return html` - - `; + return html` `; } return html` @@ -71,7 +71,7 @@ class HassioIngressView extends LitElement { this._addon = addon; } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); alert(err.message || "Unknown error starting ingress."); history.back(); diff --git a/hassio/src/snapshots/hassio-snapshots.ts b/hassio/src/snapshots/hassio-snapshots.ts index 5a96d2cd67..529f9abb8d 100644 --- a/hassio/src/snapshots/hassio-snapshots.ts +++ b/hassio/src/snapshots/hassio-snapshots.ts @@ -1,46 +1,39 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - property, - PropertyValues, - customElement, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-card/paper-card"; import "@polymer/paper-checkbox/paper-checkbox"; +import type { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; - -import "../components/hassio-card-content"; -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; - -import { showHassioSnapshotDialog } from "../dialogs/snapshot/show-dialog-hassio-snapshot"; -import { HomeAssistant } from "../../../src/types"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../src/common/dom/fire_event"; import { - HassioSnapshot, - fetchHassioSnapshots, - reloadHassioSnapshots, - HassioFullSnapshotCreateParams, - HassioPartialSnapshotCreateParams, createHassioFullSnapshot, createHassioPartialSnapshot, + fetchHassioSnapshots, + HassioFullSnapshotCreateParams, + HassioPartialSnapshotCreateParams, + HassioSnapshot, + reloadHassioSnapshots, } from "../../../src/data/hassio/snapshot"; import { HassioSupervisorInfo } from "../../../src/data/hassio/supervisor"; import { PolymerChangedEvent } from "../../../src/polymer-types"; -import { fireEvent } from "../../../src/common/dom/fire_event"; - -// Not duplicate, used for typing -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; +import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; +import "../components/hassio-card-content"; +import { showHassioSnapshotDialog } from "../dialogs/snapshot/show-dialog-hassio-snapshot"; +import { hassioStyle } from "../resources/hassio-style"; interface CheckboxItem { slug: string; @@ -51,13 +44,21 @@ interface CheckboxItem { @customElement("hassio-snapshots") class HassioSnapshots extends LitElement { @property() public hass!: HomeAssistant; + @property() public supervisorInfo!: HassioSupervisorInfo; + @property() private _snapshotName = ""; + @property() private _snapshotPassword = ""; + @property() private _snapshotHasPassword = false; + @property() private _snapshotType: HassioSnapshot["type"] = "full"; + @property() private _snapshots?: HassioSnapshot[] = []; + @property() private _addonList: CheckboxItem[] = []; + @property() private _folderList: CheckboxItem[] = [ { slug: "homeassistant", @@ -68,7 +69,9 @@ class HassioSnapshots extends LitElement { { slug: "share", name: "Share", checked: true }, { slug: "addons/local", name: "Local add-ons", checked: true }, ]; + @property() private _creatingSnapshot = false; + @property() private _error = ""; public async refreshData() { @@ -157,9 +160,7 @@ class HassioSnapshots extends LitElement { ` : undefined} ${this._error !== "" - ? html` -

    ${this._error}

    - ` + ? html`

    ${this._error}

    ` : undefined}

diff --git a/hassio/src/system/hassio-host-info.ts b/hassio/src/system/hassio-host-info.ts index 3c50ece8af..11d0ae1a6c 100644 --- a/hassio/src/system/hassio-host-info.ts +++ b/hassio/src/system/hassio-host-info.ts @@ -9,24 +9,25 @@ import { property, TemplateResult, } from "lit-element"; - -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; -import { - HassioHostInfo as HassioHostInfoType, - HassioHassOSInfo, -} from "../../../src/data/hassio/host"; +import "../../../src/components/buttons/ha-call-api-button"; import { fetchHassioHardwareInfo } from "../../../src/data/hassio/hardware"; +import { + HassioHassOSInfo, + HassioHostInfo as HassioHostInfoType, +} from "../../../src/data/hassio/host"; +import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; import { showHassioMarkdownDialog } from "../dialogs/markdown/show-dialog-hassio-markdown"; - -import "../../../src/components/buttons/ha-call-api-button"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-host-info") class HassioHostInfo extends LitElement { @property() public hass!: HomeAssistant; + @property() public hostInfo!: HassioHostInfoType; + @property() public hassOsInfo!: HassioHassOSInfo; + @property() private _errors?: string; public render(): TemplateResult | void { @@ -69,9 +70,7 @@ class HassioHostInfo extends LitElement { ` : ""} ${this._errors - ? html` -
Error: ${this._errors}
- ` + ? html`
Error: ${this._errors}
` : ""}
diff --git a/hassio/src/system/hassio-supervisor-info.ts b/hassio/src/system/hassio-supervisor-info.ts index 75892b731b..8b5ac797be 100644 --- a/hassio/src/system/hassio-supervisor-info.ts +++ b/hassio/src/system/hassio-supervisor-info.ts @@ -9,23 +9,23 @@ import { property, TemplateResult, } from "lit-element"; - import { fireEvent } from "../../../src/common/dom/fire_event"; +import "../../../src/components/buttons/ha-call-api-button"; import { HassioSupervisorInfo as HassioSupervisorInfoType, setSupervisorOption, SupervisorOptions, } from "../../../src/data/hassio/supervisor"; +import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; - -import "../../../src/components/buttons/ha-call-api-button"; @customElement("hassio-supervisor-info") class HassioSupervisorInfo extends LitElement { @property() public hass!: HomeAssistant; + @property() public supervisorInfo!: HassioSupervisorInfoType; + @property() private _errors?: string; public render(): TemplateResult | void { @@ -54,9 +54,7 @@ class HassioSupervisorInfo extends LitElement {
${this._errors - ? html` -
Error: ${this._errors}
- ` + ? html`
Error: ${this._errors}
` : ""}
diff --git a/hassio/src/system/hassio-supervisor-log.ts b/hassio/src/system/hassio-supervisor-log.ts index a111969bb7..654775f94d 100644 --- a/hassio/src/system/hassio-supervisor-log.ts +++ b/hassio/src/system/hassio-supervisor-log.ts @@ -7,20 +7,21 @@ import { html, LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; - -import { ANSI_HTML_STYLE, parseTextToColoredPre } from "../ansi-to-html"; -import { hassioStyle } from "../resources/hassio-style"; +import { fetchSupervisorLogs } from "../../../src/data/hassio/supervisor"; import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; -import { fetchSupervisorLogs } from "../../../src/data/hassio/supervisor"; +import { ANSI_HTML_STYLE, parseTextToColoredPre } from "../ansi-to-html"; +import { hassioStyle } from "../resources/hassio-style"; @customElement("hassio-supervisor-log") class HassioSupervisorLog extends LitElement { @property() public hass!: HomeAssistant; + @property() private _error?: string; + @query("#content") private _logContent!: HTMLDivElement; public async connectedCallback(): Promise { @@ -31,11 +32,7 @@ class HassioSupervisorLog extends LitElement { public render(): TemplateResult | void { return html` - ${this._error - ? html` -
${this._error}
- ` - : ""} + ${this._error ? html`
${this._error}
` : ""}
Refresh @@ -73,8 +70,9 @@ class HassioSupervisorLog extends LitElement { } this._logContent.appendChild(parseTextToColoredPre(content)); } catch (err) { - this._error = `Failed to get supervisor logs, ${err.body?.message || - err}`; + this._error = `Failed to get supervisor logs, ${ + err.body?.message || err + }`; } } diff --git a/hassio/src/system/hassio-system.ts b/hassio/src/system/hassio-system.ts index e1ea7eb668..ea60843d8c 100644 --- a/hassio/src/system/hassio-system.ts +++ b/hassio/src/system/hassio-system.ts @@ -8,16 +8,14 @@ import { property, TemplateResult, } from "lit-element"; - -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; import { - HassioHostInfo, HassioHassOSInfo, + HassioHostInfo, } from "../../../src/data/hassio/host"; import { HassioSupervisorInfo } from "../../../src/data/hassio/supervisor"; +import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; - +import { hassioStyle } from "../resources/hassio-style"; import "./hassio-host-info"; import "./hassio-supervisor-info"; import "./hassio-supervisor-log"; @@ -25,8 +23,11 @@ import "./hassio-supervisor-log"; @customElement("hassio-system") class HassioSystem extends LitElement { @property() public hass!: HomeAssistant; + @property() public supervisorInfo!: HassioSupervisorInfo; + @property() public hostInfo!: HassioHostInfo; + @property() public hassOsInfo!: HassioHassOSInfo; public render(): TemplateResult | void { diff --git a/package.json b/package.json index 54ad5befaf..b8ace09882 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,13 @@ "version": "1.0.0", "scripts": { "build": "script/build_frontend", - "lint": "eslint src hassio/src gallery/src && tslint 'src/**/*.ts' 'hassio/src/**/*.ts' 'gallery/src/**/*.ts' 'cast/src/**/*.ts' 'test-mocha/**/*.ts' && tsc", - "lint-hassio": "eslint hassio/src && tslint 'hassio/src/**/*.ts'", + "lint:eslint": "eslint '{**/src,src}/**/*.{js,ts,html}' --ignore-path .gitignore", + "format:eslint": "eslint '{**/src,src}/**/*.{js,ts,html}' --fix --ignore-path .gitignore", + "lint:prettier": "prettier '{**/src,src}/**/*.{js,ts,json,css,md}' --check", + "format:prettier": "prettier '{**/src,src}/**/*.{js,ts,json,css,md}' --write", + "lint:types": "tsc", + "lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types", + "format": "npm run format:eslint && npm run format:prettier", "mocha": "node_modules/.bin/ts-mocha -p test-mocha/tsconfig.test.json --opts test-mocha/mocha.opts", "test": "npm run lint && npm run mocha", "docker_build": "sh ./script/docker_run.sh build $npm_package_version", @@ -110,17 +115,17 @@ "xss": "^1.0.6" }, "devDependencies": { - "@babel/core": "^7.8.4", + "@babel/core": "^7.9.0", "@babel/plugin-external-helpers": "^7.8.3", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-decorators": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.8.3", - "@babel/preset-env": "^7.8.4", - "@babel/preset-typescript": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/preset-env": "^7.9.5", + "@babel/preset-typescript": "^7.9.0", "@types/chai": "^4.1.7", "@types/chromecast-caf-receiver": "^3.0.12", "@types/chromecast-caf-sender": "^1.0.1", @@ -132,17 +137,22 @@ "@types/memoize-one": "4.1.0", "@types/mocha": "^5.2.6", "@types/webspeechapi": "^0.0.29", - "babel-loader": "^8.0.5", + "@typescript-eslint/eslint-plugin": "^2.28.0", + "@typescript-eslint/parser": "^2.28.0", + "babel-loader": "^8.1.0", "chai": "^4.2.0", "copy-webpack-plugin": "^5.0.2", "del": "^4.0.0", - "eslint": "^6.3.0", - "eslint-config-airbnb-base": "^14.0.0", - "eslint-config-prettier": "^6.2.0", - "eslint-import-resolver-webpack": "^0.11.1", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.14.3", + "eslint": "^6.8.0", + "eslint-config-airbnb-typescript": "^7.2.1", + "eslint-config-prettier": "^6.10.1", + "eslint-import-resolver-webpack": "^0.12.1", + "eslint-plugin-disable": "^2.0.1", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-lit": "^1.2.0", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-wc": "^1.2.0", "fs-extra": "^7.0.1", "gulp": "^4.0.0", "gulp-foreach": "^0.1.0", @@ -160,19 +170,16 @@ "map-stream": "^0.0.7", "merge-stream": "^1.0.1", "mocha": "^6.0.2", + "npm": "^6.14.4", "parse5": "^5.1.0", - "prettier": "^1.19.1", + "prettier": "^2.0.4", "raw-loader": "^2.0.0", "reify": "^0.18.1", "require-dir": "^1.2.0", "sinon": "^7.3.1", "terser-webpack-plugin": "^1.2.3", "ts-mocha": "^6.0.0", - "tslint": "^5.20.1", - "tslint-config-prettier": "^1.18.0", - "tslint-eslint-rules": "^5.4.0", - "tslint-plugin-prettier": "^2.0.1", - "typescript": "^3.7.2", + "typescript": "^3.8.3", "vinyl-buffer": "^1.0.1", "vinyl-source-stream": "^2.0.0", "web-component-tester": "^6.9.2", diff --git a/src/auth/ha-auth-flow.ts b/src/auth/ha-auth-flow.ts index c13df3d769..e6cbfc09a3 100644 --- a/src/auth/ha-auth-flow.ts +++ b/src/auth/ha-auth-flow.ts @@ -1,31 +1,39 @@ +import "@material/mwc-button"; import { - LitElement, + css, + CSSResult, html, + LitElement, property, PropertyValues, - CSSResult, - css, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; import "../components/ha-form/ha-form"; import "../components/ha-markdown"; -import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; import { AuthProvider } from "../data/auth"; import { DataEntryFlowStep, DataEntryFlowStepForm, } from "../data/data_entry_flow"; +import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; type State = "loading" | "error" | "step"; class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { @property() public authProvider?: AuthProvider; + @property() public clientId?: string; + @property() public redirectUri?: string; + @property() public oauth2State?: string; + @property() private _state: State = "loading"; + @property() private _stepData: any = {}; + @property() private _step?: DataEntryFlowStep; + @property() private _errorMessage?: string; protected render() { @@ -40,7 +48,7 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { super.firstUpdated(changedProps); if (this.clientId == null || this.redirectUri == null) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error( "clientId and redirectUri must not be null", this.clientId, @@ -58,14 +66,14 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { }); } - protected updated(changedProps: PropertyValues) { + protected updated(changedProps: PropertyValues): void { super.updated(changedProps); if (changedProps.has("authProvider")) { this._providerChanged(this.authProvider); } } - private _renderForm() { + private _renderForm(): TemplateResult { switch (this._state) { case "step": if (this._step == null) { @@ -80,17 +88,15 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) {
`; case "error": - return html` -
Error: ${this._errorMessage}
- `; + return html`
Error: ${this._errorMessage}
`; case "loading": - return html` - ${this.localize("ui.panel.page-authorize.form.working")} - `; + return html` ${this.localize("ui.panel.page-authorize.form.working")} `; + default: + return html``; } } - private _renderStep(step: DataEntryFlowStep) { + private _renderStep(step: DataEntryFlowStep): TemplateResult { switch (step.type) { case "abort": return html` @@ -131,13 +137,13 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { method: "DELETE", credentials: "same-origin", }).catch((err) => { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error("Error delete obsoleted auth flow", err); }); } if (newProvider == null) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error("No auth provider"); this._state = "error"; this._errorMessage = this._unknownError(); @@ -170,7 +176,7 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { this._errorMessage = data.message; } } catch (err) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error("Error starting auth flow", err); this._state = "error"; this._errorMessage = this._unknownError(); @@ -287,7 +293,7 @@ class HaAuthFlow extends litLocalizeLiteMixin(LitElement) { } await this._updateStep(newStep); } catch (err) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error("Error submitting step", err); this._state = "error"; this._errorMessage = this._unknownError(); diff --git a/src/auth/ha-authorize.ts b/src/auth/ha-authorize.ts index 48567ccd3e..f811a21186 100644 --- a/src/auth/ha-authorize.ts +++ b/src/auth/ha-authorize.ts @@ -1,19 +1,17 @@ -import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; import { - LitElement, - html, - PropertyValues, - CSSResult, css, + CSSResult, + html, + LitElement, property, + PropertyValues, } from "lit-element"; -import "./ha-auth-flow"; import { AuthProvider, fetchAuthProviders } from "../data/auth"; +import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; import { registerServiceWorker } from "../util/register-service-worker"; +import "./ha-auth-flow"; -import( - /* webpackChunkName: "pick-auth-provider" */ "../auth/ha-pick-auth-provider" -); +import(/* webpackChunkName: "pick-auth-provider" */ "./ha-pick-auth-provider"); interface QueryParams { client_id?: string; @@ -23,9 +21,13 @@ interface QueryParams { class HaAuthorize extends litLocalizeLiteMixin(LitElement) { @property() public clientId?: string; + @property() public redirectUri?: string; + @property() public oauth2State?: string; + @property() private _authProvider?: AuthProvider; + @property() private _authProviders?: AuthProvider[]; constructor() { @@ -155,7 +157,7 @@ class HaAuthorize extends litLocalizeLiteMixin(LitElement) { this._authProviders = authProviders; this._authProvider = authProviders[0]; } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error("Error loading auth providers", err); } } diff --git a/src/auth/ha-pick-auth-provider.ts b/src/auth/ha-pick-auth-provider.ts index 942fb5b4cc..63e213e6d1 100644 --- a/src/auth/ha-pick-auth-provider.ts +++ b/src/auth/ha-pick-auth-provider.ts @@ -1,10 +1,10 @@ -import { LitElement, html, property } from "lit-element"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; -import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; +import { html, LitElement, property } from "lit-element"; import { fireEvent } from "../common/dom/fire_event"; import "../components/ha-icon-next"; import { AuthProvider } from "../data/auth"; +import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; declare global { interface HASSDomEvents { diff --git a/src/cards/ha-history_graph-card.js b/src/cards/ha-history_graph-card.js index c0f6e6d74f..33e2472d82 100644 --- a/src/cards/ha-history_graph-card.js +++ b/src/cards/ha-history_graph-card.js @@ -1,11 +1,10 @@ import "@polymer/paper-card/paper-card"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { computeStateName } from "../common/entity/compute_state_name"; import "../components/state-history-charts"; import "../data/ha-state-history-data"; - -import { computeStateName } from "../common/entity/compute_state_name"; import { EventsMixin } from "../mixins/events-mixin"; /* diff --git a/src/cast/cast_manager.ts b/src/cast/cast_manager.ts index 6c9ea0a8e1..2943852a34 100644 --- a/src/cast/cast_manager.ts +++ b/src/cast/cast_manager.ts @@ -1,17 +1,17 @@ +/* eslint-disable no-undef, no-console */ +import { + CastStateEventData, + SessionStateEventData, +} from "chromecast-caf-receiver/cast.framework"; +import { Auth } from "home-assistant-js-websocket"; import { castApiAvailable } from "./cast_framework"; -import { CAST_APP_ID, CAST_NS, CAST_DEV } from "./const"; +import { CAST_APP_ID, CAST_DEV, CAST_NS } from "./const"; import { CAST_DEV_HASS_URL } from "./dev_const"; import { castSendAuth, HassMessage as ReceiverMessage, } from "./receiver_messages"; -import { - SessionStateEventData, - CastStateEventData, - // tslint:disable-next-line: no-implicit-dependencies -} from "chromecast-caf-receiver/cast.framework"; -import { SenderMessage, ReceiverStatusMessage } from "./sender_messages"; -import { Auth } from "home-assistant-js-websocket"; +import { ReceiverStatusMessage, SenderMessage } from "./sender_messages"; let managerProm: Promise | undefined; @@ -29,14 +29,14 @@ a user presses the cast button we send auth if not connected yet, then send command as usual. */ -/* tslint:disable:no-console */ - type CastEvent = "connection-changed" | "state-changed"; export class CastManager { public auth?: Auth; + // If the cast connection is connected to our Hass. public status?: ReceiverStatusMessage; + private _eventListeners: { [event: string]: CastEventListener[] } = {}; constructor(auth?: Auth) { diff --git a/src/cast/receiver_messages.ts b/src/cast/receiver_messages.ts index 50757ffbde..460054135d 100644 --- a/src/cast/receiver_messages.ts +++ b/src/cast/receiver_messages.ts @@ -2,10 +2,9 @@ import { Auth } from "home-assistant-js-websocket"; import { CastManager } from "./cast_manager"; - -import { BaseCastMessage } from "./types"; import { CAST_DEV } from "./const"; import { CAST_DEV_HASS_URL } from "./dev_const"; +import { BaseCastMessage } from "./types"; export interface GetStatusMessage extends BaseCastMessage { type: "get_status"; @@ -60,7 +59,7 @@ export const castSendShowDemo = (cast: CastManager) => export const ensureConnectedCastSession = (cast: CastManager, auth: Auth) => { if (cast.castConnectedToOurHass) { - return; + return undefined; } return new Promise((resolve) => { diff --git a/src/common/dom/apply_themes_on_element.ts b/src/common/dom/apply_themes_on_element.ts index b8a275b35d..44f042beac 100644 --- a/src/common/dom/apply_themes_on_element.ts +++ b/src/common/dom/apply_themes_on_element.ts @@ -62,7 +62,7 @@ const processTheme = ( themes: HomeAssistant["themes"] ): ProcessedTheme | undefined => { if (!themes.themes[themeName]) { - return; + return undefined; } const theme: Theme = { ...derivedStyles, diff --git a/src/common/dom/dynamic-element-directive.ts b/src/common/dom/dynamic-element-directive.ts index a7b74ce1cd..8f05f437ef 100644 --- a/src/common/dom/dynamic-element-directive.ts +++ b/src/common/dom/dynamic-element-directive.ts @@ -1,4 +1,4 @@ -import { directive, Part, NodePart } from "lit-html"; +import { directive, NodePart, Part } from "lit-html"; export const dynamicElement = directive( (tag: string, properties?: { [key: string]: any }) => (part: Part): void => { diff --git a/src/common/dom/fire_event.ts b/src/common/dom/fire_event.ts index 2e3a136225..a72bb67ea5 100644 --- a/src/common/dom/fire_event.ts +++ b/src/common/dom/fire_event.ts @@ -29,7 +29,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. declare global { - // tslint:disable-next-line + // eslint-disable-next-line interface HASSDomEvents {} } diff --git a/src/common/dom/is-navigation-click.ts b/src/common/dom/is-navigation-click.ts index 3ab515b778..05edb52e14 100644 --- a/src/common/dom/is-navigation-click.ts +++ b/src/common/dom/is-navigation-click.ts @@ -7,7 +7,7 @@ export const isNavigationClick = (e: MouseEvent) => { e.ctrlKey || e.shiftKey ) { - return; + return undefined; } const anchor = e @@ -21,23 +21,23 @@ export const isNavigationClick = (e: MouseEvent) => { anchor.hasAttribute("download") || anchor.getAttribute("rel") === "external" ) { - return; + return undefined; } let href = anchor.href; if (!href || href.indexOf("mailto:") !== -1) { - return; + return undefined; } const location = window.location; const origin = location.origin || location.protocol + "//" + location.host; if (href.indexOf(origin) !== 0) { - return; + return undefined; } href = href.substr(origin.length); if (href === "#") { - return; + return undefined; } e.preventDefault(); diff --git a/src/common/dom/setup-leaflet-map.ts b/src/common/dom/setup-leaflet-map.ts index f29b5e257b..9d95f5aee2 100644 --- a/src/common/dom/setup-leaflet-map.ts +++ b/src/common/dom/setup-leaflet-map.ts @@ -12,7 +12,7 @@ export const setupLeafletMap = async ( if (!mapElement.parentNode) { throw new Error("Cannot setup Leaflet map on disconnected element"); } - // tslint:disable-next-line + // eslint-disable-next-line const Leaflet = (await import( /* webpackChunkName: "leaflet" */ "leaflet" )) as LeafletModuleType; diff --git a/src/common/dom/speech-recognition.ts b/src/common/dom/speech-recognition.ts index 6b7850dfeb..a3003974fb 100644 --- a/src/common/dom/speech-recognition.ts +++ b/src/common/dom/speech-recognition.ts @@ -1,4 +1,4 @@ -/* tslint:disable */ +/* eslint-disable */ // @ts-ignore export const SpeechRecognition = // @ts-ignore @@ -11,4 +11,4 @@ export const SpeechGrammarList = export const SpeechRecognitionEvent = // @ts-ignore window.SpeechRecognitionEvent || window.webkitSpeechRecognitionEvent; -/* tslint:enable */ +/* eslint-enable */ diff --git a/src/common/entity/can_toggle_state.ts b/src/common/entity/can_toggle_state.ts index 8043833804..f0480b60ff 100644 --- a/src/common/entity/can_toggle_state.ts +++ b/src/common/entity/can_toggle_state.ts @@ -1,7 +1,7 @@ import { HassEntity } from "home-assistant-js-websocket"; +import { HomeAssistant } from "../../types"; import { canToggleDomain } from "./can_toggle_domain"; import { computeStateDomain } from "./compute_state_domain"; -import { HomeAssistant } from "../../types"; import { supportsFeature } from "./supports-feature"; export const canToggleState = (hass: HomeAssistant, stateObj: HassEntity) => { diff --git a/src/common/entity/compute_state_display.ts b/src/common/entity/compute_state_display.ts index c802c7c56a..2159a4e69a 100644 --- a/src/common/entity/compute_state_display.ts +++ b/src/common/entity/compute_state_display.ts @@ -1,9 +1,9 @@ import { HassEntity } from "home-assistant-js-websocket"; -import { computeStateDomain } from "./compute_state_domain"; -import { formatDateTime } from "../datetime/format_date_time"; import { formatDate } from "../datetime/format_date"; +import { formatDateTime } from "../datetime/format_date_time"; import { formatTime } from "../datetime/format_time"; import { LocalizeFunc } from "../translations/localize"; +import { computeStateDomain } from "./compute_state_domain"; export const computeStateDisplay = ( localize: LocalizeFunc, diff --git a/src/common/entity/domain_icon.ts b/src/common/entity/domain_icon.ts index e735df808c..cf0617923b 100644 --- a/src/common/entity/domain_icon.ts +++ b/src/common/entity/domain_icon.ts @@ -107,7 +107,7 @@ export const domainIcon = (domain: string, state?: string): string => { } default: - // tslint:disable-next-line + // eslint-disable-next-line console.warn( "Unable to find icon for domain " + domain + " (" + state + ")" ); diff --git a/src/common/entity/extract_views.ts b/src/common/entity/extract_views.ts index 34965369ba..b29dff5cae 100644 --- a/src/common/entity/extract_views.ts +++ b/src/common/entity/extract_views.ts @@ -1,6 +1,6 @@ import { HassEntities } from "home-assistant-js-websocket"; -import { DEFAULT_VIEW_ENTITY_ID } from "../const"; import { GroupEntity } from "../../types"; +import { DEFAULT_VIEW_ENTITY_ID } from "../const"; // Return an ordered array of available views export const extractViews = (entities: HassEntities): GroupEntity[] => { diff --git a/src/common/entity/get_view_entities.ts b/src/common/entity/get_view_entities.ts index ac7cb86e0b..9b2155244f 100644 --- a/src/common/entity/get_view_entities.ts +++ b/src/common/entity/get_view_entities.ts @@ -1,7 +1,7 @@ import { HassEntities } from "home-assistant-js-websocket"; +import { GroupEntity } from "../../types"; import { computeDomain } from "./compute_domain"; import { getGroupEntities } from "./get_group_entities"; -import { GroupEntity } from "../../types"; // Return an object containing all entities that the view will show // including embedded groups. diff --git a/src/common/entity/input_dateteime_icon.ts b/src/common/entity/input_dateteime_icon.ts index 870ecf80c3..75644ad72b 100644 --- a/src/common/entity/input_dateteime_icon.ts +++ b/src/common/entity/input_dateteime_icon.ts @@ -1,6 +1,6 @@ /** Return an icon representing an input datetime state. */ -import { domainIcon } from "./domain_icon"; import { HassEntity } from "home-assistant-js-websocket"; +import { domainIcon } from "./domain_icon"; export const inputDateTimeIcon = (state: HassEntity): string => { if (!state.attributes.has_date) { diff --git a/src/common/entity/split_by_groups.ts b/src/common/entity/split_by_groups.ts index 72bf70bb50..f96be797c0 100644 --- a/src/common/entity/split_by_groups.ts +++ b/src/common/entity/split_by_groups.ts @@ -1,6 +1,6 @@ -import { computeDomain } from "./compute_domain"; import { HassEntities } from "home-assistant-js-websocket"; import { GroupEntity } from "../../types"; +import { computeDomain } from "./compute_domain"; // Split a collection into a list of groups and a 'rest' list of ungrouped // entities. diff --git a/src/common/entity/state_card_type.ts b/src/common/entity/state_card_type.ts index f3b759be2c..a24994d5b3 100644 --- a/src/common/entity/state_card_type.ts +++ b/src/common/entity/state_card_type.ts @@ -1,8 +1,8 @@ import { HassEntity } from "home-assistant-js-websocket"; +import { HomeAssistant } from "../../types"; +import { DOMAINS_WITH_CARD } from "../const"; import { canToggleState } from "./can_toggle_state"; import { computeStateDomain } from "./compute_state_domain"; -import { DOMAINS_WITH_CARD } from "../const"; -import { HomeAssistant } from "../../types"; export const stateCardType = (hass: HomeAssistant, stateObj: HassEntity) => { if (stateObj.state === "unavailable") { diff --git a/src/common/entity/state_icon.ts b/src/common/entity/state_icon.ts index aeb399e6c4..7291f6863e 100644 --- a/src/common/entity/state_icon.ts +++ b/src/common/entity/state_icon.ts @@ -2,12 +2,11 @@ import { HassEntity } from "home-assistant-js-websocket"; import { DEFAULT_DOMAIN_ICON } from "../const"; import { binarySensorIcon } from "./binary_sensor_icon"; - import { computeDomain } from "./compute_domain"; -import { domainIcon } from "./domain_icon"; import { coverIcon } from "./cover_icon"; -import { sensorIcon } from "./sensor_icon"; +import { domainIcon } from "./domain_icon"; import { inputDateTimeIcon } from "./input_dateteime_icon"; +import { sensorIcon } from "./sensor_icon"; const domainIcons = { binary_sensor: binarySensorIcon, diff --git a/src/common/entity/state_more_info_type.ts b/src/common/entity/state_more_info_type.ts index 028f4ed12e..170b83052d 100644 --- a/src/common/entity/state_more_info_type.ts +++ b/src/common/entity/state_more_info_type.ts @@ -1,6 +1,6 @@ import { HassEntity } from "home-assistant-js-websocket"; -import { computeStateDomain } from "./compute_state_domain"; import { DOMAINS_HIDE_MORE_INFO, DOMAINS_WITH_MORE_INFO } from "../const"; +import { computeStateDomain } from "./compute_state_domain"; export const stateMoreInfoType = (stateObj: HassEntity) => { const domain = computeStateDomain(stateObj); diff --git a/src/common/entity/supports-feature.ts b/src/common/entity/supports-feature.ts index 9aa833c035..24f1b598cc 100644 --- a/src/common/entity/supports-feature.ts +++ b/src/common/entity/supports-feature.ts @@ -4,6 +4,6 @@ export const supportsFeature = ( stateObj: HassEntity, feature: number ): boolean => { - // tslint:disable-next-line:no-bitwise + // eslint-disable-next-line:no-bitwise return (stateObj.attributes.supported_features! & feature) !== 0; }; diff --git a/src/common/entity/valid_entity_id.ts b/src/common/entity/valid_entity_id.ts index df89f88e54..4e8e6770f2 100644 --- a/src/common/entity/valid_entity_id.ts +++ b/src/common/entity/valid_entity_id.ts @@ -6,7 +6,7 @@ export const isValidEntityId = (entityId: string) => export const createValidEntityId = (input: string) => input .toLowerCase() - .replace(/\s|\'/g, "_") // replace spaces and quotes with underscore + .replace(/\s|'/g, "_") // replace spaces and quotes with underscore .replace(/\W/g, "") // remove not allowed chars .replace(/_{2,}/g, "_") // replace multiple underscores with 1 .replace(/_$/, ""); // remove underscores at the end diff --git a/src/common/navigate.ts b/src/common/navigate.ts index 20d45623c9..657bbbf528 100644 --- a/src/common/navigate.ts +++ b/src/common/navigate.ts @@ -9,23 +9,17 @@ declare global { } } -export const navigate = ( - _node: any, - path: string, - replace: boolean = false -) => { +export const navigate = (_node: any, path: string, replace = false) => { if (__DEMO__) { if (replace) { history.replaceState(null, "", `${location.pathname}#${path}`); } else { window.location.hash = path; } + } else if (replace) { + history.replaceState(null, "", path); } else { - if (replace) { - history.replaceState(null, "", path); - } else { - history.pushState(null, "", path); - } + history.pushState(null, "", path); } fireEvent(window, "location-changed", { replace, diff --git a/src/common/search/search-input.ts b/src/common/search/search-input.ts index 2581141b0f..c04395a8f5 100644 --- a/src/common/search/search-input.ts +++ b/src/common/search/search-input.ts @@ -1,4 +1,5 @@ -import { TemplateResult, html } from "lit-html"; +import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-input/paper-input"; import { css, CSSResult, @@ -6,17 +7,18 @@ import { LitElement, property, } from "lit-element"; -import { fireEvent } from "../dom/fire_event"; -import "@polymer/paper-input/paper-input"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "../../components/ha-icon"; +import { html, TemplateResult } from "lit-html"; import { classMap } from "lit-html/directives/class-map"; +import "../../components/ha-icon"; +import { fireEvent } from "../dom/fire_event"; @customElement("search-input") class SearchInput extends LitElement { @property() public filter?: string; + @property({ type: Boolean, attribute: "no-label-float" }) public noLabelFloat? = false; + @property({ type: Boolean, attribute: "no-underline" }) public noUnderline = false; @@ -44,16 +46,16 @@ class SearchInput extends LitElement { > ${this.filter && - html` - - `} + html` + + `} `; } diff --git a/src/common/string/slugify.ts b/src/common/string/slugify.ts index 74a21b5c8f..05c6f3352c 100644 --- a/src/common/string/slugify.ts +++ b/src/common/string/slugify.ts @@ -12,8 +12,8 @@ export const slugify = (value: string) => { .replace(/\s+/g, "-") // Replace spaces with - .replace(p, (c) => b.charAt(a.indexOf(c))) // Replace special characters .replace(/&/g, "-and-") // Replace & with 'and' - .replace(/[^\w\-]+/g, "") // Remove all non-word characters - .replace(/\-\-+/g, "-") // Replace multiple - with single - + .replace(/[^\w-]+/g, "") // Remove all non-word characters + .replace(/--+/g, "-") // Replace multiple - with single - .replace(/^-+/, "") // Trim - from start of text .replace(/-+$/, ""); // Trim - from end of text }; diff --git a/src/common/util/debounce.ts b/src/common/util/debounce.ts index 4164edb75a..fedd679e2e 100644 --- a/src/common/util/debounce.ts +++ b/src/common/util/debounce.ts @@ -4,7 +4,7 @@ // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. -// tslint:disable-next-line: ban-types +// eslint-disable-next-line: ban-types export const debounce = ( func: T, wait, @@ -12,9 +12,9 @@ export const debounce = ( ): T => { let timeout; // @ts-ignore - return function(...args) { - // tslint:disable:no-this-assignment + return function (...args) { // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this; const later = () => { timeout = null; diff --git a/src/common/util/deep-equal.ts b/src/common/util/deep-equal.ts index 3342479564..780aef6952 100644 --- a/src/common/util/deep-equal.ts +++ b/src/common/util/deep-equal.ts @@ -79,8 +79,7 @@ export const deepEqual = (a: any, b: any): boolean => { return a.toString() === b.toString(); } - let keys: string[]; - keys = Object.keys(a); + const keys = Object.keys(a); length = keys.length; if (length !== Object.keys(b).length) { return false; @@ -103,5 +102,6 @@ export const deepEqual = (a: any, b: any): boolean => { } // true if both NaN, false otherwise + // eslint-disable-next-line no-self-compare return a !== a && b !== b; }; diff --git a/src/common/util/patch.ts b/src/common/util/patch.ts index 933ff0abdb..3ad6f8bece 100644 --- a/src/common/util/patch.ts +++ b/src/common/util/patch.ts @@ -1,21 +1,21 @@ -export const applyPatch = (data, path, value) => { +export const applyPatch = (data, path, value): void => { if (path.length === 1) { data[path[0]] = value; - } else { - if (!data[path[0]]) { - data[path[0]] = {}; - } - return applyPatch(data[path[0]], path.slice(1), value); + return; } + if (!data[path[0]]) { + data[path[0]] = {}; + } + // eslint-disable-next-line consistent-return + return applyPatch(data[path[0]], path.slice(1), value); }; -export const getPath = (data, path) => { +export const getPath = (data, path): any | undefined => { if (path.length === 1) { return data[path[0]]; - } else { - if (data[path[0]] === undefined) { - return undefined; - } - return getPath(data[path[0]], path.slice(1)); } + if (data[path[0]] === undefined) { + return undefined; + } + return getPath(data[path[0]], path.slice(1)); }; diff --git a/src/common/util/subscribe-one.ts b/src/common/util/subscribe-one.ts index 7480a517db..f86bfb7388 100644 --- a/src/common/util/subscribe-one.ts +++ b/src/common/util/subscribe-one.ts @@ -1,4 +1,4 @@ -import { UnsubscribeFunc, Connection } from "home-assistant-js-websocket"; +import { Connection, UnsubscribeFunc } from "home-assistant-js-websocket"; export const subscribeOne = async ( conn: Connection, diff --git a/src/components/buttons/ha-call-api-button.js b/src/components/buttons/ha-call-api-button.js index 59c7c8e748..ba090cc9fd 100644 --- a/src/components/buttons/ha-call-api-button.js +++ b/src/components/buttons/ha-call-api-button.js @@ -1,7 +1,6 @@ -import { LitElement, html } from "lit-element"; - -import "./ha-progress-button"; +import { html, LitElement } from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; +import "./ha-progress-button"; class HaCallApiButton extends LitElement { render() { diff --git a/src/components/buttons/ha-call-service-button.js b/src/components/buttons/ha-call-service-button.js index c8d7b79b56..5166c615e4 100644 --- a/src/components/buttons/ha-call-service-button.js +++ b/src/components/buttons/ha-call-service-button.js @@ -1,9 +1,9 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "./ha-progress-button"; -import { EventsMixin } from "../../mixins/events-mixin"; import { showConfirmationDialog } from "../../dialogs/generic/show-dialog-box"; +import { EventsMixin } from "../../mixins/events-mixin"; +import "./ha-progress-button"; /* * @appliesMixin EventsMixin @@ -53,6 +53,7 @@ class HaCallServiceButton extends EventsMixin(PolymerElement) { callService() { this.progress = true; + // eslint-disable-next-line @typescript-eslint/no-this-alias var el = this; var eventData = { domain: this.domain, @@ -63,18 +64,18 @@ class HaCallServiceButton extends EventsMixin(PolymerElement) { this.hass .callService(this.domain, this.service, this.serviceData) .then( - function() { + function () { el.progress = false; el.$.progress.actionSuccess(); eventData.success = true; }, - function() { + function () { el.progress = false; el.$.progress.actionError(); eventData.success = false; } ) - .then(function() { + .then(function () { el.fire("hass-service-called", eventData); }); } diff --git a/src/components/buttons/ha-progress-button.js b/src/components/buttons/ha-progress-button.js index 9f14d21d18..50212e9967 100644 --- a/src/components/buttons/ha-progress-button.js +++ b/src/components/buttons/ha-progress-button.js @@ -1,6 +1,7 @@ import "@material/mwc-button"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaProgressButton extends PolymerElement { diff --git a/src/components/data-table/ha-data-table.ts b/src/components/data-table/ha-data-table.ts index 921a90d277..fff8ab1bd0 100644 --- a/src/components/data-table/ha-data-table.ts +++ b/src/components/data-table/ha-data-table.ts @@ -1,36 +1,29 @@ import deepClone from "deep-clone-simple"; - -import { classMap } from "lit-html/directives/class-map"; - -import { scroll } from "lit-virtualizer"; - import { - html, - query, - CSSResult, css, + CSSResult, customElement, - property, - TemplateResult, - PropertyValues, + html, LitElement, + property, + PropertyValues, + query, + TemplateResult, } from "lit-element"; - -// eslint-disable-next-line import/no-webpack-loader-syntax -// @ts-ignore -// tslint:disable-next-line: no-implicit-dependencies -import sortFilterWorker from "workerize-loader!./sort_filter_worker"; - -import "../ha-icon"; -import "../../common/search/search-input"; -import "../ha-checkbox"; -// tslint:disable-next-line -import { HaCheckbox } from "../ha-checkbox"; -import { fireEvent } from "../../common/dom/fire_event"; -import { nextRender } from "../../common/util/render-status"; -import { debounce } from "../../common/util/debounce"; -import { styleMap } from "lit-html/directives/style-map"; +import { classMap } from "lit-html/directives/class-map"; import { ifDefined } from "lit-html/directives/if-defined"; +import { styleMap } from "lit-html/directives/style-map"; +import { scroll } from "lit-virtualizer"; +// @ts-ignore +// eslint-disable-next-line import/no-webpack-loader-syntax +import sortFilterWorker from "workerize-loader!./sort_filter_worker"; +import { fireEvent } from "../../common/dom/fire_event"; +import "../../common/search/search-input"; +import { debounce } from "../../common/util/debounce"; +import { nextRender } from "../../common/util/render-status"; +import "../ha-checkbox"; +import type { HaCheckbox } from "../ha-checkbox"; +import "../ha-icon"; declare global { // for fire event @@ -84,28 +77,46 @@ export interface DataTableRowData { @customElement("ha-data-table") export class HaDataTable extends LitElement { @property({ type: Object }) public columns: DataTableColumnContainer = {}; + @property({ type: Array }) public data: DataTableRowData[] = []; + @property({ type: Boolean }) public selectable = false; + @property({ type: Boolean }) public hasFab = false; + @property({ type: Boolean, attribute: "auto-height" }) public autoHeight = false; + @property({ type: String }) public id = "id"; + @property({ type: String }) public noDataText?: string; + @property({ type: String }) public filter = ""; + @property({ type: Boolean }) private _filterable = false; + @property({ type: String }) private _filter = ""; + @property({ type: String }) private _sortColumn?: string; + @property({ type: String }) private _sortDirection: SortingDirection = null; + @property({ type: Array }) private _filteredData: DataTableRowData[] = []; + @query("slot[name='header']") private _header!: HTMLSlotElement; + @query(".mdc-data-table__table") private _table!: HTMLDivElement; private _checkableRowsCount?: number; + private _checkedRows: string[] = []; + private _sortColumns: { [key: string]: DataTableSortColumnData; } = {}; + private curRequest = 0; + private _worker: any | undefined; private _debounceSearch = debounce( @@ -217,9 +228,9 @@ export class HaDataTable extends LitElement { class="mdc-data-table__row-checkbox" @change=${this._handleHeaderRowCheckboxClick} .indeterminate=${this._checkedRows.length && - this._checkedRows.length !== this._checkableRowsCount} + this._checkedRows.length !== this._checkableRowsCount} .checked=${this._checkedRows.length === - this._checkableRowsCount} + this._checkableRowsCount} >
@@ -288,9 +299,7 @@ export class HaDataTable extends LitElement { : [...this._filteredData, ...[{ empty: true }]], renderItem: (row: DataTableRowData) => { if (row.empty) { - return html` -
- `; + return html`
`; } return html`
{ protected NO_AUTOMATION_TEXT = "No actions"; + protected UNKNOWN_AUTOMATION_TEXT = "Unknown action"; constructor() { diff --git a/src/components/device/ha-device-automation-picker.ts b/src/components/device/ha-device-automation-picker.ts index e7237d106e..b32446710a 100644 --- a/src/components/device/ha-device-automation-picker.ts +++ b/src/components/device/ha-device-automation-picker.ts @@ -3,20 +3,20 @@ import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-listbox/paper-listbox"; import { - LitElement, - TemplateResult, - html, css, CSSResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../types"; import { fireEvent } from "../../common/dom/fire_event"; import { DeviceAutomation, deviceAutomationsEqual, } from "../../data/device_automation"; -import "../../components/ha-paper-dropdown-menu"; +import { HomeAssistant } from "../../types"; +import "../ha-paper-dropdown-menu"; const NO_AUTOMATION_KEY = "NO_AUTOMATION"; const UNKNOWN_AUTOMATION_KEY = "UNKNOWN_AUTOMATION"; @@ -25,11 +25,17 @@ export abstract class HaDeviceAutomationPicker< T extends DeviceAutomation > extends LitElement { @property() public hass!: HomeAssistant; + @property() public label?: string; + @property() public deviceId?: string; + @property() public value?: T; + protected NO_AUTOMATION_TEXT = "No automations"; + protected UNKNOWN_AUTOMATION_TEXT = "Unknown automation"; + @property() private _automations: T[] = []; // Trigger an empty render so we start with a clean DOM. @@ -40,10 +46,12 @@ export abstract class HaDeviceAutomationPicker< hass: HomeAssistant, automation: T ) => string; + private _fetchDeviceAutomations: ( hass: HomeAssistant, deviceId: string ) => Promise; + private _createNoAutomation: (deviceId?: string) => T; constructor( diff --git a/src/components/device/ha-device-condition-picker.ts b/src/components/device/ha-device-condition-picker.ts index d0a45fe8e8..dbe95c8f6a 100644 --- a/src/components/device/ha-device-condition-picker.ts +++ b/src/components/device/ha-device-condition-picker.ts @@ -4,7 +4,7 @@ import { fetchDeviceConditions, localizeDeviceAutomationCondition, } from "../../data/device_automation"; -import "../../components/ha-paper-dropdown-menu"; +import "../ha-paper-dropdown-menu"; import { HaDeviceAutomationPicker } from "./ha-device-automation-picker"; @customElement("ha-device-condition-picker") @@ -12,6 +12,7 @@ class HaDeviceConditionPicker extends HaDeviceAutomationPicker< DeviceCondition > { protected NO_AUTOMATION_TEXT = "No conditions"; + protected UNKNOWN_AUTOMATION_TEXT = "Unknown condition"; constructor() { diff --git a/src/components/device/ha-device-picker.ts b/src/components/device/ha-device-picker.ts index c232393e4c..a0d52389e7 100644 --- a/src/components/device/ha-device-picker.ts +++ b/src/components/device/ha-device-picker.ts @@ -1,40 +1,39 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; -import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; import "@polymer/paper-listbox/paper-listbox"; -import memoizeOne from "memoize-one"; +import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { - LitElement, - TemplateResult, - html, css, CSSResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { SubscribeMixin } from "../../mixins/subscribe-mixin"; - -import { HomeAssistant } from "../../types"; +import memoizeOne from "memoize-one"; import { fireEvent } from "../../common/dom/fire_event"; -import { - DeviceRegistryEntry, - subscribeDeviceRegistry, - computeDeviceName, - DeviceEntityLookup, -} from "../../data/device_registry"; +import { computeDomain } from "../../common/entity/compute_domain"; import { compare } from "../../common/string/compare"; -import { PolymerChangedEvent } from "../../polymer-types"; import { AreaRegistryEntry, subscribeAreaRegistry, } from "../../data/area_registry"; +import { + computeDeviceName, + DeviceEntityLookup, + DeviceRegistryEntry, + subscribeDeviceRegistry, +} from "../../data/device_registry"; import { EntityRegistryEntry, subscribeEntityRegistry, } from "../../data/entity_registry"; -import { computeDomain } from "../../common/entity/compute_domain"; +import { SubscribeMixin } from "../../mixins/subscribe-mixin"; +import { PolymerChangedEvent } from "../../polymer-types"; +import { HomeAssistant } from "../../types"; interface Device { name: string; @@ -67,11 +66,17 @@ const rowRenderer = (root: HTMLElement, _owner, model: { item: Device }) => { @customElement("ha-device-picker") export class HaDevicePicker extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public label?: string; + @property() public value?: string; + @property() public devices?: DeviceRegistryEntry[]; + @property() public areas?: AreaRegistryEntry[]; + @property() public entities?: EntityRegistryEntry[]; + /** * Show only devices with entities from specific domains. * @type {Array} @@ -79,6 +84,7 @@ export class HaDevicePicker extends SubscribeMixin(LitElement) { */ @property({ type: Array, attribute: "include-domains" }) public includeDomains?: string[]; + /** * Show no devices with entities of these domains. * @type {Array} @@ -86,6 +92,7 @@ export class HaDevicePicker extends SubscribeMixin(LitElement) { */ @property({ type: Array, attribute: "exclude-domains" }) public excludeDomains?: string[]; + /** * Show only deviced with entities of these device classes. * @type {Array} @@ -93,6 +100,7 @@ export class HaDevicePicker extends SubscribeMixin(LitElement) { */ @property({ type: Array, attribute: "include-device-classes" }) public includeDeviceClasses?: string[]; + @property({ type: Boolean }) private _opened?: boolean; diff --git a/src/components/device/ha-device-trigger-picker.ts b/src/components/device/ha-device-trigger-picker.ts index a5913220ac..ec140426ae 100644 --- a/src/components/device/ha-device-trigger-picker.ts +++ b/src/components/device/ha-device-trigger-picker.ts @@ -4,12 +4,13 @@ import { fetchDeviceTriggers, localizeDeviceAutomationTrigger, } from "../../data/device_automation"; -import "../../components/ha-paper-dropdown-menu"; +import "../ha-paper-dropdown-menu"; import { HaDeviceAutomationPicker } from "./ha-device-automation-picker"; @customElement("ha-device-trigger-picker") class HaDeviceTriggerPicker extends HaDeviceAutomationPicker { protected NO_AUTOMATION_TEXT = "No triggers"; + protected UNKNOWN_AUTOMATION_TEXT = "Unknown trigger"; constructor() { diff --git a/src/components/device/ha-devices-picker.ts b/src/components/device/ha-devices-picker.ts index 1902a97c64..4f944c4717 100644 --- a/src/components/device/ha-devices-picker.ts +++ b/src/components/device/ha-devices-picker.ts @@ -1,22 +1,22 @@ -import { - LitElement, - TemplateResult, - property, - html, - customElement, -} from "lit-element"; import "@polymer/paper-icon-button/paper-icon-button-light"; - -import { HomeAssistant } from "../../types"; -import { PolymerChangedEvent } from "../../polymer-types"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; - +import { PolymerChangedEvent } from "../../polymer-types"; +import { HomeAssistant } from "../../types"; import "./ha-device-picker"; @customElement("ha-devices-picker") class HaDevicesPicker extends LitElement { @property() public hass?: HomeAssistant; + @property() public value?: string[]; + /** * Show entities from specific domains. * @type {string} @@ -24,6 +24,7 @@ class HaDevicesPicker extends LitElement { */ @property({ type: Array, attribute: "include-domains" }) public includeDomains?: string[]; + /** * Show no entities of these domains. * @type {Array} @@ -31,10 +32,13 @@ class HaDevicesPicker extends LitElement { */ @property({ type: Array, attribute: "exclude-domains" }) public excludeDomains?: string[]; + @property({ attribute: "picked-device-label" }) @property({ type: Array, attribute: "include-device-classes" }) public includeDeviceClasses?: string[]; + public pickedDeviceLabel?: string; + @property({ attribute: "pick-device-label" }) public pickDeviceLabel?: string; protected render(): TemplateResult { diff --git a/src/components/dialog/ha-iron-focusables-helper.js b/src/components/dialog/ha-iron-focusables-helper.js index 4ae78090e5..7accb98257 100644 --- a/src/components/dialog/ha-iron-focusables-helper.js +++ b/src/components/dialog/ha-iron-focusables-helper.js @@ -11,9 +11,8 @@ found at http://polymer.github.io/PATENTS.txt /* Fixes issue with not using shadow dom properly in iron-overlay-behavior/icon-focusables-helper.js */ -import { dom } from "@polymer/polymer/lib/legacy/polymer.dom.js"; - -import { IronFocusablesHelper } from "@polymer/iron-overlay-behavior/iron-focusables-helper.js"; +import { IronFocusablesHelper } from "@polymer/iron-overlay-behavior/iron-focusables-helper"; +import { dom } from "@polymer/polymer/lib/legacy/polymer.dom"; export const HaIronFocusablesHelper = { /** @@ -23,7 +22,7 @@ export const HaIronFocusablesHelper = { * @param {!Node} node * @return {!Array} */ - getTabbableNodes: function(node) { + getTabbableNodes: function (node) { var result = []; // If there is at least one element with tabindex > 0, we need to sort // the final array by tabindex. @@ -43,7 +42,7 @@ export const HaIronFocusablesHelper = { * @return {boolean} * @private */ - _collectTabbableNodes: function(node, result) { + _collectTabbableNodes: function (node, result) { // If not an element or not visible, no need to explore children. if ( node.nodeType !== Node.ELEMENT_NODE || diff --git a/src/components/dialog/ha-paper-dialog.ts b/src/components/dialog/ha-paper-dialog.ts index 7ddef793c6..aec360155b 100644 --- a/src/components/dialog/ha-paper-dialog.ts +++ b/src/components/dialog/ha-paper-dialog.ts @@ -1,10 +1,12 @@ import "@polymer/paper-dialog/paper-dialog"; +import type { PaperDialogElement } from "@polymer/paper-dialog/paper-dialog"; import { mixinBehaviors } from "@polymer/polymer/lib/legacy/class"; -import { HaIronFocusablesHelper } from "./ha-iron-focusables-helper.js"; -// tslint:disable-next-line -import { PaperDialogElement } from "@polymer/paper-dialog/paper-dialog"; +import type { Constructor } from "../../types"; +import { HaIronFocusablesHelper } from "./ha-iron-focusables-helper"; -const paperDialogClass = customElements.get("paper-dialog"); +const paperDialogClass = customElements.get("paper-dialog") as Constructor< + PaperDialogElement +>; // behavior that will override existing iron-overlay-behavior and call the fixed implementation const haTabFixBehaviorImpl = { @@ -25,4 +27,5 @@ declare global { "ha-paper-dialog": HaPaperDialog; } } +// @ts-ignore customElements.define("ha-paper-dialog", HaPaperDialog); diff --git a/src/components/entity/ha-chart-base.js b/src/components/entity/ha-chart-base.js index ffa76a1d56..e5598b35f7 100644 --- a/src/components/entity/ha-chart-base.js +++ b/src/components/entity/ha-chart-base.js @@ -1,12 +1,13 @@ -import { PolymerElement } from "@polymer/polymer/polymer-element"; +/* eslint-plugin-disable lit */ import { IronResizableBehavior } from "@polymer/iron-resizable-behavior/iron-resizable-behavior"; import "@polymer/paper-icon-button/paper-icon-button"; -import { html } from "@polymer/polymer/lib/utils/html-tag"; -import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; -import { timeOut } from "@polymer/polymer/lib/utils/async"; import { mixinBehaviors } from "@polymer/polymer/lib/legacy/class"; - +import { timeOut } from "@polymer/polymer/lib/utils/async"; +import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; +import { html } from "@polymer/polymer/lib/utils/html-tag"; +import { PolymerElement } from "@polymer/polymer/polymer-element"; import { formatTime } from "../../common/datetime/format_time"; + // eslint-disable-next-line no-unused-vars /* global Chart moment Color */ diff --git a/src/components/entity/ha-entities-picker.ts b/src/components/entity/ha-entities-picker.ts index 05fd062eb5..4824bf046e 100644 --- a/src/components/entity/ha-entities-picker.ts +++ b/src/components/entity/ha-entities-picker.ts @@ -1,27 +1,25 @@ -import { - LitElement, - TemplateResult, - property, - html, - customElement, -} from "lit-element"; import "@polymer/paper-icon-button/paper-icon-button-light"; - -import { HomeAssistant } from "../../types"; -import { PolymerChangedEvent } from "../../polymer-types"; +import type { HassEntity } from "home-assistant-js-websocket"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; import { isValidEntityId } from "../../common/entity/valid_entity_id"; - +import type { PolymerChangedEvent } from "../../polymer-types"; +import type { HomeAssistant } from "../../types"; import "./ha-entity-picker"; -// Not a duplicate, type import -// tslint:disable-next-line -import { HaEntityPickerEntityFilterFunc } from "./ha-entity-picker"; -import { HassEntity } from "home-assistant-js-websocket"; +import type { HaEntityPickerEntityFilterFunc } from "./ha-entity-picker"; @customElement("ha-entities-picker") class HaEntitiesPickerLight extends LitElement { @property() public hass?: HomeAssistant; + @property() public value?: string[]; + /** * Show entities from specific domains. * @type {string} @@ -29,6 +27,7 @@ class HaEntitiesPickerLight extends LitElement { */ @property({ type: Array, attribute: "include-domains" }) public includeDomains?: string[]; + /** * Show no entities of these domains. * @type {Array} @@ -36,8 +35,10 @@ class HaEntitiesPickerLight extends LitElement { */ @property({ type: Array, attribute: "exclude-domains" }) public excludeDomains?: string[]; + @property({ attribute: "picked-entity-label" }) public pickedEntityLabel?: string; + @property({ attribute: "pick-entity-label" }) public pickEntityLabel?: string; protected render(): TemplateResult { diff --git a/src/components/entity/ha-entity-picker.ts b/src/components/entity/ha-entity-picker.ts index d2ddd62165..393a77fb0c 100644 --- a/src/components/entity/ha-entity-picker.ts +++ b/src/components/entity/ha-entity-picker.ts @@ -3,25 +3,23 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-item-body"; import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; -import memoizeOne from "memoize-one"; - -import "./state-badge"; - -import { computeStateName } from "../../common/entity/compute_state_name"; +import { HassEntity } from "home-assistant-js-websocket"; import { - LitElement, - TemplateResult, - html, css, CSSResult, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../types"; -import { HassEntity } from "home-assistant-js-websocket"; -import { PolymerChangedEvent } from "../../polymer-types"; +import memoizeOne from "memoize-one"; import { fireEvent } from "../../common/dom/fire_event"; import { computeDomain } from "../../common/entity/compute_domain"; +import { computeStateName } from "../../common/entity/compute_state_name"; +import { PolymerChangedEvent } from "../../polymer-types"; +import { HomeAssistant } from "../../types"; +import "./state-badge"; export type HaEntityPickerEntityFilterFunc = (entityId: HassEntity) => boolean; @@ -54,13 +52,19 @@ const rowRenderer = ( }; class HaEntityPicker extends LitElement { - @property({ type: Boolean }) public autofocus?: boolean; + @property({ type: Boolean }) public autofocus = false; + @property({ type: Boolean }) public disabled?: boolean; + @property({ type: Boolean, attribute: "allow-custom-entity" }) public allowCustomEntity; + @property() public hass?: HomeAssistant; + @property() public label?: string; + @property() public value?: string; + /** * Show entities from specific domains. * @type {Array} @@ -68,6 +72,7 @@ class HaEntityPicker extends LitElement { */ @property({ type: Array, attribute: "include-domains" }) public includeDomains?: string[]; + /** * Show no entities of these domains. * @type {Array} @@ -75,6 +80,7 @@ class HaEntityPicker extends LitElement { */ @property({ type: Array, attribute: "exclude-domains" }) public excludeDomains?: string[]; + /** * Show only entities of these device classes. * @type {Array} @@ -82,8 +88,11 @@ class HaEntityPicker extends LitElement { */ @property({ type: Array, attribute: "include-device-classes" }) public includeDeviceClasses?: string[]; + @property() public entityFilter?: HaEntityPickerEntityFilterFunc; + @property({ type: Boolean }) private _opened?: boolean; + @property() private _hass?: HomeAssistant; private _getStates = memoizeOne( diff --git a/src/components/entity/ha-entity-toggle.ts b/src/components/entity/ha-entity-toggle.ts index 7243ad12f3..67549ca090 100644 --- a/src/components/entity/ha-entity-toggle.ts +++ b/src/components/entity/ha-entity-toggle.ts @@ -1,24 +1,21 @@ import "@polymer/paper-icon-button/paper-icon-button"; - -import { STATES_OFF } from "../../common/const"; +import { HassEntity } from "home-assistant-js-websocket"; import { - LitElement, - TemplateResult, - html, - CSSResult, css, + CSSResult, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../types"; -import { HassEntity } from "home-assistant-js-websocket"; -import { forwardHaptic } from "../../data/haptics"; - +import { STATES_OFF } from "../../common/const"; import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { computeStateName } from "../../common/entity/compute_state_name"; - -import "../ha-switch"; import { UNAVAILABLE_STATES } from "../../data/entity"; +import { forwardHaptic } from "../../data/haptics"; +import { HomeAssistant } from "../../types"; +import "../ha-switch"; const isOn = (stateObj?: HassEntity) => stateObj !== undefined && @@ -28,14 +25,14 @@ const isOn = (stateObj?: HassEntity) => class HaEntityToggle extends LitElement { // hass is not a property so that we only re-render on stateObj changes public hass?: HomeAssistant; + @property() public stateObj?: HassEntity; - @property() private _isOn: boolean = false; + + @property() private _isOn = false; protected render(): TemplateResult { if (!this.stateObj) { - return html` - - `; + return html` `; } if (this.stateObj.attributes.assumed_state) { diff --git a/src/components/entity/ha-state-icon.js b/src/components/entity/ha-state-icon.js index 33923171fc..80a7ad22d1 100644 --- a/src/components/entity/ha-state-icon.js +++ b/src/components/entity/ha-state-icon.js @@ -1,14 +1,12 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../ha-icon"; import { stateIcon } from "../../common/entity/state_icon"; +import "../ha-icon"; class HaStateIcon extends PolymerElement { static get template() { - return html` - - `; + return html` `; } static get properties() { diff --git a/src/components/entity/ha-state-label-badge.ts b/src/components/entity/ha-state-label-badge.ts index ce8a4c6344..bc734dfd57 100644 --- a/src/components/entity/ha-state-label-badge.ts +++ b/src/components/entity/ha-state-label-badge.ts @@ -1,25 +1,22 @@ +import { HassEntity } from "home-assistant-js-websocket"; import { - LitElement, - html, - PropertyValues, - TemplateResult, css, CSSResult, customElement, + html, + LitElement, property, + PropertyValues, + TemplateResult, } from "lit-element"; - -import { HassEntity } from "home-assistant-js-websocket"; import { classMap } from "lit-html/directives/class-map"; -import { HomeAssistant } from "../../types"; - +import secondsToDuration from "../../common/datetime/seconds_to_duration"; import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { computeStateName } from "../../common/entity/compute_state_name"; import { domainIcon } from "../../common/entity/domain_icon"; import { stateIcon } from "../../common/entity/state_icon"; import { timerTimeRemaining } from "../../common/entity/timer_time_remaining"; -import secondsToDuration from "../../common/datetime/seconds_to_duration"; - +import { HomeAssistant } from "../../types"; import "../ha-label-badge"; @customElement("ha-state-label-badge") diff --git a/src/components/entity/state-badge.ts b/src/components/entity/state-badge.ts index 276ab53580..fc5522cedd 100644 --- a/src/components/entity/state-badge.ts +++ b/src/components/entity/state-badge.ts @@ -1,31 +1,34 @@ +import type { HassEntity } from "home-assistant-js-websocket"; import { - LitElement, - TemplateResult, css, CSSResult, html, + LitElement, property, PropertyValues, query, + TemplateResult, } from "lit-element"; -import "../ha-icon"; +import { ifDefined } from "lit-html/directives/if-defined"; +import { computeActiveState } from "../../common/entity/compute_active_state"; import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { stateIcon } from "../../common/entity/state_icon"; -import { HassEntity } from "home-assistant-js-websocket"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { HaIcon } from "../ha-icon"; -import { HomeAssistant } from "../../types"; -import { computeActiveState } from "../../common/entity/compute_active_state"; -import { ifDefined } from "lit-html/directives/if-defined"; import { iconColorCSS } from "../../common/style/icon_color_css"; +import type { HomeAssistant } from "../../types"; +import "../ha-icon"; +import type { HaIcon } from "../ha-icon"; export class StateBadge extends LitElement { public hass?: HomeAssistant; + @property() public stateObj?: HassEntity; + @property() public overrideIcon?: string; + @property() public overrideImage?: string; + @property({ type: Boolean }) public stateColor?: boolean; + @query("ha-icon") private _icon!: HaIcon; protected render(): TemplateResult { @@ -91,7 +94,7 @@ export class StateBadge extends LitElement { const errorMessage = `Type error: state-badge expected number, but type of ${ stateObj.entity_id }.attributes.brightness is ${typeof brightness} (${brightness})`; - // tslint:disable-next-line + // eslint-disable-next-line console.warn(errorMessage); } // lowest brighntess will be around 50% (that's pretty dark) diff --git a/src/components/entity/state-info.js b/src/components/entity/state-info.js index 2bcc4700fa..503240d847 100644 --- a/src/components/entity/state-info.js +++ b/src/components/entity/state-info.js @@ -1,10 +1,10 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../ha-relative-time"; -import "./state-badge"; import { computeStateName } from "../../common/entity/compute_state_name"; import { computeRTL } from "../../common/util/compute_rtl"; +import "../ha-relative-time"; +import "./state-badge"; class StateInfo extends PolymerElement { static get template() { @@ -62,9 +62,7 @@ class StateInfo extends PolymerElement { } static get stateBadgeTemplate() { - return html` - - `; + return html` `; } static get infoTemplate() { diff --git a/src/components/ha-area-picker.ts b/src/components/ha-area-picker.ts index 5e7e7f992d..01d5e71296 100644 --- a/src/components/ha-area-picker.ts +++ b/src/components/ha-area-picker.ts @@ -1,32 +1,31 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; -import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; import "@polymer/paper-listbox/paper-listbox"; +import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { - LitElement, - TemplateResult, - html, css, CSSResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { SubscribeMixin } from "../mixins/subscribe-mixin"; - -import { HomeAssistant } from "../types"; import { fireEvent } from "../common/dom/fire_event"; -import { PolymerChangedEvent } from "../polymer-types"; import { AreaRegistryEntry, - subscribeAreaRegistry, createAreaRegistryEntry, + subscribeAreaRegistry, } from "../data/area_registry"; import { - showPromptDialog, showAlertDialog, + showPromptDialog, } from "../dialogs/generic/show-dialog-box"; +import { SubscribeMixin } from "../mixins/subscribe-mixin"; +import { PolymerChangedEvent } from "../polymer-types"; +import { HomeAssistant } from "../types"; const rowRenderer = ( root: HTMLElement, @@ -62,11 +61,16 @@ const rowRenderer = ( @customElement("ha-area-picker") export class HaAreaPicker extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public label?: string; + @property() public value?: string; + @property() public _areas?: AreaRegistryEntry[]; + @property({ type: Boolean, attribute: "no-add" }) public noAdd?: boolean; + @property() private _opened?: boolean; public hassSubscribe(): UnsubscribeFunc[] { diff --git a/src/components/ha-attributes.ts b/src/components/ha-attributes.ts index 42f5cbead8..abef729cf6 100644 --- a/src/components/ha-attributes.ts +++ b/src/components/ha-attributes.ts @@ -1,22 +1,22 @@ -import { - property, - LitElement, - TemplateResult, - html, - CSSResult, - css, - customElement, -} from "lit-element"; import { HassEntity } from "home-assistant-js-websocket"; - -import hassAttributeUtil from "../util/hass-attributes-util"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { until } from "lit-html/directives/until"; +import hassAttributeUtil from "../util/hass-attributes-util"; let jsYamlPromise: Promise; @customElement("ha-attributes") class HaAttributes extends LitElement { @property() public stateObj?: HassEntity; + @property() public extraFilters?: string; protected render(): TemplateResult { @@ -102,9 +102,7 @@ class HaAttributes extends LitElement { jsYamlPromise = import(/* webpackChunkName: "js-yaml" */ "js-yaml"); } const yaml = jsYamlPromise.then((jsYaml) => jsYaml.safeDump(value)); - return html` -
${until(yaml, "")}
- `; + return html`
${until(yaml, "")}
`; } return Array.isArray(value) ? value.join(", ") : value; } diff --git a/src/components/ha-camera-stream.ts b/src/components/ha-camera-stream.ts index 7b765b1586..90330b04cd 100644 --- a/src/components/ha-camera-stream.ts +++ b/src/components/ha-camera-stream.ts @@ -1,35 +1,39 @@ import { + css, + CSSResult, + customElement, + html, + LitElement, property, PropertyValues, - LitElement, TemplateResult, - html, - CSSResult, - css, - customElement, } from "lit-element"; - -import { computeStateName } from "../common/entity/compute_state_name"; -import { HomeAssistant, CameraEntity } from "../types"; import { fireEvent } from "../common/dom/fire_event"; +import { computeStateName } from "../common/entity/compute_state_name"; +import { supportsFeature } from "../common/entity/supports-feature"; import { CAMERA_SUPPORT_STREAM, - fetchStreamUrl, computeMJPEGStreamUrl, + fetchStreamUrl, } from "../data/camera"; -import { supportsFeature } from "../common/entity/supports-feature"; +import { CameraEntity, HomeAssistant } from "../types"; type HLSModule = typeof import("hls.js"); @customElement("ha-camera-stream") class HaCameraStream extends LitElement { @property() public hass?: HomeAssistant; + @property() public stateObj?: CameraEntity; + @property({ type: Boolean }) public showControls = false; + @property() private _attached = false; + // We keep track if we should force MJPEG with a string // that way it automatically resets if we change entity. @property() private _forceMJPEG: string | undefined = undefined; + private _hlsPolyfillInstance?: Hls; public connectedCallback() { @@ -121,7 +125,7 @@ class HaCameraStream extends LitElement { } private async _startHls(): Promise { - // tslint:disable-next-line + // eslint-disable-next-line const Hls = ((await import( /* webpackChunkName: "hls.js" */ "hls.js" )) as any).default as HLSModule; @@ -152,7 +156,7 @@ class HaCameraStream extends LitElement { return; } catch (err) { // Fails if we were unable to get a stream - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); this._forceMJPEG = this.stateObj!.entity_id; } @@ -168,7 +172,7 @@ class HaCameraStream extends LitElement { private async _renderHLSPolyfill( videoEl: HTMLVideoElement, - // tslint:disable-next-line + // eslint-disable-next-line Hls: HLSModule, url: string ) { diff --git a/src/components/ha-card.ts b/src/components/ha-card.ts index ed604332ab..c37687190d 100644 --- a/src/components/ha-card.ts +++ b/src/components/ha-card.ts @@ -1,11 +1,11 @@ import { css, CSSResult, + customElement, html, LitElement, property, TemplateResult, - customElement, } from "lit-element"; @customElement("ha-card") @@ -63,9 +63,7 @@ class HaCard extends LitElement { protected render(): TemplateResult { return html` ${this.header - ? html` -
${this.header}
- ` + ? html`
${this.header}
` : html``} `; diff --git a/src/components/ha-checkbox.ts b/src/components/ha-checkbox.ts index 85362d134e..4c233f061b 100644 --- a/src/components/ha-checkbox.ts +++ b/src/components/ha-checkbox.ts @@ -1,10 +1,9 @@ -import { customElement, CSSResult, css } from "lit-element"; import "@material/mwc-checkbox"; -// tslint:disable-next-line -import { Checkbox } from "@material/mwc-checkbox"; +import type { Checkbox } from "@material/mwc-checkbox"; import { style } from "@material/mwc-checkbox/mwc-checkbox-css"; -import { Constructor } from "../types"; -// tslint:disable-next-line +import { css, CSSResult, customElement } from "lit-element"; +import type { Constructor } from "../types"; + const MwcCheckbox = customElements.get("mwc-checkbox") as Constructor; @customElement("ha-checkbox") diff --git a/src/components/ha-chips.ts b/src/components/ha-chips.ts index ffa7013d99..8a1363cf8f 100644 --- a/src/components/ha-chips.ts +++ b/src/components/ha-chips.ts @@ -1,16 +1,16 @@ +// @ts-ignore +import chipStyles from "@material/chips/dist/mdc.chips.min.css"; +import { ripple } from "@material/mwc-ripple/ripple-directive"; import { css, CSSResult, + customElement, html, LitElement, property, TemplateResult, - customElement, unsafeCSS, } from "lit-element"; -import { ripple } from "@material/mwc-ripple/ripple-directive"; -// @ts-ignore -import chipStyles from "@material/chips/dist/mdc.chips.min.css"; import { fireEvent } from "../common/dom/fire_event"; declare global { diff --git a/src/components/ha-climate-control.js b/src/components/ha-climate-control.js index abe9b7bf5a..aba4135cce 100644 --- a/src/components/ha-climate-control.js +++ b/src/components/ha-climate-control.js @@ -1,8 +1,8 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { EventsMixin } from "../mixins/events-mixin"; /* diff --git a/src/components/ha-climate-state.js b/src/components/ha-climate-state.js index 9586157d48..76002a1f91 100644 --- a/src/components/ha-climate-state.js +++ b/src/components/ha-climate-state.js @@ -1,8 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import LocalizeMixin from "../mixins/localize-mixin"; import { CLIMATE_PRESET_NONE } from "../data/climate"; +import LocalizeMixin from "../mixins/localize-mixin"; /* * @appliesMixin LocalizeMixin diff --git a/src/components/ha-code-editor.ts b/src/components/ha-code-editor.ts index fcbc24306b..7986aa7467 100644 --- a/src/components/ha-code-editor.ts +++ b/src/components/ha-code-editor.ts @@ -1,12 +1,12 @@ -import { loadCodeMirror } from "../resources/codemirror.ondemand"; -import { fireEvent } from "../common/dom/fire_event"; -import { - UpdatingElement, - property, - customElement, - PropertyValues, -} from "lit-element"; import { Editor } from "codemirror"; +import { + customElement, + property, + PropertyValues, + UpdatingElement, +} from "lit-element"; +import { fireEvent } from "../common/dom/fire_event"; +import { loadCodeMirror } from "../resources/codemirror.ondemand"; declare global { interface HASSDomEvents { @@ -17,10 +17,15 @@ declare global { @customElement("ha-code-editor") export class HaCodeEditor extends UpdatingElement { public codemirror?: Editor; + @property() public mode?: string; + @property() public autofocus = false; + @property() public rtl = false; + @property() public error = false; + @property() private _value = ""; public set value(value: string) { @@ -32,7 +37,7 @@ export class HaCodeEditor extends UpdatingElement { } public get hasComments(): boolean { - return this.shadowRoot!.querySelector("span.cm-comment") ? true : false; + return !!this.shadowRoot!.querySelector("span.cm-comment"); } public connectedCallback() { diff --git a/src/components/ha-color-picker.js b/src/components/ha-color-picker.js index 8ab66513be..22ea627d6b 100644 --- a/src/components/ha-color-picker.js +++ b/src/components/ha-color-picker.js @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { EventsMixin } from "../mixins/events-mixin"; /** @@ -332,8 +332,9 @@ class HaColorPicker extends EventsMixin(PolymerElement) { applyColorToCanvas(hs) { // we're not really converting hs to hsl here, but we keep it cheap // setting the color on the interactionLayer, the svg elements can inherit - this.interactionLayer.style.color = `hsl(${hs.h}, 100%, ${100 - - hs.s * 50}%)`; + this.interactionLayer.style.color = `hsl(${hs.h}, 100%, ${ + 100 - hs.s * 50 + }%)`; } applyHsColor(hs) { diff --git a/src/components/ha-combo-box.js b/src/components/ha-combo-box.js index c2a7e34e42..bf6450c161 100644 --- a/src/components/ha-combo-box.js +++ b/src/components/ha-combo-box.js @@ -2,9 +2,9 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@vaadin/vaadin-combo-box/theme/material/vaadin-combo-box-light"; - import { EventsMixin } from "../mixins/events-mixin"; class HaComboBox extends EventsMixin(PolymerElement) { diff --git a/src/components/ha-cover-controls.js b/src/components/ha-cover-controls.js index 76990761e5..0e7eb841e8 100644 --- a/src/components/ha-cover-controls.js +++ b/src/components/ha-cover-controls.js @@ -1,9 +1,9 @@ import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import CoverEntity from "../util/cover-model"; import { UNAVAILABLE_STATES } from "../data/entity"; +import CoverEntity from "../util/cover-model"; class HaCoverControls extends PolymerElement { static get template() { diff --git a/src/components/ha-cover-tilt-controls.js b/src/components/ha-cover-tilt-controls.js index b989af8659..399915c75a 100644 --- a/src/components/ha-cover-tilt-controls.js +++ b/src/components/ha-cover-tilt-controls.js @@ -1,10 +1,10 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import CoverEntity from "../util/cover-model"; import { UNAVAILABLE_STATES } from "../data/entity"; +import CoverEntity from "../util/cover-model"; class HaCoverTiltControls extends PolymerElement { static get template() { diff --git a/src/components/ha-date-input.ts b/src/components/ha-date-input.ts index 6f42cd8159..7504d38dcb 100644 --- a/src/components/ha-date-input.ts +++ b/src/components/ha-date-input.ts @@ -1,21 +1,22 @@ -import { - html, - css, - LitElement, - TemplateResult, - property, - customElement, -} from "lit-element"; - import "@polymer/paper-input/paper-input"; -// tslint:disable-next-line:no-duplicate-imports -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; +import { + css, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; @customElement("ha-date-input") export class HaDateInput extends LitElement { @property() public year?: string; + @property() public month?: string; + @property() public day?: string; + @property({ type: Boolean }) public disabled = false; static get styles() { diff --git a/src/components/ha-demo-badge.js b/src/components/ha-demo-badge.js index 2e3bc476fa..744562a613 100644 --- a/src/components/ha-demo-badge.js +++ b/src/components/ha-demo-badge.js @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "./ha-label-badge"; class HaDemoBadge extends PolymerElement { diff --git a/src/components/ha-dialog.ts b/src/components/ha-dialog.ts index 290f5ad22f..f65b9f273b 100644 --- a/src/components/ha-dialog.ts +++ b/src/components/ha-dialog.ts @@ -1,11 +1,10 @@ -import { customElement, CSSResult, css, html } from "lit-element"; -import "@polymer/paper-icon-button/paper-icon-button"; import "@material/mwc-dialog"; +import type { Dialog } from "@material/mwc-dialog"; import { style } from "@material/mwc-dialog/mwc-dialog-css"; -// tslint:disable-next-line -import { Dialog } from "@material/mwc-dialog"; -import { Constructor, HomeAssistant } from "../types"; -// tslint:disable-next-line +import "@polymer/paper-icon-button/paper-icon-button"; +import { css, CSSResult, customElement, html } from "lit-element"; +import type { Constructor, HomeAssistant } from "../types"; + const MwcDialog = customElements.get("mwc-dialog") as Constructor; export const createCloseHeading = (hass: HomeAssistant, title: string) => html` diff --git a/src/components/ha-fab.ts b/src/components/ha-fab.ts index e4dbebff2c..aa0f382cee 100644 --- a/src/components/ha-fab.ts +++ b/src/components/ha-fab.ts @@ -1,19 +1,17 @@ -import { classMap } from "lit-html/directives/class-map"; -import { html, customElement } from "lit-element"; -import { ripple } from "@material/mwc-ripple/ripple-directive"; - import "@material/mwc-fab"; -import { Constructor } from "../types"; -// tslint:disable-next-line -import { Fab } from "@material/mwc-fab"; -// tslint:disable-next-line +import type { Fab } from "@material/mwc-fab"; +import { ripple } from "@material/mwc-ripple/ripple-directive"; +import { customElement, html, TemplateResult } from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; +import type { Constructor } from "../types"; + const MwcFab = customElements.get("mwc-fab") as Constructor; @customElement("ha-fab") export class HaFab extends MwcFab { // We override the render method because we don't have an icon font and mwc-fab doesn't support our svg-icon sets. // Based on version mwc-fab 0.8 - protected render() { + protected render(): TemplateResult { const classes = { "mdc-fab--mini": this.mini, "mdc-fab--exited": this.exited, @@ -28,11 +26,7 @@ export class HaFab extends MwcFab { aria-label="${this.label || this.icon}" > ${showLabel && this.showIconAtEnd ? this.label : ""} - ${this.icon - ? html` - - ` - : ""} + ${this.icon ? html` ` : ""} ${showLabel && !this.showIconAtEnd ? this.label : ""} `; diff --git a/src/components/ha-form/ha-form-boolean.ts b/src/components/ha-form/ha-form-boolean.ts index cc5355274e..c8c956ceca 100644 --- a/src/components/ha-form/ha-form-boolean.ts +++ b/src/components/ha-form/ha-form-boolean.ts @@ -1,31 +1,32 @@ +import "@polymer/paper-checkbox/paper-checkbox"; +import type { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; import { - customElement, - LitElement, - html, - property, - TemplateResult, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, + property, query, + TemplateResult, } from "lit-element"; -import { - HaFormElement, +import { fireEvent } from "../../common/dom/fire_event"; +import type { HaFormBooleanData, HaFormBooleanSchema, + HaFormElement, } from "./ha-form"; -import { fireEvent } from "../../common/dom/fire_event"; - -import "@polymer/paper-checkbox/paper-checkbox"; -// Not duplicate, is for typing -// tslint:disable-next-line -import { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; @customElement("ha-form-boolean") export class HaFormBoolean extends LitElement implements HaFormElement { @property() public schema!: HaFormBooleanSchema; + @property() public data!: HaFormBooleanData; + @property() public label!: string; + @property() public suffix!: string; + @query("paper-checkbox") private _input?: HTMLElement; public focus() { diff --git a/src/components/ha-form/ha-form-float.ts b/src/components/ha-form/ha-form-float.ts index ce6056300f..d915434a3d 100644 --- a/src/components/ha-form/ha-form-float.ts +++ b/src/components/ha-form/ha-form-float.ts @@ -1,25 +1,26 @@ +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { customElement, - LitElement, html, + LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; -import { HaFormElement, HaFormFloatData, HaFormFloatSchema } from "./ha-form"; import { fireEvent } from "../../common/dom/fire_event"; - -import "@polymer/paper-input/paper-input"; -// Not duplicate, is for typing -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import { HaFormElement, HaFormFloatData, HaFormFloatSchema } from "./ha-form"; @customElement("ha-form-float") export class HaFormFloat extends LitElement implements HaFormElement { @property() public schema!: HaFormFloatSchema; + @property() public data!: HaFormFloatData; + @property() public label!: string; + @property() public suffix!: string; + @query("paper-input") private _input?: HTMLElement; public focus() { diff --git a/src/components/ha-form/ha-form-integer.ts b/src/components/ha-form/ha-form-integer.ts index 155132c28c..9fe0929b84 100644 --- a/src/components/ha-form/ha-form-integer.ts +++ b/src/components/ha-form/ha-form-integer.ts @@ -1,34 +1,36 @@ +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; +import "@polymer/paper-slider/paper-slider"; +import type { PaperSliderElement } from "@polymer/paper-slider/paper-slider"; import { - customElement, - LitElement, - html, - property, - TemplateResult, - query, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, + property, + query, + TemplateResult, } from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; +import { HaCheckbox } from "../ha-checkbox"; +import "../ha-paper-slider"; import { HaFormElement, HaFormIntegerData, HaFormIntegerSchema, } from "./ha-form"; -import { fireEvent } from "../../common/dom/fire_event"; - -import "../ha-paper-slider"; -import "@polymer/paper-input/paper-input"; -// Not duplicate, is for typing -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { PaperSliderElement } from "@polymer/paper-slider/paper-slider"; -import { HaCheckbox } from "../ha-checkbox"; @customElement("ha-form-integer") export class HaFormInteger extends LitElement implements HaFormElement { @property() public schema!: HaFormIntegerSchema; + @property() public data?: HaFormIntegerData; + @property() public label?: string; + @property() public suffix?: string; + @query("paper-input ha-paper-slider") private _input?: HTMLElement; public focus() { diff --git a/src/components/ha-form/ha-form-multi_select.ts b/src/components/ha-form/ha-form-multi_select.ts index dc85f3f6cc..80e25168c7 100644 --- a/src/components/ha-form/ha-form-multi_select.ts +++ b/src/components/ha-form/ha-form-multi_select.ts @@ -1,18 +1,18 @@ import "@polymer/paper-checkbox/paper-checkbox"; -import "@polymer/paper-menu-button/paper-menu-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-listbox/paper-listbox"; +import "@polymer/paper-menu-button/paper-menu-button"; import "@polymer/paper-ripple/paper-ripple"; import { + css, + CSSResult, customElement, html, LitElement, property, query, TemplateResult, - CSSResult, - css, } from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; import { @@ -24,10 +24,15 @@ import { @customElement("ha-form-multi_select") export class HaFormMultiSelect extends LitElement implements HaFormElement { @property() public schema!: HaFormMultiSelectSchema; + @property() public data!: HaFormMultiSelectData; + @property() public label!: string; + @property() public suffix!: string; + @property() private _init = false; + @query("paper-menu-button") private _input?: HTMLElement; public focus(): void { diff --git a/src/components/ha-form/ha-form-positive_time_period_dict.ts b/src/components/ha-form/ha-form-positive_time_period_dict.ts index d7ff9ebb59..3f4942c8ec 100644 --- a/src/components/ha-form/ha-form-positive_time_period_dict.ts +++ b/src/components/ha-form/ha-form-positive_time_period_dict.ts @@ -1,20 +1,24 @@ import { customElement, - LitElement, html, + LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; -import { HaFormElement, HaFormTimeData, HaFormTimeSchema } from "./ha-form"; import { fireEvent } from "../../common/dom/fire_event"; +import { HaFormElement, HaFormTimeData, HaFormTimeSchema } from "./ha-form"; @customElement("ha-form-positive_time_period_dict") export class HaFormTimePeriod extends LitElement implements HaFormElement { @property() public schema!: HaFormTimeSchema; + @property() public data!: HaFormTimeData; + @property() public label!: string; + @property() public suffix!: string; + @query("paper-time-input") private _input?: HTMLElement; public focus() { @@ -87,12 +91,12 @@ export class HaFormTimePeriod extends LitElement implements HaFormElement { let minutes = this._minutes; if (unit === "seconds" && value > 59) { - minutes = minutes + Math.floor(value / 60); + minutes += Math.floor(value / 60); value %= 60; } if (unit === "minutes" && value > 59) { - hours = hours + Math.floor(value / 60); + hours += Math.floor(value / 60); value %= 60; } diff --git a/src/components/ha-form/ha-form-select.ts b/src/components/ha-form/ha-form-select.ts index f650ac3bfd..2f3b82984c 100644 --- a/src/components/ha-form/ha-form-select.ts +++ b/src/components/ha-form/ha-form-select.ts @@ -1,26 +1,29 @@ -import { - customElement, - LitElement, - html, - property, - TemplateResult, - query, - CSSResult, - css, -} from "lit-element"; -import { HaFormElement, HaFormSelectData, HaFormSelectSchema } from "./ha-form"; -import { fireEvent } from "../../common/dom/fire_event"; - import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-listbox/paper-listbox"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + query, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; +import { HaFormElement, HaFormSelectData, HaFormSelectSchema } from "./ha-form"; @customElement("ha-form-select") export class HaFormSelect extends LitElement implements HaFormElement { @property() public schema!: HaFormSelectSchema; + @property() public data!: HaFormSelectData; + @property() public label!: string; + @property() public suffix!: string; + @query("paper-dropdown-menu") private _input?: HTMLElement; public focus() { diff --git a/src/components/ha-form/ha-form-string.ts b/src/components/ha-form/ha-form-string.ts index d7dab29dd2..9cafcf7985 100644 --- a/src/components/ha-form/ha-form-string.ts +++ b/src/components/ha-form/ha-form-string.ts @@ -1,31 +1,36 @@ +import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { customElement, - LitElement, html, + LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; - -import { HaFormElement, HaFormStringData, HaFormStringSchema } from "./ha-form"; import { fireEvent } from "../../common/dom/fire_event"; - -import "@polymer/paper-input/paper-input"; -import "@polymer/paper-icon-button/paper-icon-button"; -// Not duplicate, is for typing -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import type { + HaFormElement, + HaFormStringData, + HaFormStringSchema, +} from "./ha-form"; @customElement("ha-form-string") export class HaFormString extends LitElement implements HaFormElement { @property() public schema!: HaFormStringSchema; + @property() public data!: HaFormStringData; + @property() public label!: string; + @property() public suffix!: string; + @property() private _unmaskedPassword = false; + @query("paper-input") private _input?: HTMLElement; - public focus() { + public focus(): void { if (this._input) { this._input.focus(); } @@ -67,11 +72,11 @@ export class HaFormString extends LitElement implements HaFormElement { `; } - private _toggleUnmaskedPassword(ev: Event) { + private _toggleUnmaskedPassword(ev: Event): void { this._unmaskedPassword = (ev.target as any).active; } - private _valueChanged(ev: Event) { + private _valueChanged(ev: Event): void { const value = (ev.target as PaperInputElement).value; if (this.data === value) { return; @@ -81,7 +86,7 @@ export class HaFormString extends LitElement implements HaFormElement { }); } - private get _stringType() { + private get _stringType(): string { if (this.schema.format) { if (["email", "url"].includes(this.schema.format)) { return this.schema.format; diff --git a/src/components/ha-form/ha-form.ts b/src/components/ha-form/ha-form.ts index b02e638854..ff452c6590 100644 --- a/src/components/ha-form/ha-form.ts +++ b/src/components/ha-form/ha-form.ts @@ -1,21 +1,20 @@ import { - customElement, - LitElement, - html, - property, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, + property, } from "lit-element"; - -import "./ha-form-string"; -import "./ha-form-integer"; -import "./ha-form-float"; +import { dynamicElement } from "../../common/dom/dynamic-element-directive"; +import { fireEvent } from "../../common/dom/fire_event"; import "./ha-form-boolean"; -import "./ha-form-select"; +import "./ha-form-float"; +import "./ha-form-integer"; import "./ha-form-multi_select"; import "./ha-form-positive_time_period_dict"; -import { fireEvent } from "../../common/dom/fire_event"; -import { dynamicElement } from "../../common/dom/dynamic-element-directive"; +import "./ha-form-select"; +import "./ha-form-string"; export type HaFormSchema = | HaFormStringSchema @@ -103,10 +102,15 @@ export interface HaFormElement extends LitElement { @customElement("ha-form") export class HaForm extends LitElement implements HaFormElement { @property() public data!: HaFormDataContainer | HaFormData; + @property() public schema!: HaFormSchema; + @property() public error; + @property() public computeError?: (schema: HaFormSchema, error) => string; + @property() public computeLabel?: (schema: HaFormSchema) => string; + @property() public computeSuffix?: (schema: HaFormSchema) => string; public focus() { diff --git a/src/components/ha-icon-input.ts b/src/components/ha-icon-input.ts index 9621e267ed..83761e6c40 100644 --- a/src/components/ha-icon-input.ts +++ b/src/components/ha-icon-input.ts @@ -1,22 +1,25 @@ -import { - html, - css, - LitElement, - TemplateResult, - property, - customElement, -} from "lit-element"; - import "@polymer/paper-input/paper-input"; -import "./ha-icon"; +import { + css, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../common/dom/fire_event"; +import "./ha-icon"; @customElement("ha-icon-input") export class HaIconInput extends LitElement { @property() public value?: string; + @property() public label?: string; + @property() public placeholder?: string; + @property({ attribute: "error-message" }) public errorMessage?: string; + @property({ type: Boolean }) public disabled = false; protected render(): TemplateResult { diff --git a/src/components/ha-icon-next.ts b/src/components/ha-icon-next.ts index 7a875d5e61..f1c216450f 100644 --- a/src/components/ha-icon-next.ts +++ b/src/components/ha-icon-next.ts @@ -1,6 +1,6 @@ import "@polymer/iron-icon/iron-icon"; // Not duplicate, this is for typing. -// tslint:disable-next-line +// eslint-disable-next-line import { HaIcon } from "./ha-icon"; export class HaIconNext extends HaIcon { diff --git a/src/components/ha-icon-prev.ts b/src/components/ha-icon-prev.ts index e8d58433e6..1d896882d7 100644 --- a/src/components/ha-icon-prev.ts +++ b/src/components/ha-icon-prev.ts @@ -1,6 +1,6 @@ import "@polymer/iron-icon/iron-icon"; // Not duplicate, this is for typing. -// tslint:disable-next-line +// eslint-disable-next-line import { HaIcon } from "./ha-icon"; export class HaIconPrev extends HaIcon { diff --git a/src/components/ha-icon.ts b/src/components/ha-icon.ts index 5d71f214ed..a707af0dc4 100644 --- a/src/components/ha-icon.ts +++ b/src/components/ha-icon.ts @@ -1,9 +1,6 @@ -import { Constructor } from "../types"; - import "@polymer/iron-icon/iron-icon"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { IronIconElement } from "@polymer/iron-icon/iron-icon"; +import type { IronIconElement } from "@polymer/iron-icon/iron-icon"; +import { Constructor } from "../types"; const ironIconClass = customElements.get("iron-icon") as Constructor< IronIconElement diff --git a/src/components/ha-label-badge.ts b/src/components/ha-label-badge.ts index a77850cc8f..9f9f2fbcc6 100644 --- a/src/components/ha-label-badge.ts +++ b/src/components/ha-label-badge.ts @@ -1,20 +1,24 @@ import { + css, + CSSResult, html, LitElement, + property, PropertyValues, TemplateResult, - CSSResult, - css, - property, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import "./ha-icon"; class HaLabelBadge extends LitElement { @property() public value?: string; + @property() public icon?: string; + @property() public label?: string; + @property() public description?: string; + @property() public image?: string; protected render(): TemplateResult { @@ -28,14 +32,10 @@ class HaLabelBadge extends LitElement { })}" > ${this.icon && !this.value && !this.image - ? html` - - ` + ? html` ` : ""} ${this.value && !this.image - ? html` - ${this.value} - ` + ? html` ${this.value} ` : ""}
${this.label @@ -52,9 +52,7 @@ class HaLabelBadge extends LitElement { : ""}
${this.description - ? html` -
${this.description}
- ` + ? html`
${this.description}
` : ""}
`; diff --git a/src/components/ha-labeled-slider.js b/src/components/ha-labeled-slider.js index 90a94d7f9b..bbe09e6829 100644 --- a/src/components/ha-labeled-slider.js +++ b/src/components/ha-labeled-slider.js @@ -1,8 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "./ha-paper-slider"; import "./ha-icon"; +import "./ha-paper-slider"; class HaLabeledSlider extends PolymerElement { static get template() { diff --git a/src/components/ha-markdown.ts b/src/components/ha-markdown.ts index 00968a5ce9..ebc367122f 100644 --- a/src/components/ha-markdown.ts +++ b/src/components/ha-markdown.ts @@ -1,7 +1,6 @@ -import { UpdatingElement, property, customElement } from "lit-element"; -// eslint-disable-next-line import/no-webpack-loader-syntax +import { customElement, property, UpdatingElement } from "lit-element"; // @ts-ignore -// tslint:disable-next-line: no-implicit-dependencies +// eslint-disable-next-line import/no-webpack-loader-syntax import markdownWorker from "workerize-loader!../resources/markdown_worker"; import { fireEvent } from "../common/dom/fire_event"; @@ -10,6 +9,7 @@ let worker: any | undefined; @customElement("ha-markdown") class HaMarkdown extends UpdatingElement { @property() public content = ""; + @property({ type: Boolean }) public allowSvg = false; protected update(changedProps) { diff --git a/src/components/ha-menu-button.ts b/src/components/ha-menu-button.ts index 7f64e34432..239bfd7e9f 100644 --- a/src/components/ha-menu-button.ts +++ b/src/components/ha-menu-button.ts @@ -1,28 +1,33 @@ import "@polymer/paper-icon-button/paper-icon-button"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { + css, + CSSResult, + customElement, + html, + LitElement, property, TemplateResult, - LitElement, - html, - customElement, - CSSResult, - css, } from "lit-element"; - import { fireEvent } from "../common/dom/fire_event"; -import { HomeAssistant } from "../types"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { subscribeNotifications } from "../data/persistent_notification"; import { computeDomain } from "../common/entity/compute_domain"; +import { subscribeNotifications } from "../data/persistent_notification"; +import { HomeAssistant } from "../types"; @customElement("ha-menu-button") class HaMenuButton extends LitElement { @property({ type: Boolean }) public hassio = false; + @property() public narrow!: boolean; + @property() public hass!: HomeAssistant; + @property() private _hasNotifications = false; + private _alwaysVisible = false; + private _attachNotifOnConnect = false; + private _unsubNotifications?: UnsubscribeFunc; public connectedCallback() { @@ -55,11 +60,7 @@ class HaMenuButton extends LitElement { .icon=${this.hassio ? "hassio:menu" : "hass:menu"} @click=${this._toggleMenu} > - ${hasNotifications - ? html` -
- ` - : ""} + ${hasNotifications ? html`
` : ""} `; } diff --git a/src/components/ha-paper-icon-button-arrow-next.ts b/src/components/ha-paper-icon-button-arrow-next.ts index f0d4730385..99cbd85ad8 100644 --- a/src/components/ha-paper-icon-button-arrow-next.ts +++ b/src/components/ha-paper-icon-button-arrow-next.ts @@ -1,8 +1,6 @@ import "@polymer/paper-icon-button/paper-icon-button"; -import { Constructor } from "../types"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { Constructor } from "../types"; const paperIconButtonClass = customElements.get( "paper-icon-button" diff --git a/src/components/ha-paper-icon-button-arrow-prev.ts b/src/components/ha-paper-icon-button-arrow-prev.ts index d79c8c66f4..7fe19dea59 100644 --- a/src/components/ha-paper-icon-button-arrow-prev.ts +++ b/src/components/ha-paper-icon-button-arrow-prev.ts @@ -1,8 +1,6 @@ import "@polymer/paper-icon-button/paper-icon-button"; -import { Constructor } from "../types"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { Constructor } from "../types"; const paperIconButtonClass = customElements.get( "paper-icon-button" diff --git a/src/components/ha-paper-icon-button-next.ts b/src/components/ha-paper-icon-button-next.ts index cca612de4f..e119c7f4ce 100644 --- a/src/components/ha-paper-icon-button-next.ts +++ b/src/components/ha-paper-icon-button-next.ts @@ -1,8 +1,6 @@ import "@polymer/paper-icon-button/paper-icon-button"; -import { Constructor } from "../types"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { Constructor } from "../types"; const paperIconButtonClass = customElements.get( "paper-icon-button" diff --git a/src/components/ha-paper-icon-button-prev.ts b/src/components/ha-paper-icon-button-prev.ts index ca4c32ff1c..b2567f6c5f 100644 --- a/src/components/ha-paper-icon-button-prev.ts +++ b/src/components/ha-paper-icon-button-prev.ts @@ -1,8 +1,6 @@ import "@polymer/paper-icon-button/paper-icon-button"; -import { Constructor } from "../types"; -// Not duplicate, this is for typing. -// tslint:disable-next-line -import { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { Constructor } from "../types"; const paperIconButtonClass = customElements.get( "paper-icon-button" diff --git a/src/components/ha-push-notifications-toggle.js b/src/components/ha-push-notifications-toggle.js index ccbd66a4e0..61aec06691 100644 --- a/src/components/ha-push-notifications-toggle.js +++ b/src/components/ha-push-notifications-toggle.js @@ -1,9 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { getAppKey } from "../data/notify_html5"; import { EventsMixin } from "../mixins/events-mixin"; - import "./ha-switch"; export const pushSupported = diff --git a/src/components/ha-related-items.ts b/src/components/ha-related-items.ts index bc810e48e0..124c93404e 100644 --- a/src/components/ha-related-items.ts +++ b/src/components/ha-related-items.ts @@ -1,13 +1,13 @@ import { HassEntity, UnsubscribeFunc } from "home-assistant-js-websocket"; import { + css, + CSSResult, customElement, html, LitElement, property, PropertyValues, TemplateResult, - CSSResult, - css, } from "lit-element"; import { fireEvent } from "../common/dom/fire_event"; import { @@ -28,11 +28,17 @@ import "./ha-switch"; @customElement("ha-related-items") export class HaRelatedItems extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public itemType!: ItemType; + @property() public itemId!: string; + @property() private _entries?: ConfigEntry[]; + @property() private _devices?: DeviceRegistryEntry[]; + @property() private _areas?: AreaRegistryEntry[]; + @property() private _related?: RelatedResult; public hassSubscribe(): UnsubscribeFunc[] { @@ -80,7 +86,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { (configEntry) => configEntry.entry_id === relatedConfigEntryId ); if (!entry) { - return; + return ""; } return html`

@@ -104,7 +110,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { (dev) => dev.id === relatedDeviceId ); if (!device) { - return; + return ""; } return html`

@@ -125,7 +131,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { (ar) => ar.area_id === relatedAreaId ); if (!area) { - return; + return ""; } return html`

@@ -146,7 +152,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { entityId ]; if (!entity) { - return; + return ""; } return html`
  • @@ -170,7 +176,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { ${this._related.group.map((groupId) => { const group: HassEntity | undefined = this.hass.states[groupId]; if (!group) { - return; + return ""; } return html`
  • @@ -196,7 +202,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { sceneId ]; if (!scene) { - return; + return ""; } return html`
  • @@ -224,7 +230,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { automationId ]; if (!automation) { - return; + return ""; } return html`
  • @@ -234,7 +240,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { .entityId="${automationId}" > ${automation.attributes.friendly_name || - automation.entity_id} + automation.entity_id}
  • `; @@ -253,7 +259,7 @@ export class HaRelatedItems extends SubscribeMixin(LitElement) { scriptId ]; if (!script) { - return; + return ""; } return html`
  • diff --git a/src/components/ha-relative-time.js b/src/components/ha-relative-time.js index 0d61285524..58d787ebb5 100644 --- a/src/components/ha-relative-time.js +++ b/src/components/ha-relative-time.js @@ -1,8 +1,7 @@ import { dom } from "@polymer/polymer/lib/legacy/polymer.dom"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import relativeTime from "../common/datetime/relative_time"; - import LocalizeMixin from "../mixins/localize-mixin"; /* diff --git a/src/components/ha-service-description.js b/src/components/ha-service-description.js index 9ca7caf944..c1e2596df6 100644 --- a/src/components/ha-service-description.js +++ b/src/components/ha-service-description.js @@ -1,11 +1,10 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaServiceDescription extends PolymerElement { static get template() { - return html` - [[_getDescription(hass, domain, service)]] - `; + return html` [[_getDescription(hass, domain, service)]] `; } static get properties() { diff --git a/src/components/ha-service-picker.js b/src/components/ha-service-picker.js index c10bb66a90..32aee922c9 100644 --- a/src/components/ha-service-picker.js +++ b/src/components/ha-service-picker.js @@ -1,9 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "./ha-combo-box"; - import LocalizeMixin from "../mixins/localize-mixin"; +import "./ha-combo-box"; /* * @appliesMixin LocalizeMixin diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 743037a7ba..e3ba42aa8c 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -1,38 +1,36 @@ -import { - LitElement, - html, - CSSResult, - css, - PropertyValues, - property, - eventOptions, -} from "lit-element"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-icon-item"; +import type { PaperIconItemElement } from "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; -import "./ha-icon"; - -import "../components/user/ha-user-badge"; -import "../components/ha-menu-button"; -import { HomeAssistant, PanelInfo } from "../types"; -import { fireEvent } from "../common/dom/fire_event"; import { - getExternalConfig, - ExternalConfig, -} from "../external_app/external_config"; + css, + CSSResult, + eventOptions, + html, + LitElement, + property, + PropertyValues, +} from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; +import { fireEvent } from "../common/dom/fire_event"; +import { computeDomain } from "../common/entity/compute_domain"; +import { compare } from "../common/string/compare"; +import { computeRTL } from "../common/util/compute_rtl"; +import { getDefaultPanel } from "../data/panel"; import { PersistentNotification, subscribeNotifications, } from "../data/persistent_notification"; -import { computeDomain } from "../common/entity/compute_domain"; -import { classMap } from "lit-html/directives/class-map"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperIconItemElement } from "@polymer/paper-item/paper-icon-item"; -import { computeRTL } from "../common/util/compute_rtl"; -import { compare } from "../common/string/compare"; -import { getDefaultPanel } from "../data/panel"; +import { + ExternalConfig, + getExternalConfig, +} from "../external_app/external_config"; +import type { HomeAssistant, PanelInfo } from "../types"; +import "./ha-icon"; +import "./ha-menu-button"; +import "./user/ha-user-badge"; const SHOW_AFTER_SPACER = ["config", "developer-tools", "hassio"]; @@ -108,19 +106,25 @@ const computePanels = (hass: HomeAssistant): [PanelInfo[], PanelInfo[]] => { */ class HaSidebar extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; @property({ type: Boolean }) public alwaysExpand = false; + @property({ type: Boolean, reflect: true }) public expanded = false; @property() private _externalConfig?: ExternalConfig; + @property() private _notifications?: PersistentNotification[]; + // property used only in css // @ts-ignore @property({ type: Boolean, reflect: true }) private _rtl = false; private _mouseLeaveTimeout?: number; + private _tooltipHideTimeout?: number; + private _recentKeydownActiveUntil = 0; protected render() { diff --git a/src/components/ha-switch.ts b/src/components/ha-switch.ts index 89bae13454..0addeb5e1a 100644 --- a/src/components/ha-switch.ts +++ b/src/components/ha-switch.ts @@ -1,19 +1,18 @@ +import { ripple } from "@material/mwc-ripple/ripple-directive"; +import "@material/mwc-switch"; +import type { Switch } from "@material/mwc-switch"; +import { style } from "@material/mwc-switch/mwc-switch-css"; import { - customElement, - CSSResult, css, - query, + CSSResult, + customElement, html, property, + query, } from "lit-element"; -import "@material/mwc-switch"; -import { style } from "@material/mwc-switch/mwc-switch-css"; -// tslint:disable-next-line -import { Switch } from "@material/mwc-switch"; -import { Constructor } from "../types"; import { forwardHaptic } from "../data/haptics"; -import { ripple } from "@material/mwc-ripple/ripple-directive"; -// tslint:disable-next-line +import { Constructor } from "../types"; + const MwcSwitch = customElements.get("mwc-switch") as Constructor; @customElement("ha-switch") @@ -22,6 +21,7 @@ export class HaSwitch extends MwcSwitch { // Only set to true if the new value of the switch is applied right away when toggling. // Do not add haptic when a user is required to press save. @property({ type: Boolean }) public haptic = false; + @query("slot") private _slot!: HTMLSlotElement; protected firstUpdated() { diff --git a/src/components/ha-textarea.js b/src/components/ha-textarea.js index 70de137543..36aa884120 100644 --- a/src/components/ha-textarea.js +++ b/src/components/ha-textarea.js @@ -11,6 +11,7 @@ WebKit issue: https://bugs.webkit.org/show_bug.cgi?id=174629 import "@polymer/paper-input/paper-textarea"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaTextarea extends PolymerElement { diff --git a/src/components/ha-toast.ts b/src/components/ha-toast.ts index 9c57c0fd75..2b63661353 100644 --- a/src/components/ha-toast.ts +++ b/src/components/ha-toast.ts @@ -1,10 +1,14 @@ import "@polymer/paper-toast/paper-toast"; +import type { PaperToastElement } from "@polymer/paper-toast/paper-toast"; +import type { Constructor } from "../types"; -// tslint:disable-next-line -const PaperToast = customElements.get("paper-toast"); +const PaperToast = customElements.get("paper-toast") as Constructor< + PaperToastElement +>; export class HaToast extends PaperToast { private _resizeListener?: (obj: { matches: boolean }) => unknown; + private _mediaq?: MediaQueryList; public connectedCallback() { diff --git a/src/components/ha-vacuum-state.js b/src/components/ha-vacuum-state.js index 556dac2619..4688224380 100644 --- a/src/components/ha-vacuum-state.js +++ b/src/components/ha-vacuum-state.js @@ -1,7 +1,7 @@ import "@material/mwc-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import LocalizeMixin from "../mixins/localize-mixin"; const STATES_INTERCEPTABLE = { diff --git a/src/components/ha-water_heater-control.js b/src/components/ha-water_heater-control.js index 7fd7e55a2f..dc03b0507a 100644 --- a/src/components/ha-water_heater-control.js +++ b/src/components/ha-water_heater-control.js @@ -1,8 +1,8 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { EventsMixin } from "../mixins/events-mixin"; /* diff --git a/src/components/ha-water_heater-state.js b/src/components/ha-water_heater-state.js index 82c523614e..39766d0620 100644 --- a/src/components/ha-water_heater-state.js +++ b/src/components/ha-water_heater-state.js @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import LocalizeMixin from "../mixins/localize-mixin"; /* diff --git a/src/components/ha-yaml-editor.ts b/src/components/ha-yaml-editor.ts index 046fcd36ca..e49c0bd043 100644 --- a/src/components/ha-yaml-editor.ts +++ b/src/components/ha-yaml-editor.ts @@ -1,10 +1,16 @@ import { safeDump, safeLoad } from "js-yaml"; -import "./ha-code-editor"; -import { LitElement, property, customElement, html, query } from "lit-element"; +import { + customElement, + html, + LitElement, + property, + query, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../common/dom/fire_event"; import { afterNextRender } from "../common/util/render-status"; -// tslint:disable-next-line -import { HaCodeEditor } from "./ha-code-editor"; +import "./ha-code-editor"; +import type { HaCodeEditor } from "./ha-code-editor"; declare global { // for fire event @@ -13,12 +19,12 @@ declare global { } } -const isEmpty = (obj: object) => { +const isEmpty = (obj: object): boolean => { if (typeof obj !== "object") { return false; } for (const key in obj) { - if (obj.hasOwnProperty(key)) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { return false; } } @@ -28,13 +34,18 @@ const isEmpty = (obj: object) => { @customElement("ha-yaml-editor") export class HaYamlEditor extends LitElement { @property() public value?: any; + @property() public defaultValue?: any; + @property() public isValid = true; + @property() public label?: string; - @property() private _yaml: string = ""; + + @property() private _yaml = ""; + @query("ha-code-editor") private _editor?: HaCodeEditor; - public setValue(value) { + public setValue(value): void { try { this._yaml = value && !isEmpty(value) ? safeDump(value) : ""; } catch (err) { @@ -48,22 +59,18 @@ export class HaYamlEditor extends LitElement { }); } - protected firstUpdated() { + protected firstUpdated(): void { if (this.defaultValue) { this.setValue(this.defaultValue); } } - protected render() { + protected render(): TemplateResult { if (this._yaml === undefined) { - return; + return html``; } return html` - ${this.label - ? html` -

    ${this.label}

    - ` - : ""} + ${this.label ? html`

    ${this.label}

    ` : ""} - `; + return html`
    `; } protected firstUpdated(changedProps: PropertyValues): void { diff --git a/src/components/map/ha-locations-editor.ts b/src/components/map/ha-locations-editor.ts index fcf8c2b12a..6db95339ba 100644 --- a/src/components/map/ha-locations-editor.ts +++ b/src/components/map/ha-locations-editor.ts @@ -1,27 +1,27 @@ import { - LitElement, - property, - TemplateResult, - html, - CSSResult, - css, - customElement, - PropertyValues, -} from "lit-element"; -import { - Marker, - Map, + Circle, + DivIcon, DragEndEvent, LatLng, - Circle, + Map, + Marker, MarkerOptions, - DivIcon, } from "leaflet"; import { - setupLeafletMap, - LeafletModuleType, -} from "../../common/dom/setup-leaflet-map"; + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; +import { + LeafletModuleType, + setupLeafletMap, +} from "../../common/dom/setup-leaflet-map"; import { defaultRadiusColor } from "../../data/zone"; declare global { @@ -48,13 +48,17 @@ export interface MarkerLocation { @customElement("ha-locations-editor") export class HaLocationsEditor extends LitElement { @property() public locations?: MarkerLocation[]; + public fitZoom = 16; - // tslint:disable-next-line + // eslint-disable-next-line private Leaflet?: LeafletModuleType; - // tslint:disable-next-line + + // eslint-disable-next-line private _leafletMap?: Map; + private _locationMarkers?: { [key: string]: Marker | Circle }; + private _circles: { [key: string]: Circle } = {}; public fitMap(): void { @@ -93,9 +97,7 @@ export class HaLocationsEditor extends LitElement { } protected render(): TemplateResult { - return html` -
    - `; + return html`
    `; } protected firstUpdated(changedProps: PropertyValues): void { diff --git a/src/components/map/ha-map.ts b/src/components/map/ha-map.ts index a0c3075d48..bf2263f506 100644 --- a/src/components/map/ha-map.ts +++ b/src/components/map/ha-map.ts @@ -17,21 +17,27 @@ import { import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { computeStateName } from "../../common/entity/compute_state_name"; import { debounce } from "../../common/util/debounce"; -import { HomeAssistant } from "../../types"; import "../../panels/map/ha-entity-marker"; +import { HomeAssistant } from "../../types"; @customElement("ha-map") class HaMap extends LitElement { @property() public hass?: HomeAssistant; @property() public entities?: string[]; + @property() public darkMode = false; + @property() public zoom?: number; - // tslint:disable-next-line + + // eslint-disable-next-line private Leaflet?: LeafletModuleType; + private _leafletMap?: Map; + // @ts-ignore private _resizeObserver?: ResizeObserver; + private _debouncedResizeListener = debounce( () => { if (!this._leafletMap) { @@ -42,8 +48,11 @@ class HaMap extends LitElement { 100, false ); + private _mapItems: Array = []; + private _mapZones: Array = []; + private _connected = false; public connectedCallback(): void { @@ -76,9 +85,7 @@ class HaMap extends LitElement { if (!this.entities) { return html``; } - return html` -
    - `; + return html`
    `; } protected firstUpdated(changedProps: PropertyValues): void { diff --git a/src/components/paper-time-input.js b/src/components/paper-time-input.js index 620da4d7b1..bb8aef1036 100644 --- a/src/components/paper-time-input.js +++ b/src/components/paper-time-input.js @@ -16,11 +16,12 @@ Custom property | Description | Default `--paper-time-input-cotnainer` | Mixin applied to the inputs | `{}` `--paper-time-dropdown-input-cotnainer` | Mixin applied to the dropdown input | `{}` */ -import "@polymer/paper-input/paper-input"; -import "@polymer/paper-listbox/paper-listbox"; -import "@polymer/paper-item/paper-item"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-input"; +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; export class PaperTimeInput extends PolymerElement { diff --git a/src/components/state-history-chart-line.js b/src/components/state-history-chart-line.js index 4456b285cc..4cc1321475 100644 --- a/src/components/state-history-chart-line.js +++ b/src/components/state-history-chart-line.js @@ -1,11 +1,10 @@ import "@polymer/polymer/lib/utils/debounce"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "./entity/ha-chart-base"; - -import LocalizeMixin from "../mixins/localize-mixin"; import { formatDateTimeWithSeconds } from "../common/datetime/format_date_time"; +import LocalizeMixin from "../mixins/localize-mixin"; +import "./entity/ha-chart-base"; class StateHistoryChartLine extends LocalizeMixin(PolymerElement) { static get template() { diff --git a/src/components/state-history-chart-timeline.js b/src/components/state-history-chart-timeline.js index 0ef2c6194c..ada4aba6b4 100644 --- a/src/components/state-history-chart-timeline.js +++ b/src/components/state-history-chart-timeline.js @@ -1,13 +1,11 @@ import "@polymer/polymer/lib/utils/debounce"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import LocalizeMixin from "../mixins/localize-mixin"; - -import "./entity/ha-chart-base"; - import { formatDateTimeWithSeconds } from "../common/datetime/format_date_time"; import { computeRTL } from "../common/util/compute_rtl"; +import LocalizeMixin from "../mixins/localize-mixin"; +import "./entity/ha-chart-base"; class StateHistoryChartTimeline extends LocalizeMixin(PolymerElement) { static get template() { diff --git a/src/components/state-history-charts.js b/src/components/state-history-charts.js index 9f604b8079..2f87327481 100644 --- a/src/components/state-history-charts.js +++ b/src/components/state-history-charts.js @@ -1,12 +1,11 @@ import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import LocalizeMixin from "../mixins/localize-mixin"; import "./state-history-chart-line"; import "./state-history-chart-timeline"; -import LocalizeMixin from "../mixins/localize-mixin"; - class StateHistoryCharts extends LocalizeMixin(PolymerElement) { static get template() { return html` diff --git a/src/components/user/ha-user-badge.ts b/src/components/user/ha-user-badge.ts index f7685987f6..cd6dd3385d 100644 --- a/src/components/user/ha-user-badge.ts +++ b/src/components/user/ha-user-badge.ts @@ -1,15 +1,15 @@ import { - LitElement, - TemplateResult, css, CSSResult, - html, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; +import { toggleAttribute } from "../../common/dom/toggle_attribute"; import { User } from "../../data/user"; import { CurrentUser } from "../../types"; -import { toggleAttribute } from "../../common/dom/toggle_attribute"; const computeInitials = (name: string) => { if (!name) { @@ -34,9 +34,7 @@ class StateBadge extends LitElement { protected render(): TemplateResult { const user = this.user; const initials = user ? computeInitials(user.name) : "?"; - return html` - ${initials} - `; + return html` ${initials} `; } protected updated(changedProps) { diff --git a/src/components/user/ha-user-picker.ts b/src/components/user/ha-user-picker.ts index b76e8bff7e..ff5dc7c379 100644 --- a/src/components/user/ha-user-picker.ts +++ b/src/components/user/ha-user-picker.ts @@ -1,27 +1,30 @@ +import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-item-body"; -import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; import "@polymer/paper-listbox/paper-listbox"; -import memoizeOne from "memoize-one"; import { - LitElement, - TemplateResult, - html, css, CSSResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../types"; +import memoizeOne from "memoize-one"; import { fireEvent } from "../../common/dom/fire_event"; -import { User, fetchUsers } from "../../data/user"; import { compare } from "../../common/string/compare"; +import { fetchUsers, User } from "../../data/user"; +import { HomeAssistant } from "../../types"; class HaUserPicker extends LitElement { public hass?: HomeAssistant; + @property() public label?: string; + @property() public value?: string; + @property() public users?: User[]; private _sortedUsers = memoizeOne((users?: User[]) => { diff --git a/src/data/area_registry.ts b/src/data/area_registry.ts index ac9ed17504..63e8a38301 100644 --- a/src/data/area_registry.ts +++ b/src/data/area_registry.ts @@ -1,7 +1,7 @@ -import { createCollection, Connection } from "home-assistant-js-websocket"; -import { HomeAssistant } from "../types"; +import { Connection, createCollection } from "home-assistant-js-websocket"; import { compare } from "../common/string/compare"; import { debounce } from "../common/util/debounce"; +import { HomeAssistant } from "../types"; export interface AreaRegistryEntry { area_id: string; diff --git a/src/data/automation.ts b/src/data/automation.ts index 35b5d2b2e2..a2ff8e2654 100644 --- a/src/data/automation.ts +++ b/src/data/automation.ts @@ -1,9 +1,9 @@ import { - HassEntityBase, HassEntityAttributeBase, + HassEntityBase, } from "home-assistant-js-websocket"; -import { HomeAssistant } from "../types"; import { navigate } from "../common/navigate"; +import { HomeAssistant } from "../types"; import { DeviceCondition, DeviceTrigger } from "./device_automation"; import { Action } from "./script"; diff --git a/src/data/cached-history.ts b/src/data/cached-history.ts index 005610e33c..e7c772cec3 100644 --- a/src/data/cached-history.ts +++ b/src/data/cached-history.ts @@ -1,13 +1,13 @@ +import { HassEntity } from "home-assistant-js-websocket"; +import { LocalizeFunc } from "../common/translations/localize"; +import { HomeAssistant } from "../types"; import { computeHistory, fetchRecent, HistoryResult, - TimelineEntity, LineChartUnit, + TimelineEntity, } from "./history"; -import { HomeAssistant } from "../types"; -import { HassEntity } from "home-assistant-js-websocket"; -import { LocalizeFunc } from "../common/translations/localize"; export interface CacheConfig { refresh: number; diff --git a/src/data/camera.ts b/src/data/camera.ts index 0bfb827308..1897a3565e 100644 --- a/src/data/camera.ts +++ b/src/data/camera.ts @@ -1,5 +1,5 @@ -import { HomeAssistant, CameraEntity } from "../types"; import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise"; +import { CameraEntity, HomeAssistant } from "../types"; import { getSignedPath } from "./auth"; export const CAMERA_SUPPORT_ON_OFF = 1; diff --git a/src/data/climate.ts b/src/data/climate.ts index f61c98f8d0..a6fbea3bae 100644 --- a/src/data/climate.ts +++ b/src/data/climate.ts @@ -1,6 +1,6 @@ import { - HassEntityBase, HassEntityAttributeBase, + HassEntityBase, } from "home-assistant-js-websocket"; export type HvacMode = diff --git a/src/data/cloud.ts b/src/data/cloud.ts index 4d1ae35dcb..c642841584 100644 --- a/src/data/cloud.ts +++ b/src/data/cloud.ts @@ -1,7 +1,7 @@ -import { HomeAssistant } from "../types"; import { EntityFilter } from "../common/entity/entity_filter"; -import { AutomationConfig } from "./automation"; import { PlaceholderContainer } from "../panels/config/automation/thingtalk/dialog-thingtalk"; +import { HomeAssistant } from "../types"; +import { AutomationConfig } from "./automation"; interface CloudStatusBase { logged_in: boolean; diff --git a/src/data/config_flow.ts b/src/data/config_flow.ts index 7b922e6850..268e3e04ae 100644 --- a/src/data/config_flow.ts +++ b/src/data/config_flow.ts @@ -1,8 +1,8 @@ -import { HomeAssistant } from "../types"; -import { DataEntryFlowStep, DataEntryFlowProgress } from "./data_entry_flow"; -import { debounce } from "../common/util/debounce"; -import { getCollection, Connection } from "home-assistant-js-websocket"; +import { Connection, getCollection } from "home-assistant-js-websocket"; import { LocalizeFunc } from "../common/translations/localize"; +import { debounce } from "../common/util/debounce"; +import { HomeAssistant } from "../types"; +import { DataEntryFlowProgress, DataEntryFlowStep } from "./data_entry_flow"; export const DISCOVERY_SOURCES = ["unignore", "homekit", "ssdp", "zeroconf"]; diff --git a/src/data/conversation.ts b/src/data/conversation.ts index 6f57fe5cb2..10b9abe7ab 100644 --- a/src/data/conversation.ts +++ b/src/data/conversation.ts @@ -15,7 +15,7 @@ export interface AgentInfo { export const processText = ( hass: HomeAssistant, text: string, - // tslint:disable-next-line: variable-name + // eslint-disable-next-line: variable-name conversation_id: string ): Promise => hass.callWS({ diff --git a/src/data/core.ts b/src/data/core.ts index 8a6d9c099e..f02105ac19 100644 --- a/src/data/core.ts +++ b/src/data/core.ts @@ -1,5 +1,5 @@ -import { HomeAssistant } from "../types"; import { HassConfig } from "home-assistant-js-websocket"; +import { HomeAssistant } from "../types"; export interface ConfigUpdateValues { location_name: string; diff --git a/src/data/device_automation.ts b/src/data/device_automation.ts index 8cc269def7..03c58c36c1 100644 --- a/src/data/device_automation.ts +++ b/src/data/device_automation.ts @@ -1,5 +1,5 @@ -import { HomeAssistant } from "../types"; import { computeStateName } from "../common/entity/compute_state_name"; +import { HomeAssistant } from "../types"; export interface DeviceAutomation { device_id: string; @@ -10,8 +10,7 @@ export interface DeviceAutomation { event?: string; } -// tslint:disable-next-line: no-empty-interface -export interface DeviceAction extends DeviceAutomation {} +export type DeviceAction = DeviceAutomation; export interface DeviceCondition extends DeviceAutomation { condition: string; diff --git a/src/data/device_registry.ts b/src/data/device_registry.ts index 119231feec..da9919c6b4 100644 --- a/src/data/device_registry.ts +++ b/src/data/device_registry.ts @@ -1,8 +1,8 @@ -import { HomeAssistant } from "../types"; -import { createCollection, Connection } from "home-assistant-js-websocket"; -import { debounce } from "../common/util/debounce"; -import { EntityRegistryEntry } from "./entity_registry"; +import { Connection, createCollection } from "home-assistant-js-websocket"; import { computeStateName } from "../common/entity/compute_state_name"; +import { debounce } from "../common/util/debounce"; +import { HomeAssistant } from "../types"; +import { EntityRegistryEntry } from "./entity_registry"; export interface DeviceRegistryEntry { id: string; @@ -26,19 +26,6 @@ export interface DeviceRegistryEntryMutableParams { name_by_user?: string | null; } -export const computeDeviceName = ( - device: DeviceRegistryEntry, - hass: HomeAssistant, - entities?: EntityRegistryEntry[] | string[] -) => { - return ( - device.name_by_user || - device.name || - (entities && fallbackDeviceName(hass, entities)) || - hass.localize("ui.panel.config.devices.unnamed_device") - ); -}; - export const fallbackDeviceName = ( hass: HomeAssistant, entities: EntityRegistryEntry[] | string[] @@ -53,6 +40,19 @@ export const fallbackDeviceName = ( return undefined; }; +export const computeDeviceName = ( + device: DeviceRegistryEntry, + hass: HomeAssistant, + entities?: EntityRegistryEntry[] | string[] +) => { + return ( + device.name_by_user || + device.name || + (entities && fallbackDeviceName(hass, entities)) || + hass.localize("ui.panel.config.devices.unnamed_device") + ); +}; + export const devicesInArea = (devices: DeviceRegistryEntry[], areaId: string) => devices.filter((device) => device.area_id === areaId); diff --git a/src/data/entity_registry.ts b/src/data/entity_registry.ts index 18a1512b41..5abaa9084b 100644 --- a/src/data/entity_registry.ts +++ b/src/data/entity_registry.ts @@ -1,7 +1,7 @@ -import { createCollection, Connection } from "home-assistant-js-websocket"; -import { HomeAssistant } from "../types"; +import { Connection, createCollection } from "home-assistant-js-websocket"; import { computeStateName } from "../common/entity/compute_state_name"; import { debounce } from "../common/util/debounce"; +import { HomeAssistant } from "../types"; export interface EntityRegistryEntry { entity_id: string; diff --git a/src/data/ha-state-history-data.js b/src/data/ha-state-history-data.js index f4b8a449f1..bcce4509f8 100644 --- a/src/data/ha-state-history-data.js +++ b/src/data/ha-state-history-data.js @@ -1,11 +1,10 @@ import { timeOut } from "@polymer/polymer/lib/utils/async"; import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import LocalizeMixin from "../mixins/localize-mixin"; - -import { computeHistory, fetchDate } from "./history"; import { getRecent, getRecentWithCache } from "./cached-history"; +import { computeHistory, fetchDate } from "./history"; /* * @appliesMixin LocalizeMixin diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index 5599913bb8..ab4a1b0fcc 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -1,5 +1,5 @@ import { HomeAssistant } from "../../types"; -import { HassioResponse, hassioApiResultExtractor } from "./common"; +import { hassioApiResultExtractor, HassioResponse } from "./common"; export interface HassioAddonInfo { name: string; diff --git a/src/data/hassio/hardware.ts b/src/data/hassio/hardware.ts index 98a4b3ca57..345bf0d1ba 100644 --- a/src/data/hassio/hardware.ts +++ b/src/data/hassio/hardware.ts @@ -1,5 +1,5 @@ import { HomeAssistant } from "../../types"; -import { HassioResponse, hassioApiResultExtractor } from "./common"; +import { hassioApiResultExtractor, HassioResponse } from "./common"; export interface HassioHardwareAudioDevice { device?: string | null; diff --git a/src/data/hassio/host.ts b/src/data/hassio/host.ts index 4eb473b342..af0a647902 100644 --- a/src/data/hassio/host.ts +++ b/src/data/hassio/host.ts @@ -1,5 +1,5 @@ import { HomeAssistant } from "../../types"; -import { HassioResponse, hassioApiResultExtractor } from "./common"; +import { hassioApiResultExtractor, HassioResponse } from "./common"; export type HassioHostInfo = any; diff --git a/src/data/hassio/snapshot.ts b/src/data/hassio/snapshot.ts index 1dabe53559..20d99cc5d4 100644 --- a/src/data/hassio/snapshot.ts +++ b/src/data/hassio/snapshot.ts @@ -1,5 +1,5 @@ import { HomeAssistant } from "../../types"; -import { HassioResponse, hassioApiResultExtractor } from "./common"; +import { hassioApiResultExtractor, HassioResponse } from "./common"; export interface HassioSnapshot { slug: string; diff --git a/src/data/hassio/supervisor.ts b/src/data/hassio/supervisor.ts index bed2c34d0a..ccd5ef4d52 100644 --- a/src/data/hassio/supervisor.ts +++ b/src/data/hassio/supervisor.ts @@ -1,5 +1,5 @@ import { HomeAssistant, PanelInfo } from "../../types"; -import { HassioResponse, hassioApiResultExtractor } from "./common"; +import { hassioApiResultExtractor, HassioResponse } from "./common"; export type HassioHomeAssistantInfo = any; export type HassioSupervisorInfo = any; diff --git a/src/data/history.ts b/src/data/history.ts index 1055ed0472..adfe9eba00 100644 --- a/src/data/history.ts +++ b/src/data/history.ts @@ -1,9 +1,9 @@ -import { computeStateName } from "../common/entity/compute_state_name"; -import { computeStateDomain } from "../common/entity/compute_state_domain"; import { HassEntity } from "home-assistant-js-websocket"; -import { HomeAssistant } from "../types"; -import { LocalizeFunc } from "../common/translations/localize"; import { computeStateDisplay } from "../common/entity/compute_state_display"; +import { computeStateDomain } from "../common/entity/compute_state_domain"; +import { computeStateName } from "../common/entity/compute_state_name"; +import { LocalizeFunc } from "../common/translations/localize"; +import { HomeAssistant } from "../types"; const DOMAINS_USE_LAST_UPDATED = ["climate", "water_heater"]; const LINE_ATTRIBUTES_TO_KEEP = [ diff --git a/src/data/lovelace.ts b/src/data/lovelace.ts index 4f62a24224..234825d018 100644 --- a/src/data/lovelace.ts +++ b/src/data/lovelace.ts @@ -1,10 +1,10 @@ -import { HomeAssistant } from "../types"; import { Connection, getCollection, HassEventBase, } from "home-assistant-js-websocket"; import { HASSDomEvent } from "../common/dom/fire_event"; +import { HomeAssistant } from "../types"; export interface LovelacePanelConfig { mode: "yaml" | "storage"; diff --git a/src/data/onboarding.ts b/src/data/onboarding.ts index 5ac72b2ba1..9fb5b309e1 100644 --- a/src/data/onboarding.ts +++ b/src/data/onboarding.ts @@ -1,7 +1,7 @@ -import { handleFetchPromise } from "../util/hass-call-api"; import { HomeAssistant } from "../types"; +import { handleFetchPromise } from "../util/hass-call-api"; -// tslint:disable-next-line: no-empty-interface +// eslint-disable-next-line @typescript-eslint/no-empty-interface export interface OnboardingCoreConfigStepResponse {} export interface OnboardingUserStepResponse { diff --git a/src/data/panel.ts b/src/data/panel.ts index 23abea278b..24e6e31627 100644 --- a/src/data/panel.ts +++ b/src/data/panel.ts @@ -1,24 +1,27 @@ -import { HomeAssistant, PanelInfo } from "../types"; import { fireEvent } from "../common/dom/fire_event"; +import { HomeAssistant, PanelInfo } from "../types"; /** Panel to show when no panel is picked. */ export const DEFAULT_PANEL = "lovelace"; -export const getStorageDefaultPanelUrlPath = () => +export const getStorageDefaultPanelUrlPath = (): string => localStorage.defaultPanel ? JSON.parse(localStorage.defaultPanel) : DEFAULT_PANEL; -export const setDefaultPanel = (element: HTMLElement, urlPath: string) => { +export const setDefaultPanel = ( + element: HTMLElement, + urlPath: string +): void => { fireEvent(element, "hass-default-panel", { defaultPanel: urlPath }); }; -export const getDefaultPanel = (hass: HomeAssistant) => +export const getDefaultPanel = (hass: HomeAssistant): PanelInfo => hass.panels[hass.defaultPanel]; export const getPanelTitle = (hass: HomeAssistant): string | undefined => { if (!hass.panels) { - return; + return undefined; } const panel = Object.values(hass.panels).find( @@ -26,7 +29,7 @@ export const getPanelTitle = (hass: HomeAssistant): string | undefined => { ); if (!panel) { - return; + return undefined; } if (panel.url_path === "lovelace") { diff --git a/src/data/persistent_notification.ts b/src/data/persistent_notification.ts index 1bfc33bd34..3407efe95e 100644 --- a/src/data/persistent_notification.ts +++ b/src/data/persistent_notification.ts @@ -1,6 +1,6 @@ import { - createCollection, Connection, + createCollection, HassEntity, } from "home-assistant-js-websocket"; diff --git a/src/data/scene.ts b/src/data/scene.ts index 6e3e65a66f..c0245a4f24 100644 --- a/src/data/scene.ts +++ b/src/data/scene.ts @@ -1,10 +1,9 @@ import { - HassEntityBase, HassEntityAttributeBase, + HassEntityBase, } from "home-assistant-js-websocket"; - -import { HomeAssistant, ServiceCallResponse } from "../types"; import { navigate } from "../common/navigate"; +import { HomeAssistant, ServiceCallResponse } from "../types"; export const SCENE_IGNORED_DOMAINS = [ "sensor", diff --git a/src/data/script.ts b/src/data/script.ts index 4315e1cd06..5f027ce413 100644 --- a/src/data/script.ts +++ b/src/data/script.ts @@ -1,11 +1,11 @@ -import { HomeAssistant } from "../types"; -import { computeObjectId } from "../common/entity/compute_object_id"; -import { Condition } from "./automation"; import { - HassEntityBase, HassEntityAttributeBase, + HassEntityBase, } from "home-assistant-js-websocket"; +import { computeObjectId } from "../common/entity/compute_object_id"; import { navigate } from "../common/navigate"; +import { HomeAssistant } from "../types"; +import { Condition } from "./automation"; export interface ScriptEntity extends HassEntityBase { attributes: HassEntityAttributeBase & { diff --git a/src/data/timer.ts b/src/data/timer.ts index e55b936d15..8b54020a7d 100644 --- a/src/data/timer.ts +++ b/src/data/timer.ts @@ -1,6 +1,6 @@ import { - HassEntityBase, HassEntityAttributeBase, + HassEntityBase, } from "home-assistant-js-websocket"; export type TimerEntity = HassEntityBase & { diff --git a/src/data/user.ts b/src/data/user.ts index 905b138635..bd35ff1896 100644 --- a/src/data/user.ts +++ b/src/data/user.ts @@ -30,7 +30,7 @@ export const fetchUsers = async (hass: HomeAssistant) => export const createUser = async ( hass: HomeAssistant, name: string, - // tslint:disable-next-line: variable-name + // eslint-disable-next-line: variable-name group_ids?: User["group_ids"] ) => hass.callWS<{ user: User }>({ diff --git a/src/data/weather.ts b/src/data/weather.ts index 62a4ed423d..3c7b2d351a 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -44,7 +44,7 @@ export const cardinalDirections = [ const getWindBearingText = (degree: string): string => { const degreenum = parseInt(degree, 10); if (isFinite(degreenum)) { - // tslint:disable-next-line: no-bitwise + // eslint-disable-next-line no-bitwise return cardinalDirections[(((degreenum + 11.25) / 22.5) | 0) % 16]; } return degree; diff --git a/src/data/ws-panels.ts b/src/data/ws-panels.ts index a38c4ed252..984b2459cb 100644 --- a/src/data/ws-panels.ts +++ b/src/data/ws-panels.ts @@ -1,4 +1,4 @@ -import { createCollection, Connection } from "home-assistant-js-websocket"; +import { Connection, createCollection } from "home-assistant-js-websocket"; import { Panels } from "../types"; const fetchPanels = (conn) => diff --git a/src/data/ws-themes.ts b/src/data/ws-themes.ts index ed559e45c5..8f6d947e76 100644 --- a/src/data/ws-themes.ts +++ b/src/data/ws-themes.ts @@ -1,4 +1,4 @@ -import { createCollection, Connection } from "home-assistant-js-websocket"; +import { Connection, createCollection } from "home-assistant-js-websocket"; import { Themes } from "../types"; const fetchThemes = (conn) => diff --git a/src/data/ws-user.ts b/src/data/ws-user.ts index 2e171b8dab..8d8f2d1783 100644 --- a/src/data/ws-user.ts +++ b/src/data/ws-user.ts @@ -1,7 +1,7 @@ import { - getUser, Connection, getCollection, + getUser, } from "home-assistant-js-websocket"; import { CurrentUser } from "../types"; diff --git a/src/data/zone.ts b/src/data/zone.ts index d7d2306457..92151c4a58 100644 --- a/src/data/zone.ts +++ b/src/data/zone.ts @@ -1,9 +1,9 @@ -import { HomeAssistant } from "../types"; import { navigate } from "../common/navigate"; +import { HomeAssistant } from "../types"; export const defaultRadiusColor = "#FF9800"; -export const homeRadiusColor: string = "#03a9f4"; -export const passiveRadiusColor: string = "#9b9b9b"; +export const homeRadiusColor = "#03a9f4"; +export const passiveRadiusColor = "#9b9b9b"; export interface Zone { id: string; diff --git a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts index e60552b32b..bd4270ca67 100644 --- a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts +++ b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts @@ -1,36 +1,38 @@ -import { - LitElement, - html, - css, - CSSResult, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-input/paper-input"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../components/dialog/ha-paper-dialog"; import "../../components/ha-switch"; - -import { HomeAssistant } from "../../types"; -import { ConfigEntrySystemOptionsDialogParams } from "./show-dialog-config-entry-system-options"; +import type { HaSwitch } from "../../components/ha-switch"; import { getConfigEntrySystemOptions, updateConfigEntrySystemOptions, } from "../../data/config_entries"; -import { PolymerChangedEvent } from "../../polymer-types"; +import type { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../components/ha-switch"; +import type { HomeAssistant } from "../../types"; +import { ConfigEntrySystemOptionsDialogParams } from "./show-dialog-config-entry-system-options"; @customElement("dialog-config-entry-system-options") class DialogConfigEntrySystemOptions extends LitElement { @property() public hass!: HomeAssistant; + @property() private _disableNewEntities!: boolean; + @property() private _error?: string; + @property() private _params?: ConfigEntrySystemOptionsDialogParams; + @property() private _loading?: boolean; + @property() private _submitting?: boolean; public async showDialog( @@ -77,9 +79,7 @@ class DialogConfigEntrySystemOptions extends LitElement { ` : html` ${this._error - ? html` -
    ${this._error}
    - ` + ? html`
    ${this._error}
    ` : ""}
    { @@ -184,9 +189,7 @@ class DataEntryFlowDialog extends LitElement { ` : this._devices === undefined || this._areas === undefined ? // When it's a create entry result, we will fetch device & area registry - html` - - ` + html` ` : html` - ` + ? html` ` : ""; }, @@ -63,9 +61,7 @@ export const showConfigFlowDialog = ( step.description_placeholders ); return description - ? html` - - ` + ? html` ` : ""; }, @@ -99,9 +95,7 @@ export const showConfigFlowDialog = ( )}

    ${description - ? html` - - ` + ? html` ` : ""} `; }, @@ -109,16 +103,15 @@ export const showConfigFlowDialog = ( renderCreateEntryDescription(hass, step) { const description = localizeKey( hass.localize, - `component.${step.handler}.config.create_entry.${step.description || - "default"}`, + `component.${step.handler}.config.create_entry.${ + step.description || "default" + }`, step.description_placeholders ); return html` ${description - ? html` - - ` + ? html` ` : ""}

    ${hass.localize( diff --git a/src/dialogs/config-flow/show-dialog-data-entry-flow.ts b/src/dialogs/config-flow/show-dialog-data-entry-flow.ts index 490a6becc0..401c2a43e7 100644 --- a/src/dialogs/config-flow/show-dialog-data-entry-flow.ts +++ b/src/dialogs/config-flow/show-dialog-data-entry-flow.ts @@ -1,14 +1,14 @@ import { TemplateResult } from "lit-html"; import { fireEvent } from "../../common/dom/fire_event"; -import { HomeAssistant } from "../../types"; +import { HaFormSchema } from "../../components/ha-form/ha-form"; import { + DataEntryFlowStep, + DataEntryFlowStepAbort, DataEntryFlowStepCreateEntry, DataEntryFlowStepExternal, DataEntryFlowStepForm, - DataEntryFlowStep, - DataEntryFlowStepAbort, } from "../../data/data_entry_flow"; -import { HaFormSchema } from "../../components/ha-form/ha-form"; +import { HomeAssistant } from "../../types"; export interface FlowConfig { loadDevicesAndAreas: boolean; diff --git a/src/dialogs/config-flow/show-dialog-options-flow.ts b/src/dialogs/config-flow/show-dialog-options-flow.ts index 493b1d2b77..d2ccebecc2 100644 --- a/src/dialogs/config-flow/show-dialog-options-flow.ts +++ b/src/dialogs/config-flow/show-dialog-options-flow.ts @@ -1,16 +1,16 @@ -import { - fetchOptionsFlow, - handleOptionsFlowStep, - deleteOptionsFlow, - createOptionsFlow, -} from "../../data/options_flow"; import { html } from "lit-element"; import { localizeKey } from "../../common/translations/localize"; -import { - showFlowDialog, - loadDataEntryFlowDialog, -} from "./show-dialog-data-entry-flow"; import { ConfigEntry } from "../../data/config_entries"; +import { + createOptionsFlow, + deleteOptionsFlow, + fetchOptionsFlow, + handleOptionsFlowStep, +} from "../../data/options_flow"; +import { + loadDataEntryFlowDialog, + showFlowDialog, +} from "./show-dialog-data-entry-flow"; export const loadOptionsFlowDialog = loadDataEntryFlowDialog; @@ -38,9 +38,7 @@ export const showOptionsFlowDialog = ( ); return description - ? html` - - ` + ? html` ` : ""; }, @@ -59,9 +57,7 @@ export const showOptionsFlowDialog = ( step.description_placeholders ); return description - ? html` - - ` + ? html` ` : ""; }, diff --git a/src/dialogs/config-flow/step-flow-abort.ts b/src/dialogs/config-flow/step-flow-abort.ts index 211fa6c522..7309ff2226 100644 --- a/src/dialogs/config-flow/step-flow-abort.ts +++ b/src/dialogs/config-flow/step-flow-abort.ts @@ -1,18 +1,17 @@ -import { - LitElement, - TemplateResult, - html, - customElement, - property, - CSSResult, -} from "lit-element"; import "@material/mwc-button"; - +import { + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; import { DataEntryFlowStepAbort } from "../../data/data_entry_flow"; import { HomeAssistant } from "../../types"; -import { fireEvent } from "../../common/dom/fire_event"; -import { configFlowContentStyles } from "./styles"; import { FlowConfig } from "./show-dialog-data-entry-flow"; +import { configFlowContentStyles } from "./styles"; @customElement("step-flow-abort") class StepFlowAbort extends LitElement { diff --git a/src/dialogs/config-flow/step-flow-create-entry.ts b/src/dialogs/config-flow/step-flow-create-entry.ts index fe6d1ffeab..ee12067b20 100644 --- a/src/dialogs/config-flow/step-flow-create-entry.ts +++ b/src/dialogs/config-flow/step-flow-create-entry.ts @@ -1,27 +1,27 @@ -import { - LitElement, - TemplateResult, - html, - customElement, - property, - CSSResultArray, - css, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; -import "../../components/ha-area-picker"; -import { HomeAssistant } from "../../types"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; -import { configFlowContentStyles } from "./styles"; +import "../../components/ha-area-picker"; +import { DataEntryFlowStepCreateEntry } from "../../data/data_entry_flow"; import { DeviceRegistryEntry, updateDeviceRegistryEntry, } from "../../data/device_registry"; -import { DataEntryFlowStepCreateEntry } from "../../data/data_entry_flow"; -import { FlowConfig } from "./show-dialog-data-entry-flow"; +import { HomeAssistant } from "../../types"; import { showAlertDialog } from "../generic/show-dialog-box"; +import { FlowConfig } from "./show-dialog-data-entry-flow"; +import { configFlowContentStyles } from "./styles"; @customElement("step-flow-create-entry") class StepFlowCreateEntry extends LitElement { diff --git a/src/dialogs/config-flow/step-flow-external.ts b/src/dialogs/config-flow/step-flow-external.ts index fcc3efa51e..757399763d 100644 --- a/src/dialogs/config-flow/step-flow-external.ts +++ b/src/dialogs/config-flow/step-flow-external.ts @@ -1,22 +1,21 @@ -import { - LitElement, - TemplateResult, - html, - customElement, - property, - CSSResultArray, - css, -} from "lit-element"; import "@material/mwc-button"; - -import { HomeAssistant } from "../../types"; -import { fireEvent } from "../../common/dom/fire_event"; -import { configFlowContentStyles } from "./styles"; import { - DataEntryFlowStepExternal, + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; +import { DataEntryFlowProgressedEvent, + DataEntryFlowStepExternal, } from "../../data/data_entry_flow"; +import { HomeAssistant } from "../../types"; import { FlowConfig } from "./show-dialog-data-entry-flow"; +import { configFlowContentStyles } from "./styles"; @customElement("step-flow-external") class StepFlowExternal extends LitElement { diff --git a/src/dialogs/config-flow/step-flow-form.ts b/src/dialogs/config-flow/step-flow-form.ts index adf6a4ea5c..5fe6c98cd5 100644 --- a/src/dialogs/config-flow/step-flow-form.ts +++ b/src/dialogs/config-flow/step-flow-form.ts @@ -1,27 +1,25 @@ +import "@material/mwc-button"; +import "@polymer/paper-spinner/paper-spinner"; +import "@polymer/paper-tooltip/paper-tooltip"; import { - LitElement, - TemplateResult, - html, - CSSResultArray, css, + CSSResultArray, customElement, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; -import "@polymer/paper-tooltip/paper-tooltip"; -import "@polymer/paper-spinner/paper-spinner"; - -import "../../components/ha-form/ha-form"; -import "../../components/ha-markdown"; -import "../../resources/ha-style"; -import { HomeAssistant } from "../../types"; import { fireEvent } from "../../common/dom/fire_event"; +import "../../components/ha-form/ha-form"; +import type { HaFormSchema } from "../../components/ha-form/ha-form"; +import "../../components/ha-markdown"; +import type { DataEntryFlowStepForm } from "../../data/data_entry_flow"; +import "../../resources/ha-style"; +import type { HomeAssistant } from "../../types"; +import type { FlowConfig } from "./show-dialog-data-entry-flow"; import { configFlowContentStyles } from "./styles"; -import { DataEntryFlowStepForm } from "../../data/data_entry_flow"; -import { FlowConfig } from "./show-dialog-data-entry-flow"; -// tslint:disable-next-line -import { HaFormSchema } from "../../components/ha-form/ha-form"; @customElement("step-flow-form") class StepFlowForm extends LitElement { @@ -63,9 +61,7 @@ class StepFlowForm extends LitElement {

  • ${this._errorMsg - ? html` -
    ${this._errorMsg}
    - ` + ? html`
    ${this._errorMsg}
    ` : ""} ${this.flowConfig.renderShowFormStepDescription(this.hass, this.step)} - ${this.label - ? html` -
    ${this.label}
    - ` - : ""} + ${this.label ? html`
    ${this.label}
    ` : ""}
    `; diff --git a/src/dialogs/config-flow/step-flow-pick-handler.ts b/src/dialogs/config-flow/step-flow-pick-handler.ts index b6082abfd9..b060069e31 100644 --- a/src/dialogs/config-flow/step-flow-pick-handler.ts +++ b/src/dialogs/config-flow/step-flow-pick-handler.ts @@ -1,3 +1,7 @@ +import "@polymer/paper-item/paper-icon-item"; +import "@polymer/paper-item/paper-item-body"; +import "@polymer/paper-spinner/paper-spinner-lite"; +import * as Fuse from "fuse.js"; import { css, CSSResult, @@ -7,20 +11,15 @@ import { property, TemplateResult, } from "lit-element"; -import "@polymer/paper-spinner/paper-spinner-lite"; -import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-item/paper-item-body"; -import { HomeAssistant } from "../../types"; -import { fireEvent } from "../../common/dom/fire_event"; -import memoizeOne from "memoize-one"; -import * as Fuse from "fuse.js"; - -import "../../components/ha-icon-next"; -import "../../common/search/search-input"; +import { classMap } from "lit-html/directives/class-map"; import { styleMap } from "lit-html/directives/style-map"; +import memoizeOne from "memoize-one"; +import { fireEvent } from "../../common/dom/fire_event"; +import "../../common/search/search-input"; +import "../../components/ha-icon-next"; +import { HomeAssistant } from "../../types"; import { FlowConfig } from "./show-dialog-data-entry-flow"; import { configFlowContentStyles } from "./styles"; -import { classMap } from "lit-html/directives/class-map"; interface HandlerObj { name: string; @@ -32,9 +31,13 @@ class StepFlowPickHandler extends LitElement { public flowConfig!: FlowConfig; @property() public hass!: HomeAssistant; + @property() public handlers!: string[]; + @property() public showAdvanced?: boolean; + @property() private filter?: string; + private _width?: number; private _getHandlers = memoizeOne((h: string[], filter?: string) => { diff --git a/src/dialogs/device-registry-detail/dialog-device-registry-detail.ts b/src/dialogs/device-registry-detail/dialog-device-registry-detail.ts index c53a6b933c..592299c605 100644 --- a/src/dialogs/device-registry-detail/dialog-device-registry-detail.ts +++ b/src/dialogs/device-registry-detail/dialog-device-registry-detail.ts @@ -1,35 +1,36 @@ +import "@material/mwc-button/mwc-button"; +import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; +import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-input"; +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-listbox/paper-listbox"; import { - LitElement, - html, css, CSSResult, - TemplateResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; -import "@polymer/paper-input/paper-input"; -import "@polymer/paper-listbox/paper-listbox"; -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-item/paper-item"; -import "@material/mwc-button/mwc-button"; - import "../../components/dialog/ha-paper-dialog"; import "../../components/ha-area-picker"; - -import { DeviceRegistryDetailDialogParams } from "./show-dialog-device-registry-detail"; +import { computeDeviceName } from "../../data/device_registry"; import { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; import { HomeAssistant } from "../../types"; -import { computeDeviceName } from "../../data/device_registry"; +import { DeviceRegistryDetailDialogParams } from "./show-dialog-device-registry-detail"; @customElement("dialog-device-registry-detail") class DialogDeviceRegistryDetail extends LitElement { @property() public hass!: HomeAssistant; @property() private _nameByUser!: string; + @property() private _error?: string; + @property() private _params?: DeviceRegistryDetailDialogParams; + @property() private _areaId?: string; private _submitting?: boolean; @@ -60,11 +61,7 @@ class DialogDeviceRegistryDetail extends LitElement { ${computeDeviceName(device, this.hass)} - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    { diff --git a/src/dialogs/generic/dialog-box.ts b/src/dialogs/generic/dialog-box.ts index 1301347f7e..1e2be3dea4 100644 --- a/src/dialogs/generic/dialog-box.ts +++ b/src/dialogs/generic/dialog-box.ts @@ -1,28 +1,28 @@ -import { - LitElement, - html, - css, - CSSResult, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-input/paper-input"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; import "../../components/dialog/ha-paper-dialog"; import "../../components/ha-switch"; - -import { HomeAssistant } from "../../types"; -import { DialogParams } from "./show-dialog-box"; import { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; -import { classMap } from "lit-html/directives/class-map"; +import { HomeAssistant } from "../../types"; +import { DialogParams } from "./show-dialog-box"; @customElement("dialog-box") class DialogBox extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: DialogParams; + @property() private _value?: string; public async showDialog(params: DialogParams): Promise { @@ -84,13 +84,13 @@ class DialogBox extends LitElement {
    ${confirmPrompt && - html` - - ${this._params.dismissText - ? this._params.dismissText - : this.hass.localize("ui.dialogs.generic.cancel")} - - `} + html` + + ${this._params.dismissText + ? this._params.dismissText + : this.hass.localize("ui.dialogs.generic.cancel")} + + `} ${this._params.confirmText ? this._params.confirmText diff --git a/src/dialogs/generic/show-dialog-box.ts b/src/dialogs/generic/show-dialog-box.ts index 8b05578bd7..86c5cfee8b 100644 --- a/src/dialogs/generic/show-dialog-box.ts +++ b/src/dialogs/generic/show-dialog-box.ts @@ -1,5 +1,5 @@ -import { fireEvent } from "../../common/dom/fire_event"; import { TemplateResult } from "lit-html"; +import { fireEvent } from "../../common/dom/fire_event"; interface BaseDialogParams { confirmText?: string; diff --git a/src/dialogs/ha-more-info-dialog.js b/src/dialogs/ha-more-info-dialog.js index 135855db5b..f09a944540 100644 --- a/src/dialogs/ha-more-info-dialog.js +++ b/src/dialogs/ha-more-info-dialog.js @@ -1,15 +1,12 @@ import "@polymer/paper-dialog-behavior/paper-dialog-shared-styles"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../resources/ha-style"; - -import "./more-info/more-info-controls"; - import { computeStateDomain } from "../common/entity/compute_state_domain"; - import DialogMixin from "../mixins/dialog-mixin"; +import "../resources/ha-style"; +import "./more-info/more-info-controls"; /* * @appliesMixin DialogMixin diff --git a/src/dialogs/ha-store-auth-card.js b/src/dialogs/ha-store-auth-card.js index d63d805498..28df7c7249 100644 --- a/src/dialogs/ha-store-auth-card.js +++ b/src/dialogs/ha-store-auth-card.js @@ -1,10 +1,9 @@ import "@polymer/paper-card/paper-card"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { enableWrite } from "../common/auth/token_storage"; import LocalizeMixin from "../mixins/localize-mixin"; - import "../resources/ha-style"; class HaStoreAuth extends LocalizeMixin(PolymerElement) { diff --git a/src/dialogs/more-info/controls/more-info-alarm_control_panel.js b/src/dialogs/more-info/controls/more-info-alarm_control_panel.js index 64ab1d8ba5..016f72e118 100644 --- a/src/dialogs/more-info/controls/more-info-alarm_control_panel.js +++ b/src/dialogs/more-info/controls/more-info-alarm_control_panel.js @@ -1,11 +1,11 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import LocalizeMixin from "../../../mixins/localize-mixin"; import { fireEvent } from "../../../common/dom/fire_event"; +import LocalizeMixin from "../../../mixins/localize-mixin"; class MoreInfoAlarmControlPanel extends LocalizeMixin(PolymerElement) { static get template() { diff --git a/src/dialogs/more-info/controls/more-info-automation.ts b/src/dialogs/more-info/controls/more-info-automation.ts index 08b53b17cf..7e2651ec24 100644 --- a/src/dialogs/more-info/controls/more-info-automation.ts +++ b/src/dialogs/more-info/controls/more-info-automation.ts @@ -1,23 +1,22 @@ -import { - LitElement, - html, - TemplateResult, - CSSResult, - css, - property, - customElement, -} from "lit-element"; -import { HassEntity } from "home-assistant-js-websocket"; import "@material/mwc-button"; - +import { HassEntity } from "home-assistant-js-websocket"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/ha-relative-time"; - -import { HomeAssistant } from "../../../types"; import { triggerAutomation } from "../../../data/automation"; +import { HomeAssistant } from "../../../types"; @customElement("more-info-automation") class MoreInfoAutomation extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected render(): TemplateResult { diff --git a/src/dialogs/more-info/controls/more-info-camera.ts b/src/dialogs/more-info/controls/more-info-camera.ts index 3dda7275b0..55623f58d5 100644 --- a/src/dialogs/more-info/controls/more-info-camera.ts +++ b/src/dialogs/more-info/controls/more-info-camera.ts @@ -1,31 +1,31 @@ +import "@polymer/paper-checkbox/paper-checkbox"; +import type { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; import { + css, + CSSResult, + html, + LitElement, property, PropertyValues, - LitElement, TemplateResult, - html, - CSSResult, - css, } from "lit-element"; - -import { HomeAssistant, CameraEntity } from "../../../types"; +import { supportsFeature } from "../../../common/entity/supports-feature"; +import "../../../components/ha-camera-stream"; import { - CAMERA_SUPPORT_STREAM, CameraPreferences, + CAMERA_SUPPORT_STREAM, fetchCameraPrefs, updateCameraPrefs, } from "../../../data/camera"; -import { supportsFeature } from "../../../common/entity/supports-feature"; -import "../../../components/ha-camera-stream"; -import "@polymer/paper-checkbox/paper-checkbox"; -// Not duplicate import, it's for typing -// tslint:disable-next-line -import { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; +import type { CameraEntity, HomeAssistant } from "../../../types"; class MoreInfoCamera extends LitElement { @property() public hass?: HomeAssistant; + @property() public stateObj?: CameraEntity; + @property() private _cameraPrefs?: CameraPreferences; + @property() private _attached = false; public connectedCallback() { diff --git a/src/dialogs/more-info/controls/more-info-climate.ts b/src/dialogs/more-info/controls/more-info-climate.ts index bb1a4b2275..be4526fd8f 100644 --- a/src/dialogs/more-info/controls/more-info-climate.ts +++ b/src/dialogs/more-info/controls/more-info-climate.ts @@ -2,41 +2,40 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { - LitElement, - html, - TemplateResult, - CSSResult, css, + CSSResult, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../../../components/ha-climate-control"; -import "../../../components/ha-paper-slider"; -import "../../../components/ha-paper-dropdown-menu"; -import "../../../components/ha-switch"; - +import { classMap } from "lit-html/directives/class-map"; +import { fireEvent } from "../../../common/dom/fire_event"; import { supportsFeature } from "../../../common/entity/supports-feature"; - import { computeRTLDirection } from "../../../common/util/compute_rtl"; -import { HomeAssistant } from "../../../types"; +import "../../../components/ha-climate-control"; +import "../../../components/ha-paper-dropdown-menu"; +import "../../../components/ha-paper-slider"; +import "../../../components/ha-switch"; import { ClimateEntity, + CLIMATE_SUPPORT_AUX_HEAT, + CLIMATE_SUPPORT_FAN_MODE, + CLIMATE_SUPPORT_PRESET_MODE, + CLIMATE_SUPPORT_SWING_MODE, + CLIMATE_SUPPORT_TARGET_HUMIDITY, CLIMATE_SUPPORT_TARGET_TEMPERATURE, CLIMATE_SUPPORT_TARGET_TEMPERATURE_RANGE, - CLIMATE_SUPPORT_TARGET_HUMIDITY, - CLIMATE_SUPPORT_FAN_MODE, - CLIMATE_SUPPORT_SWING_MODE, - CLIMATE_SUPPORT_AUX_HEAT, - CLIMATE_SUPPORT_PRESET_MODE, compareClimateHvacModes, } from "../../../data/climate"; -import { fireEvent } from "../../../common/dom/fire_event"; -import { classMap } from "lit-html/directives/class-map"; +import { HomeAssistant } from "../../../types"; class MoreInfoClimate extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: ClimateEntity; + private _resizeDebounce?: number; protected render(): TemplateResult { diff --git a/src/dialogs/more-info/controls/more-info-configurator.js b/src/dialogs/more-info/controls/more-info-configurator.js index 6e8b060c1e..8d09e02953 100644 --- a/src/dialogs/more-info/controls/more-info-configurator.js +++ b/src/dialogs/more-info/controls/more-info-configurator.js @@ -1,11 +1,11 @@ +import "@material/mwc-button"; import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/iron-input/iron-input"; -import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../components/ha-markdown"; class MoreInfoConfigurator extends PolymerElement { @@ -110,7 +110,7 @@ class MoreInfoConfigurator extends PolymerElement { fieldInput: { type: Object, - value: function() { + value: function () { return {}; }, }, @@ -135,10 +135,10 @@ class MoreInfoConfigurator extends PolymerElement { this.isConfiguring = true; this.hass.callService("configurator", "configure", data).then( - function() { + function () { this.isConfiguring = false; }.bind(this), - function() { + function () { this.isConfiguring = false; }.bind(this) ); diff --git a/src/dialogs/more-info/controls/more-info-content.ts b/src/dialogs/more-info/controls/more-info-content.ts index c86b52b9dd..896d1c576b 100644 --- a/src/dialogs/more-info/controls/more-info-content.ts +++ b/src/dialogs/more-info/controls/more-info-content.ts @@ -1,6 +1,8 @@ -import { PropertyValues, UpdatingElement, property } from "lit-element"; import { HassEntity } from "home-assistant-js-websocket"; - +import { property, PropertyValues, UpdatingElement } from "lit-element"; +import dynamicContentUpdater from "../../../common/dom/dynamic_content_updater"; +import { stateMoreInfoType } from "../../../common/entity/state_more_info_type"; +import { HomeAssistant } from "../../../types"; import "./more-info-alarm_control_panel"; import "./more-info-automation"; import "./more-info-camera"; @@ -24,13 +26,11 @@ import "./more-info-vacuum"; import "./more-info-water_heater"; import "./more-info-weather"; -import { stateMoreInfoType } from "../../../common/entity/state_more_info_type"; -import dynamicContentUpdater from "../../../common/dom/dynamic_content_updater"; -import { HomeAssistant } from "../../../types"; - class MoreInfoContent extends UpdatingElement { @property() public hass?: HomeAssistant; + @property() public stateObj?: HassEntity; + private _detachedChild?: ChildNode; protected firstUpdated(): void { diff --git a/src/dialogs/more-info/controls/more-info-counter.ts b/src/dialogs/more-info/controls/more-info-counter.ts index c9ba166982..2ec001a01a 100644 --- a/src/dialogs/more-info/controls/more-info-counter.ts +++ b/src/dialogs/more-info/controls/more-info-counter.ts @@ -1,20 +1,20 @@ -import { - LitElement, - html, - TemplateResult, - CSSResult, - css, - property, - customElement, -} from "lit-element"; import "@material/mwc-button"; import { HassEntity } from "home-assistant-js-websocket"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { HomeAssistant } from "../../../types"; @customElement("more-info-counter") class MoreInfoCounter extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected render(): TemplateResult { diff --git a/src/dialogs/more-info/controls/more-info-cover.js b/src/dialogs/more-info/controls/more-info-cover.js index f075583d91..25e2bc18ec 100644 --- a/src/dialogs/more-info/controls/more-info-cover.js +++ b/src/dialogs/more-info/controls/more-info-cover.js @@ -1,16 +1,14 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { attributeClassNames } from "../../../common/entity/attribute_class_names"; +import { featureClassNames } from "../../../common/entity/feature_class_names"; import "../../../components/ha-cover-tilt-controls"; import "../../../components/ha-labeled-slider"; - -import CoverEntity from "../../../util/cover-model"; -import { featureClassNames } from "../../../common/entity/feature_class_names"; import LocalizeMixin from "../../../mixins/localize-mixin"; - -import { attributeClassNames } from "../../../common/entity/attribute_class_names"; +import CoverEntity from "../../../util/cover-model"; const FEATURE_CLASS_NAMES = { 128: "has-set_tilt_position", diff --git a/src/dialogs/more-info/controls/more-info-default.ts b/src/dialogs/more-info/controls/more-info-default.ts index 7b30893609..c9a3c49d71 100644 --- a/src/dialogs/more-info/controls/more-info-default.ts +++ b/src/dialogs/more-info/controls/more-info-default.ts @@ -1,19 +1,18 @@ -import { - LitElement, - html, - TemplateResult, - property, - customElement, -} from "lit-element"; import { HassEntity } from "home-assistant-js-websocket"; - -import { HomeAssistant } from "../../../types"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/ha-attributes"; +import { HomeAssistant } from "../../../types"; @customElement("more-info-default") class MoreInfoDefault extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected render(): TemplateResult { @@ -21,9 +20,7 @@ class MoreInfoDefault extends LitElement { return html``; } - return html` - - `; + return html` `; } } diff --git a/src/dialogs/more-info/controls/more-info-fan.js b/src/dialogs/more-info/controls/more-info-fan.js index c27ac5bf26..0c0e0da0a2 100644 --- a/src/dialogs/more-info/controls/more-info-fan.js +++ b/src/dialogs/more-info/controls/more-info-fan.js @@ -3,15 +3,13 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { attributeClassNames } from "../../../common/entity/attribute_class_names"; import "../../../components/ha-attributes"; import "../../../components/ha-paper-dropdown-menu"; import "../../../components/ha-switch"; - import { EventsMixin } from "../../../mixins/events-mixin"; -import { attributeClassNames } from "../../../common/entity/attribute_class_names"; - import LocalizeMixin from "../../../mixins/localize-mixin"; /* diff --git a/src/dialogs/more-info/controls/more-info-group.js b/src/dialogs/more-info/controls/more-info-group.js index 81d2528b3c..28ae779d91 100644 --- a/src/dialogs/more-info/controls/more-info-group.js +++ b/src/dialogs/more-info/controls/more-info-group.js @@ -1,11 +1,10 @@ import { dom } from "@polymer/polymer/lib/legacy/polymer.dom"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../state-summary/state-card-content"; - -import { computeStateDomain } from "../../../common/entity/compute_state_domain"; import dynamicContentUpdater from "../../../common/dom/dynamic_content_updater"; +import { computeStateDomain } from "../../../common/entity/compute_state_domain"; +import "../../../state-summary/state-card-content"; class MoreInfoGroup extends PolymerElement { static get template() { diff --git a/src/dialogs/more-info/controls/more-info-history_graph.js b/src/dialogs/more-info/controls/more-info-history_graph.js index 160261e1ba..febd00b62f 100644 --- a/src/dialogs/more-info/controls/more-info-history_graph.js +++ b/src/dialogs/more-info/controls/more-info-history_graph.js @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../cards/ha-history_graph-card"; import "../../../components/ha-attributes"; diff --git a/src/dialogs/more-info/controls/more-info-input_datetime.js b/src/dialogs/more-info/controls/more-info-input_datetime.js index c96c526f53..7c15971929 100644 --- a/src/dialogs/more-info/controls/more-info-input_datetime.js +++ b/src/dialogs/more-info/controls/more-info-input_datetime.js @@ -1,14 +1,13 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@vaadin/vaadin-date-picker/theme/material/vaadin-date-picker"; - +import { attributeClassNames } from "../../../common/entity/attribute_class_names"; import "../../../components/ha-relative-time"; import "../../../components/paper-time-input"; -import { attributeClassNames } from "../../../common/entity/attribute_class_names"; - class DatetimeInput extends PolymerElement { static get template() { return html` diff --git a/src/dialogs/more-info/controls/more-info-light.js b/src/dialogs/more-info/controls/more-info-light.js index a280e38eef..cc7590c197 100644 --- a/src/dialogs/more-info/controls/more-info-light.js +++ b/src/dialogs/more-info/controls/more-info-light.js @@ -1,16 +1,14 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { featureClassNames } from "../../../common/entity/feature_class_names"; import "../../../components/ha-attributes"; import "../../../components/ha-color-picker"; import "../../../components/ha-labeled-slider"; import "../../../components/ha-paper-dropdown-menu"; - -import { featureClassNames } from "../../../common/entity/feature_class_names"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; diff --git a/src/dialogs/more-info/controls/more-info-lock.js b/src/dialogs/more-info/controls/more-info-lock.js index f5577eb06c..7c7fe6f3c7 100644 --- a/src/dialogs/more-info/controls/more-info-lock.js +++ b/src/dialogs/more-info/controls/more-info-lock.js @@ -1,10 +1,9 @@ import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../components/ha-attributes"; - import LocalizeMixin from "../../../mixins/localize-mixin"; /* diff --git a/src/dialogs/more-info/controls/more-info-media_player.js b/src/dialogs/more-info/controls/more-info-media_player.js index c914e84ea7..0dbf26764f 100644 --- a/src/dialogs/more-info/controls/more-info-media_player.js +++ b/src/dialogs/more-info/controls/more-info-media_player.js @@ -4,17 +4,16 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../components/ha-paper-slider"; -import "../../../components/ha-paper-dropdown-menu"; -import HassMediaPlayerEntity from "../../../util/hass-media-player-model"; - -import { attributeClassNames } from "../../../common/entity/attribute_class_names"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; +import { attributeClassNames } from "../../../common/entity/attribute_class_names"; +import { computeRTLDirection } from "../../../common/util/compute_rtl"; +import "../../../components/ha-paper-dropdown-menu"; +import "../../../components/ha-paper-slider"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; -import { computeRTLDirection } from "../../../common/util/compute_rtl"; +import HassMediaPlayerEntity from "../../../util/hass-media-player-model"; /* * @appliesMixin LocalizeMixin diff --git a/src/dialogs/more-info/controls/more-info-person.ts b/src/dialogs/more-info/controls/more-info-person.ts index 153a0c797e..746361146c 100644 --- a/src/dialogs/more-info/controls/more-info-person.ts +++ b/src/dialogs/more-info/controls/more-info-person.ts @@ -1,25 +1,24 @@ -import { - LitElement, - html, - TemplateResult, - CSSResult, - css, - property, - customElement, -} from "lit-element"; -import { HassEntity } from "home-assistant-js-websocket"; import "@material/mwc-button"; - -import "../../../components/map/ha-map"; - -import { HomeAssistant } from "../../../types"; -import { showZoneEditor } from "../../../data/zone"; -import { fireEvent } from "../../../common/dom/fire_event"; +import { HassEntity } from "home-assistant-js-websocket"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import memoizeOne from "memoize-one"; +import { fireEvent } from "../../../common/dom/fire_event"; +import "../../../components/map/ha-map"; +import { showZoneEditor } from "../../../data/zone"; +import { HomeAssistant } from "../../../types"; @customElement("more-info-person") class MoreInfoPerson extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; private _entityArray = memoizeOne((entityId: string) => [entityId]); diff --git a/src/dialogs/more-info/controls/more-info-script.ts b/src/dialogs/more-info/controls/more-info-script.ts index 3c8146795f..83d7ccd31e 100644 --- a/src/dialogs/more-info/controls/more-info-script.ts +++ b/src/dialogs/more-info/controls/more-info-script.ts @@ -1,19 +1,18 @@ -import { - LitElement, - html, - TemplateResult, - property, - customElement, -} from "lit-element"; import { HassEntity } from "home-assistant-js-websocket"; - -import { HomeAssistant } from "../../../types"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/ha-relative-time"; +import { HomeAssistant } from "../../../types"; @customElement("more-info-script") class MoreInfoScript extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected render(): TemplateResult { diff --git a/src/dialogs/more-info/controls/more-info-sun.ts b/src/dialogs/more-info/controls/more-info-sun.ts index 4cf93d0ed5..10b832f260 100644 --- a/src/dialogs/more-info/controls/more-info-sun.ts +++ b/src/dialogs/more-info/controls/more-info-sun.ts @@ -1,22 +1,21 @@ -import { - property, - LitElement, - TemplateResult, - html, - customElement, - CSSResult, - css, -} from "lit-element"; import { HassEntity } from "home-assistant-js-websocket"; - -import "../../../components/ha-relative-time"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { formatTime } from "../../../common/datetime/format_time"; +import "../../../components/ha-relative-time"; import { HomeAssistant } from "../../../types"; @customElement("more-info-sun") class MoreInfoSun extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected render(): TemplateResult { diff --git a/src/dialogs/more-info/controls/more-info-timer.ts b/src/dialogs/more-info/controls/more-info-timer.ts index 414f26ed8b..cbfa31c883 100644 --- a/src/dialogs/more-info/controls/more-info-timer.ts +++ b/src/dialogs/more-info/controls/more-info-timer.ts @@ -1,17 +1,15 @@ -import { - LitElement, - html, - TemplateResult, - CSSResult, - css, - property, - PropertyValues, - customElement, -} from "lit-element"; import "@material/mwc-button"; - -import { HomeAssistant } from "../../../types"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { TimerEntity } from "../../../data/timer"; +import { HomeAssistant } from "../../../types"; @customElement("more-info-timer") class MoreInfoTimer extends LitElement { @@ -70,13 +68,6 @@ class MoreInfoTimer extends LitElement { `; } - protected updated(changedProps: PropertyValues) { - super.updated(changedProps); - if (!changedProps.has("stateObj") || !this.stateObj) { - return; - } - } - private _handleActionClick(e: MouseEvent): void { const action = (e.currentTarget as any).action; this.hass.callService("timer", action, { diff --git a/src/dialogs/more-info/controls/more-info-vacuum.ts b/src/dialogs/more-info/controls/more-info-vacuum.ts index ce1c5a30ae..bd2bf1bc68 100644 --- a/src/dialogs/more-info/controls/more-info-vacuum.ts +++ b/src/dialogs/more-info/controls/more-info-vacuum.ts @@ -2,7 +2,6 @@ import "@polymer/iron-icon/iron-icon"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, @@ -12,13 +11,11 @@ import { property, TemplateResult, } from "lit-element"; - import { supportsFeature } from "../../../common/entity/supports-feature"; -import { HomeAssistant } from "../../../types"; - -import "../../../components/ha-paper-dropdown-menu"; import "../../../components/ha-attributes"; +import "../../../components/ha-paper-dropdown-menu"; import { + VacuumEntity, VACUUM_SUPPORT_BATTERY, VACUUM_SUPPORT_CLEAN_SPOT, VACUUM_SUPPORT_FAN_SPEED, @@ -28,8 +25,8 @@ import { VACUUM_SUPPORT_START, VACUUM_SUPPORT_STATUS, VACUUM_SUPPORT_STOP, - VacuumEntity, } from "../../../data/vacuum"; +import { HomeAssistant } from "../../../types"; interface VacuumCommand { translationKey: string; diff --git a/src/dialogs/more-info/controls/more-info-water_heater.js b/src/dialogs/more-info/controls/more-info-water_heater.js index 8438e59a3b..ce1c5e2994 100644 --- a/src/dialogs/more-info/controls/more-info-water_heater.js +++ b/src/dialogs/more-info/controls/more-info-water_heater.js @@ -4,17 +4,15 @@ import "@polymer/paper-listbox/paper-listbox"; import { timeOut } from "@polymer/polymer/lib/utils/async"; import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../components/ha-water_heater-control"; -import "../../../components/ha-paper-slider"; -import "../../../components/ha-paper-dropdown-menu"; -import "../../../components/ha-switch"; - -import { supportsFeature } from "../../../common/entity/supports-feature"; -import { EventsMixin } from "../../../mixins/events-mixin"; - import { featureClassNames } from "../../../common/entity/feature_class_names"; +import { supportsFeature } from "../../../common/entity/supports-feature"; +import "../../../components/ha-paper-dropdown-menu"; +import "../../../components/ha-paper-slider"; +import "../../../components/ha-switch"; +import "../../../components/ha-water_heater-control"; +import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; /* diff --git a/src/dialogs/more-info/controls/more-info-weather.ts b/src/dialogs/more-info/controls/more-info-weather.ts index 7806329424..a9e6c7ffa0 100644 --- a/src/dialogs/more-info/controls/more-info-weather.ts +++ b/src/dialogs/more-info/controls/more-info-weather.ts @@ -1,15 +1,14 @@ import "@polymer/iron-icon/iron-icon"; +import { HassEntity } from "home-assistant-js-websocket"; import { + css, + CSSResult, + customElement, LitElement, property, - CSSResult, - css, - customElement, PropertyValues, } from "lit-element"; -import { HassEntity } from "home-assistant-js-websocket"; -import { TemplateResult, html } from "lit-html"; - +import { html, TemplateResult } from "lit-html"; import { HomeAssistant } from "../../../types"; const cardinalDirections = [ @@ -53,6 +52,7 @@ const weatherIcons = { @customElement("more-info-weather") class MoreInfoWeather extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj?: HassEntity; protected shouldUpdate(changedProps: PropertyValues): boolean { @@ -264,7 +264,7 @@ class MoreInfoWeather extends LitElement { private windBearingToText(degree: string): string { const degreenum = parseInt(degree, 10); if (isFinite(degreenum)) { - // tslint:disable-next-line: no-bitwise + // eslint-disable-next-line no-bitwise return cardinalDirections[(((degreenum + 11.25) / 22.5) | 0) % 16]; } return degree; @@ -273,9 +273,11 @@ class MoreInfoWeather extends LitElement { private getWind(speed: string, bearing: string) { if (bearing != null) { const cardinalDirection = this.windBearingToText(bearing); - return `${speed} ${this.getUnit("length")}/h (${this.hass.localize( - `ui.card.weather.cardinal_direction.${cardinalDirection.toLowerCase()}` - ) || cardinalDirection})`; + return `${speed} ${this.getUnit("length")}/h (${ + this.hass.localize( + `ui.card.weather.cardinal_direction.${cardinalDirection.toLowerCase()}` + ) || cardinalDirection + })`; } return `${speed} ${this.getUnit("length")}/h`; } diff --git a/src/dialogs/more-info/more-info-controls.js b/src/dialogs/more-info/more-info-controls.js index 0da3f5ac7c..aa98acb4a2 100644 --- a/src/dialogs/more-info/more-info-controls.js +++ b/src/dialogs/more-info/more-info-controls.js @@ -1,28 +1,26 @@ +import "@material/mwc-button"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-icon-button/paper-icon-button"; -import "@material/mwc-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../components/state-history-charts"; -import "../../data/ha-state-history-data"; -import "../../resources/ha-style"; -import "../../state-summary/state-card-content"; - -import "./controls/more-info-content"; - -import { navigate } from "../../common/navigate"; -import { computeStateName } from "../../common/entity/compute_state_name"; -import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { isComponentLoaded } from "../../common/config/is_component_loaded"; import { DOMAINS_MORE_INFO_NO_HISTORY } from "../../common/const"; +import { computeStateDomain } from "../../common/entity/compute_state_domain"; +import { computeStateName } from "../../common/entity/compute_state_name"; +import { navigate } from "../../common/navigate"; +import { computeRTL } from "../../common/util/compute_rtl"; +import "../../components/state-history-charts"; +import { removeEntityRegistryEntry } from "../../data/entity_registry"; +import "../../data/ha-state-history-data"; import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; -import { computeRTL } from "../../common/util/compute_rtl"; -import { removeEntityRegistryEntry } from "../../data/entity_registry"; -import { showConfirmationDialog } from "../generic/show-dialog-box"; import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor"; +import "../../resources/ha-style"; +import "../../state-summary/state-card-content"; +import { showConfirmationDialog } from "../generic/show-dialog-box"; +import "./controls/more-info-content"; const DOMAINS_NO_INFO = ["camera", "configurator", "history_graph"]; const EDITABLE_DOMAINS_WITH_ID = ["scene", "automation"]; diff --git a/src/dialogs/notifications/configurator-notification-item.ts b/src/dialogs/notifications/configurator-notification-item.ts index 6a65ad0b8e..0c556dfc68 100644 --- a/src/dialogs/notifications/configurator-notification-item.ts +++ b/src/dialogs/notifications/configurator-notification-item.ts @@ -1,17 +1,15 @@ +import "@material/mwc-button"; import { + customElement, html, LitElement, - TemplateResult, property, - customElement, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; - -import "./notification-item-template"; - -import { HomeAssistant } from "../../types"; import { fireEvent } from "../../common/dom/fire_event"; import { PersitentNotificationEntity } from "../../data/persistent_notification"; +import { HomeAssistant } from "../../types"; +import "./notification-item-template"; @customElement("configurator-notification-item") export class HuiConfiguratorNotificationItem extends LitElement { diff --git a/src/dialogs/notifications/notification-drawer.js b/src/dialogs/notifications/notification-drawer.js index 3486556aca..2dc35ec70c 100644 --- a/src/dialogs/notifications/notification-drawer.js +++ b/src/dialogs/notifications/notification-drawer.js @@ -1,18 +1,17 @@ -import "@polymer/app-layout/app-drawer/app-drawer"; import "@material/mwc-button"; -import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/app-layout/app-drawer/app-drawer"; import "@polymer/app-layout/app-toolbar/app-toolbar"; - +import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "./notification-item"; +import { computeDomain } from "../../common/entity/compute_domain"; import "../../components/ha-paper-icon-button-prev"; - +import { subscribeNotifications } from "../../data/persistent_notification"; import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; -import { subscribeNotifications } from "../../data/persistent_notification"; -import { computeDomain } from "../../common/entity/compute_domain"; +import "./notification-item"; + /* * @appliesMixin EventsMixin * @appliesMixin LocalizeMixin diff --git a/src/dialogs/notifications/notification-item-template.ts b/src/dialogs/notifications/notification-item-template.ts index c5b6f65802..bde508416d 100644 --- a/src/dialogs/notifications/notification-item-template.ts +++ b/src/dialogs/notifications/notification-item-template.ts @@ -1,12 +1,11 @@ import { + css, + CSSResult, + customElement, html, LitElement, TemplateResult, - customElement, - css, - CSSResult, } from "lit-element"; - import "../../components/ha-card"; @customElement("notification-item-template") diff --git a/src/dialogs/notifications/notification-item.ts b/src/dialogs/notifications/notification-item.ts index 12c96da45e..f540571965 100644 --- a/src/dialogs/notifications/notification-item.ts +++ b/src/dialogs/notifications/notification-item.ts @@ -1,19 +1,17 @@ +import { HassEntity } from "home-assistant-js-websocket"; import { + customElement, + html, LitElement, property, - customElement, PropertyValues, TemplateResult, - html, } from "lit-element"; -import { HassEntity } from "home-assistant-js-websocket"; - +import { PersistentNotification } from "../../data/persistent_notification"; +import { HomeAssistant } from "../../types"; import "./configurator-notification-item"; import "./persistent-notification-item"; -import { HomeAssistant } from "../../types"; -import { PersistentNotification } from "../../data/persistent_notification"; - @customElement("notification-item") export class HuiNotificationItem extends LitElement { @property() public hass?: HomeAssistant; diff --git a/src/dialogs/notifications/persistent-notification-item.ts b/src/dialogs/notifications/persistent-notification-item.ts index 6689db8283..08f7720841 100644 --- a/src/dialogs/notifications/persistent-notification-item.ts +++ b/src/dialogs/notifications/persistent-notification-item.ts @@ -1,21 +1,19 @@ -import { - html, - LitElement, - TemplateResult, - property, - customElement, - css, - CSSResult, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-tooltip/paper-tooltip"; - -import "../../components/ha-relative-time"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../components/ha-markdown"; -import "./notification-item-template"; - -import { HomeAssistant } from "../../types"; +import "../../components/ha-relative-time"; import { PersistentNotification } from "../../data/persistent_notification"; +import { HomeAssistant } from "../../types"; +import "./notification-item-template"; @customElement("persistent-notification-item") export class HuiPersistentNotificationItem extends LitElement { diff --git a/src/dialogs/voice-command-dialog/ha-voice-command-dialog.ts b/src/dialogs/voice-command-dialog/ha-voice-command-dialog.ts index d3813d6409..5468c66ac5 100644 --- a/src/dialogs/voice-command-dialog/ha-voice-command-dialog.ts +++ b/src/dialogs/voice-command-dialog/ha-voice-command-dialog.ts @@ -1,34 +1,33 @@ import "@polymer/iron-icon/iron-icon"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "../../components/dialog/ha-paper-dialog"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; - +import type { PaperDialogScrollableElement } from "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; +import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { - LitElement, - html, - property, - CSSResult, css, + CSSResult, customElement, - query, + html, + LitElement, + property, PropertyValues, + query, TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../types"; +import { classMap } from "lit-html/directives/class-map"; import { fireEvent } from "../../common/dom/fire_event"; import { SpeechRecognition } from "../../common/dom/speech-recognition"; -import { - processText, - getAgentInfo, - setConversationOnboarding, - AgentInfo, -} from "../../data/conversation"; -import { classMap } from "lit-html/directives/class-map"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { haStyleDialog } from "../../resources/styles"; -// tslint:disable-next-line -import { PaperDialogScrollableElement } from "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { uid } from "../../common/util/uid"; +import "../../components/dialog/ha-paper-dialog"; +import { + AgentInfo, + getAgentInfo, + processText, + setConversationOnboarding, +} from "../../data/conversation"; +import { haStyleDialog } from "../../resources/styles"; +import type { HomeAssistant } from "../../types"; interface Message { who: string; @@ -44,17 +43,24 @@ interface Results { @customElement("ha-voice-command-dialog") export class HaVoiceCommandDialog extends LitElement { @property() public hass!: HomeAssistant; + @property() public results: Results | null = null; + @property() private _conversation: Message[] = [ { who: "hass", text: "", }, ]; + @property() private _opened = false; + @property() private _agentInfo?: AgentInfo; + @query("#messages") private messages!: PaperDialogScrollableElement; + private recognition!: SpeechRecognition; + private _conversationId?: string; public async showDialog(): Promise { @@ -244,6 +250,7 @@ export class HaVoiceCommandDialog extends LitElement { }; this.recognition.onerror = (event) => { this.recognition!.abort(); + // @ts-ignore if (event.error !== "aborted") { const text = this.results && this.results.transcript diff --git a/src/dialogs/zha-device-info-dialog/dialog-zha-device-info.ts b/src/dialogs/zha-device-info-dialog/dialog-zha-device-info.ts index 25efc62a52..d61c9a9102 100644 --- a/src/dialogs/zha-device-info-dialog/dialog-zha-device-info.ts +++ b/src/dialogs/zha-device-info-dialog/dialog-zha-device-info.ts @@ -1,30 +1,30 @@ +import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { - LitElement, - html, css, CSSResult, - TemplateResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "../../components/dialog/ha-paper-dialog"; -// Not duplicate, is for typing -// tslint:disable-next-line -import { HaPaperDialog } from "../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../components/dialog/ha-paper-dialog"; +import { fetchZHADevice, ZHADevice } from "../../data/zha"; import "../../panels/config/zha/zha-device-card"; - -import { PolymerChangedEvent } from "../../polymer-types"; +import type { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; -import { HomeAssistant } from "../../types"; -import { ZHADeviceInfoDialogParams } from "./show-dialog-zha-device-info"; -import { ZHADevice, fetchZHADevice } from "../../data/zha"; +import type { HomeAssistant } from "../../types"; +import type { ZHADeviceInfoDialogParams } from "./show-dialog-zha-device-info"; @customElement("dialog-zha-device-info") class DialogZHADeviceInfo extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: ZHADeviceInfoDialogParams; + @property() private _error?: string; + @property() private _device?: ZHADevice; public async showDialog(params: ZHADeviceInfoDialogParams): Promise { @@ -46,9 +46,7 @@ class DialogZHADeviceInfo extends LitElement { @opened-changed=${this._openedChanged} > ${this._error - ? html` -
    ${this._error}
    - ` + ? html`
    ${this._error}
    ` : html` diff --git a/src/entrypoints/compatibility.ts b/src/entrypoints/compatibility.ts index 2a005ddbd3..e97a4ebc4a 100644 --- a/src/entrypoints/compatibility.ts +++ b/src/entrypoints/compatibility.ts @@ -1,7 +1,7 @@ -import "mdn-polyfills/Array.prototype.includes"; -import "unfetch/polyfill"; -import "regenerator-runtime/runtime"; import objAssign from "es6-object-assign"; +import "mdn-polyfills/Array.prototype.includes"; +import "regenerator-runtime/runtime"; +import "unfetch/polyfill"; objAssign.polyfill(); @@ -11,22 +11,21 @@ if (Object.values === undefined) { }; } -/* tslint:disable */ +/* eslint-disable */ // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart if (!String.prototype.padStart) { String.prototype.padStart = function padStart(targetLength, padString) { - targetLength = targetLength >> 0; //truncate if number, or convert non-number to 0; + targetLength >>= 0; // truncate if number, or convert non-number to 0; padString = String(typeof padString !== "undefined" ? padString : " "); if (this.length >= targetLength) { return String(this); - } else { - targetLength = targetLength - this.length; - if (targetLength > padString.length) { - padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed - } - return padString.slice(0, targetLength) + String(this); } + targetLength -= this.length; + if (targetLength > padString.length) { + padString += padString.repeat(targetLength / padString.length); // append to original to ensure we are longer than needed + } + return padString.slice(0, targetLength) + String(this); }; } -/* tslint:enable */ +/* eslint-enable */ diff --git a/src/entrypoints/core.ts b/src/entrypoints/core.ts index b45eb5fb48..9e738b8042 100644 --- a/src/entrypoints/core.ts +++ b/src/entrypoints/core.ts @@ -1,27 +1,27 @@ import { - getAuth, + Auth, + Connection, createConnection, + ERR_INVALID_AUTH, + getAuth, subscribeConfig, subscribeEntities, subscribeServices, - ERR_INVALID_AUTH, - Auth, - Connection, } from "home-assistant-js-websocket"; - import { loadTokens, saveTokens } from "../common/auth/token_storage"; -import { isExternal } from "../data/external"; -import { subscribePanels } from "../data/ws-panels"; -import { subscribeThemes } from "../data/ws-themes"; -import { subscribeUser } from "../data/ws-user"; -import { HomeAssistant } from "../types"; import { hassUrl } from "../data/auth"; +import { isExternal } from "../data/external"; import { subscribeFrontendUserData } from "../data/frontend"; import { fetchConfig, fetchResources, WindowWithLovelaceProm, } from "../data/lovelace"; +import { subscribePanels } from "../data/ws-panels"; +import { subscribeThemes } from "../data/ws-themes"; +import { subscribeUser } from "../data/ws-user"; +import type { ExternalAuth } from "../external_app/external_auth"; +import { HomeAssistant } from "../types"; declare global { interface Window { @@ -76,7 +76,9 @@ if (__DEV__) { delete Document.prototype.adoptedStyleSheets; performance.mark("hass-start"); } -window.hassConnection = authProm().then(connProm); +window.hassConnection = (authProm() as Promise).then( + connProm +); // Start fetching some of the data that we will need. window.hassConnection.then(({ conn }) => { diff --git a/src/entrypoints/custom-panel.ts b/src/entrypoints/custom-panel.ts index 9e14dc52c1..6ba448c0b4 100644 --- a/src/entrypoints/custom-panel.ts +++ b/src/entrypoints/custom-panel.ts @@ -1,11 +1,11 @@ -import { loadJS } from "../common/dom/load_resource"; -import { loadCustomPanel } from "../util/custom-panel/load-custom-panel"; -import { createCustomPanelElement } from "../util/custom-panel/create-custom-panel-element"; -import { setCustomPanelProperties } from "../util/custom-panel/set-custom-panel-properties"; -import { fireEvent } from "../common/dom/fire_event"; import { PolymerElement } from "@polymer/polymer"; -import { CustomPanelInfo } from "../data/panel_custom"; +import { fireEvent } from "../common/dom/fire_event"; +import { loadJS } from "../common/dom/load_resource"; import { webComponentsSupported } from "../common/feature-detect/support-web-components"; +import { CustomPanelInfo } from "../data/panel_custom"; +import { createCustomPanelElement } from "../util/custom-panel/create-custom-panel-element"; +import { loadCustomPanel } from "../util/custom-panel/load-custom-panel"; +import { setCustomPanelProperties } from "../util/custom-panel/set-custom-panel-properties"; declare global { interface Window { @@ -82,7 +82,7 @@ function initialize(panel: CustomPanelInfo, properties: {}) { document.body.appendChild(panelEl!); }, (err) => { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err, panel); alert(`Unable to load the panel source: ${err}.`); } diff --git a/src/entrypoints/onboarding.ts b/src/entrypoints/onboarding.ts index 577a58c1ac..3be70289c8 100644 --- a/src/entrypoints/onboarding.ts +++ b/src/entrypoints/onboarding.ts @@ -1,7 +1,7 @@ import "../components/ha-iconset-svg"; +import "../onboarding/ha-onboarding"; import "../resources/ha-style"; import "../resources/roboto"; -import "../onboarding/ha-onboarding"; declare global { interface Window { diff --git a/src/entrypoints/service-worker-hass.js b/src/entrypoints/service-worker-hass.js index 45f37aa92d..1cd0038149 100644 --- a/src/entrypoints/service-worker-hass.js +++ b/src/entrypoints/service-worker-hass.js @@ -72,7 +72,7 @@ function initPushNotifications() { ); } - self.addEventListener("push", function(event) { + self.addEventListener("push", function (event) { var data; if (event.data) { data = event.data.json(); @@ -87,7 +87,7 @@ function initPushNotifications() { event.waitUntil( self.registration .showNotification(data.title, data) - .then(function(/* notification */) { + .then(function (/* notification */) { firePushCallback( { type: "received", @@ -101,7 +101,7 @@ function initPushNotifications() { } }); - self.addEventListener("notificationclick", function(event) { + self.addEventListener("notificationclick", function (event) { var url; notificationEventCallback("clicked", event); @@ -125,7 +125,7 @@ function initPushNotifications() { .matchAll({ type: "window", }) - .then(function(windowClients) { + .then(function (windowClients) { var i; var client; for (i = 0; i < windowClients.length; i++) { @@ -142,7 +142,7 @@ function initPushNotifications() { ); }); - self.addEventListener("notificationclose", function(event) { + self.addEventListener("notificationclose", function (event) { notificationEventCallback("closed", event); }); } diff --git a/src/external_app/external_auth.ts b/src/external_app/external_auth.ts index 5eb2ff4303..c3c6f0fe42 100644 --- a/src/external_app/external_auth.ts +++ b/src/external_app/external_auth.ts @@ -49,7 +49,7 @@ if (!window.externalApp && !window.webkit) { ); } -class ExternalAuth extends Auth { +export class ExternalAuth extends Auth { public external?: ExternalMessaging; constructor(hassUrl: string) { diff --git a/src/external_app/external_messaging.ts b/src/external_app/external_messaging.ts index 7d2cbc1b34..58f19ce7db 100644 --- a/src/external_app/external_messaging.ts +++ b/src/external_app/external_messaging.ts @@ -39,7 +39,9 @@ type ExternalMessage = ExternalMessageResult | ExternalMessageResultError; export class ExternalMessaging { public commands: { [msgId: number]: CommandInFlight } = {}; + public cache: { [key: string]: any } = {}; + public msgId = 0; public attach() { @@ -76,14 +78,14 @@ export class ExternalMessaging { public receiveMessage(msg: ExternalMessage) { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log("Receiving message from external app", msg); } const pendingCmd = this.commands[msg.id]; if (!pendingCmd) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.warn(`Received unknown msg ID`, msg.id); return; } @@ -99,7 +101,7 @@ export class ExternalMessaging { protected _sendExternal(msg: InternalMessage) { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log("Sending message to external app", msg); } if (window.externalApp) { diff --git a/src/fake_data/entity.ts b/src/fake_data/entity.ts index a386355eb6..56d1240c74 100644 --- a/src/fake_data/entity.ts +++ b/src/fake_data/entity.ts @@ -1,23 +1,30 @@ +/* eslint-disable max-classes-per-file */ import { - HassEntityAttributeBase, HassEntity, + HassEntityAttributeBase, } from "home-assistant-js-websocket"; -/* tslint:disable:max-classes-per-file */ - const now = () => new Date().toISOString(); const randomTime = () => new Date(new Date().getTime() - Math.random() * 80 * 60 * 1000).toISOString(); export class Entity { public domain: string; + public objectId: string; + public entityId: string; + public lastChanged: string; + public lastUpdated: string; + public state: string; + public baseAttributes: HassEntityAttributeBase & { [key: string]: any }; + public attributes: HassEntityAttributeBase & { [key: string]: any }; + public hass?: any; constructor(domain, objectId, state, baseAttributes) { @@ -33,7 +40,7 @@ export class Entity { } public async handleService(domain, service, data: { [key: string]: any }) { - // tslint:disable-next-line + // eslint-disable-next-line console.log( `Unmocked service for ${this.entityId}: ${domain}/${service}`, data @@ -47,7 +54,7 @@ export class Entity { state === this.state ? this.lastChanged : this.lastUpdated; this.attributes = { ...this.baseAttributes, ...attributes }; - // tslint:disable-next-line + // eslint-disable-next-line console.log("update", this.entityId, this); this.hass.updateStates({ @@ -73,7 +80,7 @@ class LightEntity extends Entity { } if (service === "turn_on") { - // tslint:disable-next-line + // eslint-disable-next-line let { brightness, hs_color, brightness_pct } = data; brightness = (255 * brightness_pct) / 100; this.update("on", { ...this.attributes, brightness, hs_color }); diff --git a/src/fake_data/provide_hass.ts b/src/fake_data/provide_hass.ts index ea8f369bf2..7fdec23d33 100644 --- a/src/fake_data/provide_hass.ts +++ b/src/fake_data/provide_hass.ts @@ -1,18 +1,17 @@ +import { HassEntities } from "home-assistant-js-websocket"; import { applyThemesOnElement, invalidateThemeCache, } from "../common/dom/apply_themes_on_element"; - -import { demoConfig } from "./demo_config"; -import { demoServices } from "./demo_services"; -import { demoPanels } from "./demo_panels"; -import { getEntity, Entity } from "./entity"; -import { HomeAssistant } from "../types"; -import { HassEntities } from "home-assistant-js-websocket"; -import { getLocalLanguage, getTranslation } from "../util/hass-translation"; -import { translationMetadata } from "../resources/translations-metadata"; -import { DEFAULT_PANEL } from "../data/panel"; import { computeLocalize } from "../common/translations/localize"; +import { DEFAULT_PANEL } from "../data/panel"; +import { translationMetadata } from "../resources/translations-metadata"; +import { HomeAssistant } from "../types"; +import { getLocalLanguage, getTranslation } from "../util/hass-translation"; +import { demoConfig } from "./demo_config"; +import { demoPanels } from "./demo_panels"; +import { demoServices } from "./demo_services"; +import { Entity, getEntity } from "./entity"; const ensureArray = (val: T | T[]): T[] => Array.isArray(val) ? val : [val]; @@ -76,7 +75,7 @@ export const provideHass = ( }); } - function addEntities(newEntities, replace: boolean = false) { + function addEntities(newEntities, replace = false) { const states = {}; ensureArray(newEntities).forEach((ent) => { ent.hass = hass(); @@ -132,7 +131,7 @@ export const provideHass = ( if (callback) { callback(msg); } else { - // tslint:disable-next-line + // eslint-disable-next-line console.error(`Unknown WS command: ${msg.type}`); } }, @@ -211,7 +210,7 @@ export const provideHass = ( ) ); } else { - // tslint:disable-next-line + // eslint-disable-next-line console.log("unmocked callService", domain, service, data); } }, diff --git a/src/layouts/ha-init-page.ts b/src/layouts/ha-init-page.ts index 6d34ae4e14..7a36e41448 100644 --- a/src/layouts/ha-init-page.ts +++ b/src/layouts/ha-init-page.ts @@ -1,7 +1,6 @@ -import "@polymer/paper-spinner/paper-spinner-lite"; import "@material/mwc-button"; - -import { LitElement, html, CSSResult, css, property } from "lit-element"; +import "@polymer/paper-spinner/paper-spinner-lite"; +import { css, CSSResult, html, LitElement, property } from "lit-element"; import { removeInitSkeleton } from "../util/init-skeleton"; class HaInitPage extends LitElement { diff --git a/src/layouts/hass-error-screen.ts b/src/layouts/hass-error-screen.ts index ad2bd94455..f8838eff85 100644 --- a/src/layouts/hass-error-screen.ts +++ b/src/layouts/hass-error-screen.ts @@ -1,13 +1,13 @@ -import { - LitElement, - CSSResultArray, - css, - TemplateResult, - html, - property, - customElement, -} from "lit-element"; import "@material/mwc-button"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "./hass-subpage"; @customElement("hass-error-screen") diff --git a/src/layouts/hass-loading-screen.ts b/src/layouts/hass-loading-screen.ts index e0670fa4ee..dc04a89a6a 100644 --- a/src/layouts/hass-loading-screen.ts +++ b/src/layouts/hass-loading-screen.ts @@ -1,13 +1,13 @@ import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-spinner/paper-spinner-lite"; import { - LitElement, - TemplateResult, - html, - CSSResultArray, css, + CSSResultArray, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; import "../components/ha-menu-button"; import "../components/ha-paper-icon-button-arrow-prev"; @@ -17,7 +17,9 @@ import { HomeAssistant } from "../types"; @customElement("hass-loading-screen") class HassLoadingScreen extends LitElement { @property({ type: Boolean }) public rootnav? = false; + @property() public hass?: HomeAssistant; + @property() public narrow?: boolean; protected render(): TemplateResult { diff --git a/src/layouts/hass-router-page.ts b/src/layouts/hass-router-page.ts index ae66380088..dcb312bd26 100644 --- a/src/layouts/hass-router-page.ts +++ b/src/layouts/hass-router-page.ts @@ -1,9 +1,9 @@ -import { UpdatingElement, property, PropertyValues } from "lit-element"; +import { property, PropertyValues, UpdatingElement } from "lit-element"; +import memoizeOne from "memoize-one"; +import { navigate } from "../common/navigate"; +import { Route } from "../types"; import "./hass-error-screen"; import "./hass-loading-screen"; -import { Route } from "../types"; -import { navigate } from "../common/navigate"; -import memoizeOne from "memoize-one"; const extractPage = (path: string, defaultPage: string) => { if (path === "") { @@ -52,9 +52,13 @@ export class HassRouterPage extends UpdatingElement { protected routerOptions!: RouterOptions; protected _currentPage = ""; + private _currentLoadProm?: Promise; + private _cache = {}; + private _initialLoadDone = false; + private _computeTail = memoizeOne((route: Route) => { const dividerPos = route.path.indexOf("/", 1); return dividerPos === -1 @@ -145,7 +149,7 @@ export class HassRouterPage extends UpdatingElement { // Check when loading the page source failed. loadProm.catch((err) => { - // tslint:disable-next-line + // eslint-disable-next-line console.error("Error loading page", newPage, err); // Verify that we're still trying to show the same page. diff --git a/src/layouts/hass-subpage.ts b/src/layouts/hass-subpage.ts index 827828fedd..74b7d27421 100644 --- a/src/layouts/hass-subpage.ts +++ b/src/layouts/hass-subpage.ts @@ -1,22 +1,24 @@ import { + css, + CSSResult, + customElement, + html, LitElement, property, TemplateResult, - html, - customElement, - css, - CSSResult, } from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; import "../components/ha-menu-button"; import "../components/ha-paper-icon-button-arrow-prev"; -import { classMap } from "lit-html/directives/class-map"; @customElement("hass-subpage") class HassSubpage extends LitElement { @property() public header?: string; + @property({ type: Boolean }) public showBackButton = true; + @property({ type: Boolean }) public hassio = false; diff --git a/src/layouts/hass-tabs-subpage-data-table.ts b/src/layouts/hass-tabs-subpage-data-table.ts index 33b621afd4..d761ec0e6c 100644 --- a/src/layouts/hass-tabs-subpage-data-table.ts +++ b/src/layouts/hass-tabs-subpage-data-table.ts @@ -9,74 +9,86 @@ import { TemplateResult, } from "lit-element"; import "../components/data-table/ha-data-table"; -// tslint:disable-next-line -import { - HaDataTable, +import type { DataTableColumnContainer, DataTableRowData, + HaDataTable, } from "../components/data-table/ha-data-table"; +import type { HomeAssistant, Route } from "../types"; import "./hass-tabs-subpage"; -import { HomeAssistant, Route } from "../types"; -// tslint:disable-next-line -import { PageNavigation } from "./hass-tabs-subpage"; +import type { PageNavigation } from "./hass-tabs-subpage"; @customElement("hass-tabs-subpage-data-table") export class HaTabsSubpageDataTable extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property({ type: Boolean, reflect: true }) public narrow!: boolean; + /** * Object with the columns. * @type {Object} */ @property({ type: Object }) public columns: DataTableColumnContainer = {}; + /** * Data to show in the table. * @type {Array} */ @property({ type: Array }) public data: DataTableRowData[] = []; + /** * Should rows be selectable. * @type {Boolean} */ @property({ type: Boolean }) public selectable = false; + /** * Do we need to add padding for a fab. * @type {Boolean} */ @property({ type: Boolean }) public hasFab = false; + /** * Field with a unique id per entry in data. * @type {String} */ @property({ type: String }) public id = "id"; + /** * String to filter the data in the data table on. * @type {String} */ @property({ type: String }) public filter = ""; + /** * What path to use when the back button is pressed. * @type {String} * @attr back-path */ @property({ type: String, attribute: "back-path" }) public backPath?: string; + /** * Function to call when the back button is pressed. * @type {() => void} */ @property() public backCallback?: () => void; + /** * String to show when there are no records in the data table. * @type {String} */ @property({ type: String }) public noDataText?: string; + @property() public route!: Route; + /** * Array of tabs to show on the page. * @type {Array} */ @property() public tabs!: PageNavigation[]; + @query("ha-data-table") private _dataTable!: HaDataTable; public clearSelection() { @@ -135,9 +147,7 @@ export class HaTabsSubpageDataTable extends LitElement { >
    ` - : html` -
    - `} + : html`
    `} `; diff --git a/src/layouts/hass-tabs-subpage.ts b/src/layouts/hass-tabs-subpage.ts index 2198acf49b..cf2c593c22 100644 --- a/src/layouts/hass-tabs-subpage.ts +++ b/src/layouts/hass-tabs-subpage.ts @@ -1,21 +1,21 @@ +import "@material/mwc-ripple"; import { - LitElement, - property, - TemplateResult, - html, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; +import memoizeOne from "memoize-one"; +import { isComponentLoaded } from "../common/config/is_component_loaded"; +import { navigate } from "../common/navigate"; import "../components/ha-menu-button"; import "../components/ha-paper-icon-button-arrow-prev"; -import { classMap } from "lit-html/directives/class-map"; -import { Route, HomeAssistant } from "../types"; -import { navigate } from "../common/navigate"; -import "@material/mwc-ripple"; -import { isComponentLoaded } from "../common/config/is_component_loaded"; -import memoizeOne from "memoize-one"; +import { HomeAssistant, Route } from "../types"; export interface PageNavigation { path: string; @@ -31,12 +31,19 @@ export interface PageNavigation { @customElement("hass-tabs-subpage") class HassTabsSubpage extends LitElement { @property() public hass!: HomeAssistant; + @property({ type: String, attribute: "back-path" }) public backPath?: string; + @property() public backCallback?: () => void; + @property({ type: Boolean }) public hassio = false; + @property() public route!: Route; + @property() public tabs!: PageNavigation[]; + @property({ type: Boolean, reflect: true }) public narrow = false; + @property() private _activeTab?: PageNavigation; private _getTabs = memoizeOne( @@ -67,9 +74,7 @@ class HassTabsSubpage extends LitElement { .path=${page.path} > ${this.narrow - ? html` - - ` + ? html` ` : ""} ${!this.narrow || page === activeTab ? html` @@ -114,9 +119,7 @@ class HassTabsSubpage extends LitElement { @click=${this._backTapped} > ${this.narrow - ? html` -
    - ` + ? html`
    ` : ""} ${tabs.length > 1 || !this.narrow ? html` diff --git a/src/layouts/home-assistant-main.ts b/src/layouts/home-assistant-main.ts index 593e26f095..9959397dca 100644 --- a/src/layouts/home-assistant-main.ts +++ b/src/layouts/home-assistant-main.ts @@ -1,27 +1,23 @@ -import { - LitElement, - html, - TemplateResult, - CSSResult, - css, - PropertyValues, - property, -} from "lit-element"; import "@polymer/app-layout/app-drawer-layout/app-drawer-layout"; +import type { AppDrawerLayoutElement } from "@polymer/app-layout/app-drawer-layout/app-drawer-layout"; import "@polymer/app-layout/app-drawer/app-drawer"; -// Not a duplicate, it's for typing -// tslint:disable-next-line -import { AppDrawerElement } from "@polymer/app-layout/app-drawer/app-drawer"; +import type { AppDrawerElement } from "@polymer/app-layout/app-drawer/app-drawer"; import "@polymer/iron-media-query/iron-media-query"; - -import "./partial-panel-resolver"; -import { HomeAssistant, Route } from "../types"; +import { + css, + CSSResult, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../common/dom/fire_event"; -import { PolymerChangedEvent } from "../polymer-types"; -// tslint:disable-next-line: no-duplicate-imports -import { AppDrawerLayoutElement } from "@polymer/app-layout/app-drawer-layout/app-drawer-layout"; -import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer"; import { toggleAttribute } from "../common/dom/toggle_attribute"; +import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer"; +import type { PolymerChangedEvent } from "../polymer-types"; +import type { HomeAssistant, Route } from "../types"; +import "./partial-panel-resolver"; const NON_SWIPABLE_PANELS = ["map"]; @@ -35,7 +31,9 @@ declare global { class HomeAssistantMain extends LitElement { @property() public hass!: HomeAssistant; + @property() public route?: Route; + @property({ type: Boolean }) private narrow?: boolean; protected render(): TemplateResult { @@ -68,13 +66,13 @@ class HomeAssistantMain extends LitElement { .disableSwipe=${disableSwipe} .swipeOpen=${!disableSwipe} .persistent=${!this.narrow && - this.hass.dockedSidebar !== "always_hidden"} + this.hass.dockedSidebar !== "always_hidden"} > diff --git a/src/layouts/home-assistant.ts b/src/layouts/home-assistant.ts index 4a61210a95..97b908001f 100644 --- a/src/layouts/home-assistant.ts +++ b/src/layouts/home-assistant.ts @@ -1,24 +1,25 @@ import "@polymer/app-route/app-location"; -import { html, PropertyValues, property } from "lit-element"; - -import "./home-assistant-main"; -import "./ha-init-page"; -import "../resources/ha-style"; +import { html, property, PropertyValues } from "lit-element"; +import { navigate } from "../common/navigate"; +import { getStorageDefaultPanelUrlPath } from "../data/panel"; import "../resources/custom-card-support"; +import "../resources/ha-style"; +import { HassElement } from "../state/hass-element"; +import { HomeAssistant, Route } from "../types"; import { registerServiceWorker, supportsServiceWorker, } from "../util/register-service-worker"; - -import { Route, HomeAssistant } from "../types"; -import { navigate } from "../common/navigate"; -import { HassElement } from "../state/hass-element"; -import { getStorageDefaultPanelUrlPath } from "../data/panel"; +import "./ha-init-page"; +import "./home-assistant-main"; export class HomeAssistantAppEl extends HassElement { @property() private _route?: Route; + @property() private _error = false; + @property() private _panelUrl?: string; + private _haVersion?: string; protected render() { @@ -38,9 +39,7 @@ export class HomeAssistantAppEl extends HassElement { .route=${this._route} > ` - : html` - - `} + : html` `} `; } @@ -94,7 +93,6 @@ export class HomeAssistantAppEl extends HassElement { this.initializeHass(auth, conn); } catch (err) { this._error = true; - return; } } diff --git a/src/layouts/loading-screen.ts b/src/layouts/loading-screen.ts index 1533cb6244..060e97b147 100644 --- a/src/layouts/loading-screen.ts +++ b/src/layouts/loading-screen.ts @@ -1,19 +1,17 @@ import "@polymer/paper-spinner/paper-spinner-lite"; import { + css, + CSSResult, + customElement, + html, LitElement, TemplateResult, - html, - css, - customElement, - CSSResult, } from "lit-element"; @customElement("loading-screen") class LoadingScreen extends LitElement { protected render(): TemplateResult { - return html` - - `; + return html` `; } static get styles(): CSSResult { diff --git a/src/layouts/partial-panel-resolver.ts b/src/layouts/partial-panel-resolver.ts index 2f9c360939..89b018bb84 100644 --- a/src/layouts/partial-panel-resolver.ts +++ b/src/layouts/partial-panel-resolver.ts @@ -1,14 +1,13 @@ -import { property, customElement, PropertyValues } from "lit-element"; import { PolymerElement } from "@polymer/polymer"; - +import { customElement, property, PropertyValues } from "lit-element"; +import { deepEqual } from "../common/util/deep-equal"; import { HomeAssistant, Panels } from "../types"; +import { removeInitSkeleton } from "../util/init-skeleton"; import { HassRouterPage, - RouterOptions, RouteOptions, + RouterOptions, } from "./hass-router-page"; -import { removeInitSkeleton } from "../util/init-skeleton"; -import { deepEqual } from "../common/util/deep-equal"; const CACHE_URL_PATHS = ["lovelace", "developer-tools"]; const COMPONENTS = { @@ -82,6 +81,7 @@ const getRoutes = (panels: Panels): RouterOptions => { @customElement("partial-panel-resolver") class PartialPanelResolver extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow?: boolean; protected updated(changedProps: PropertyValues) { diff --git a/src/managers/notification-manager.ts b/src/managers/notification-manager.ts index c9322e480d..1607fadc20 100644 --- a/src/managers/notification-manager.ts +++ b/src/managers/notification-manager.ts @@ -1,19 +1,17 @@ +import "@material/mwc-button"; import { - LitElement, - query, - property, - TemplateResult, - html, css, CSSResult, + html, + LitElement, + property, + query, + TemplateResult, } from "lit-element"; import { computeRTL } from "../common/util/compute_rtl"; -import { HomeAssistant } from "../types"; -import "@material/mwc-button"; import "../components/ha-toast"; -// Typing -// tslint:disable-next-line: no-duplicate-imports -import { HaToast } from "../components/ha-toast"; +import type { HaToast } from "../components/ha-toast"; +import type { HomeAssistant } from "../types"; export interface ShowToastParams { message: string; @@ -31,7 +29,8 @@ class NotificationManager extends LitElement { @property() public hass!: HomeAssistant; @property() private _action?: ToastActionParams; - @property() private _noCancelOnOutsideClick: boolean = false; + + @property() private _noCancelOnOutsideClick = false; @query("ha-toast") private _toast!: HaToast; diff --git a/src/mixins/dialog-mixin.js b/src/mixins/dialog-mixin.js index 9d54050f56..cc8103935a 100644 --- a/src/mixins/dialog-mixin.js +++ b/src/mixins/dialog-mixin.js @@ -1,6 +1,6 @@ -import { dedupingMixin } from "@polymer/polymer/lib/utils/mixin"; import { PaperDialogBehavior } from "@polymer/paper-dialog-behavior/paper-dialog-behavior"; import { mixinBehaviors } from "@polymer/polymer/lib/legacy/class"; +import { dedupingMixin } from "@polymer/polymer/lib/utils/mixin"; import { EventsMixin } from "./events-mixin"; /** * @polymerMixin diff --git a/src/mixins/events-mixin.js b/src/mixins/events-mixin.js index d9f1c28fe3..a380e2cedd 100644 --- a/src/mixins/events-mixin.js +++ b/src/mixins/events-mixin.js @@ -1,5 +1,4 @@ import { dedupingMixin } from "@polymer/polymer/lib/utils/mixin"; - import { fireEvent } from "../common/dom/fire_event"; // Polymer legacy event helpers used courtesy of the Polymer project. diff --git a/src/mixins/lit-localize-lite-mixin.ts b/src/mixins/lit-localize-lite-mixin.ts index 60d8f192af..a43ce610a1 100644 --- a/src/mixins/lit-localize-lite-mixin.ts +++ b/src/mixins/lit-localize-lite-mixin.ts @@ -1,7 +1,7 @@ -import { LitElement, PropertyValues, property } from "lit-element"; -import { getLocalLanguage, getTranslation } from "../util/hass-translation"; +import { LitElement, property, PropertyValues } from "lit-element"; import { computeLocalize, LocalizeFunc } from "../common/translations/localize"; import { Constructor, Resources } from "../types"; +import { getLocalLanguage, getTranslation } from "../util/hass-translation"; const empty = () => ""; @@ -11,9 +11,12 @@ export const litLocalizeLiteMixin = >( class LitLocalizeLiteClass extends superClass { // Initialized to empty will prevent undefined errors if called before connected to DOM. @property() public localize: LocalizeFunc = empty; + @property() public resources?: Resources; + // Use browser language setup before login. @property() public language?: string = getLocalLanguage(); + @property() public translationFragment?: string; public connectedCallback(): void { @@ -53,7 +56,7 @@ export const litLocalizeLiteMixin = >( setTimeout( () => !this.resources && - // tslint:disable-next-line + // eslint-disable-next-line console.error( "Forgot to pass in resources or set translationFragment for", this.nodeName diff --git a/src/mixins/provide-hass-lit-mixin.ts b/src/mixins/provide-hass-lit-mixin.ts index afc25f399e..ba9ab227c3 100644 --- a/src/mixins/provide-hass-lit-mixin.ts +++ b/src/mixins/provide-hass-lit-mixin.ts @@ -1,17 +1,16 @@ -import { UpdatingElement, PropertyValues } from "lit-element"; -import { HomeAssistant, Constructor } from "../types"; +import { PropertyValues, UpdatingElement } from "lit-element"; +import { Constructor, HomeAssistant } from "../types"; export interface ProvideHassElement { provideHass(element: HTMLElement); } -/* tslint:disable-next-line:variable-name */ export const ProvideHassLitMixin = >( superClass: T ) => class extends superClass { protected hass!: HomeAssistant; - /* tslint:disable-next-line:variable-name */ + private __provideHass: HTMLElement[] = []; public provideHass(el) { diff --git a/src/mixins/subscribe-mixin.ts b/src/mixins/subscribe-mixin.ts index 034235fa30..a4d877a85f 100644 --- a/src/mixins/subscribe-mixin.ts +++ b/src/mixins/subscribe-mixin.ts @@ -1,19 +1,17 @@ -import { PropertyValues, property, UpdatingElement } from "lit-element"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { HomeAssistant, Constructor } from "../types"; +import { property, PropertyValues, UpdatingElement } from "lit-element"; +import { Constructor, HomeAssistant } from "../types"; export interface HassSubscribeElement { hassSubscribe(): UnsubscribeFunc[]; } -/* tslint:disable-next-line:variable-name */ export const SubscribeMixin = >( superClass: T ) => { class SubscribeClass extends superClass { @property() public hass?: HomeAssistant; - /* tslint:disable-next-line:variable-name */ private __unsubs?: UnsubscribeFunc[]; public connectedCallback() { diff --git a/src/onboarding/ha-onboarding.ts b/src/onboarding/ha-onboarding.ts index 3781e724ca..c11e3a26c7 100644 --- a/src/onboarding/ha-onboarding.ts +++ b/src/onboarding/ha-onboarding.ts @@ -1,32 +1,32 @@ import { - html, - PropertyValues, - customElement, - TemplateResult, - property, -} from "lit-element"; -import { - getAuth, + Auth, createConnection, genClientId, - Auth, + getAuth, subscribeConfig, } from "home-assistant-js-websocket"; -import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; import { + customElement, + html, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { HASSDomEvent } from "../common/dom/fire_event"; +import { subscribeOne } from "../common/util/subscribe-one"; +import { hassUrl } from "../data/auth"; +import { + fetchOnboardingOverview, + OnboardingResponses, OnboardingStep, ValidOnboardingStep, - OnboardingResponses, - fetchOnboardingOverview, } from "../data/onboarding"; +import { subscribeUser } from "../data/ws-user"; +import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; +import { HassElement } from "../state/hass-element"; import { registerServiceWorker } from "../util/register-service-worker"; -import { HASSDomEvent } from "../common/dom/fire_event"; import "./onboarding-create-user"; import "./onboarding-loading"; -import { hassUrl } from "../data/auth"; -import { HassElement } from "../state/hass-element"; -import { subscribeOne } from "../common/util/subscribe-one"; -import { subscribeUser } from "../data/ws-user"; interface OnboardingEvent { type: T; @@ -48,30 +48,32 @@ class HaOnboarding extends litLocalizeLiteMixin(HassElement) { public translationFragment = "page-onboarding"; @property() private _loading = false; + @property() private _steps?: OnboardingStep[]; protected render(): TemplateResult { const step = this._curStep()!; if (this._loading || !step) { - return html` - - `; - } else if (step.step === "user") { + return html` `; + } + if (step.step === "user") { return html` `; - } else if (step.step === "core_config") { + } + if (step.step === "core_config") { return html` `; - } else if (step.step === "integration") { + } + if (step.step === "integration") { return html` ${this.badgeIcon - ? html` - - ` + ? html` ` : ""}
    ${this.title}
    diff --git a/src/onboarding/onboarding-core-config.ts b/src/onboarding/onboarding-core-config.ts index 4cd12f4b75..0f69b3c03b 100644 --- a/src/onboarding/onboarding-core-config.ts +++ b/src/onboarding/onboarding-core-config.ts @@ -1,44 +1,48 @@ -import { - LitElement, - customElement, - property, - TemplateResult, - html, - CSSResult, - css, -} from "lit-element"; import "@material/mwc-button/mwc-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-radio-group/paper-radio-group"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { HomeAssistant } from "../types"; +import "@polymer/paper-radio-group/paper-radio-group"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../common/dom/fire_event"; +import type { LocalizeFunc } from "../common/translations/localize"; +import "../components/map/ha-location-editor"; +import { createTimezoneListEl } from "../components/timezone-datalist"; import { ConfigUpdateValues, detectCoreConfig, saveCoreConfig, } from "../data/core"; -import { PolymerChangedEvent } from "../polymer-types"; import { onboardCoreConfigStep } from "../data/onboarding"; -import { fireEvent } from "../common/dom/fire_event"; -import { LocalizeFunc } from "../common/translations/localize"; -import { createTimezoneListEl } from "../components/timezone-datalist"; -import "../components/map/ha-location-editor"; +import type { PolymerChangedEvent } from "../polymer-types"; +import type { HomeAssistant } from "../types"; const amsterdam = [52.3731339, 4.8903147]; @customElement("onboarding-core-config") class OnboardingCoreConfig extends LitElement { @property() public hass!: HomeAssistant; + @property() public onboardingLocalize!: LocalizeFunc; @property() private _working = false; @property() private _name!: ConfigUpdateValues["location_name"]; + @property() private _location!: [number, number]; + @property() private _elevation!: string; + @property() private _unitSystem!: ConfigUpdateValues["unit_system"]; + @property() private _timeZone!: string; protected render(): TemplateResult { diff --git a/src/onboarding/onboarding-create-user.ts b/src/onboarding/onboarding-create-user.ts index 0f8699e9dd..c1b6d16149 100644 --- a/src/onboarding/onboarding-create-user.ts +++ b/src/onboarding/onboarding-create-user.ts @@ -1,31 +1,37 @@ -import "@polymer/paper-input/paper-input"; import "@material/mwc-button"; +import "@polymer/paper-input/paper-input"; +import { genClientId } from "home-assistant-js-websocket"; import { - LitElement, - CSSResult, css, - html, - PropertyValues, - property, + CSSResult, customElement, + html, + LitElement, + property, + PropertyValues, TemplateResult, } from "lit-element"; -import { genClientId } from "home-assistant-js-websocket"; +import { fireEvent } from "../common/dom/fire_event"; +import { LocalizeFunc } from "../common/translations/localize"; import { onboardUserStep } from "../data/onboarding"; import { PolymerChangedEvent } from "../polymer-types"; -import { LocalizeFunc } from "../common/translations/localize"; -import { fireEvent } from "../common/dom/fire_event"; @customElement("onboarding-create-user") class OnboardingCreateUser extends LitElement { @property() public localize!: LocalizeFunc; + @property() public language!: string; @property() private _name = ""; + @property() private _username = ""; + @property() private _password = ""; + @property() private _passwordConfirm = ""; + @property() private _loading = false; + @property() private _errorMsg?: string = undefined; protected render(): TemplateResult { @@ -100,9 +106,11 @@ class OnboardingCreateUser extends LitElement { @value-changed=${this._handleValueChanged} required type='password' - .invalid=${this._password !== "" && + .invalid=${ + this._password !== "" && this._passwordConfirm !== "" && - this._passwordConfirm !== this._password} + this._passwordConfirm !== this._password + } .errorMessage="${this.localize( "ui.panel.page-onboarding.user.error.password_not_match" )}" @@ -183,7 +191,7 @@ class OnboardingCreateUser extends LitElement { result, }); } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); this._loading = false; this._errorMsg = err.body.message; diff --git a/src/onboarding/onboarding-integrations.ts b/src/onboarding/onboarding-integrations.ts index 816902c625..4ee2639e55 100644 --- a/src/onboarding/onboarding-integrations.ts +++ b/src/onboarding/onboarding-integrations.ts @@ -1,39 +1,43 @@ -import { - LitElement, - TemplateResult, - html, - customElement, - PropertyValues, - property, - CSSResult, - css, -} from "lit-element"; import "@material/mwc-button/mwc-button"; +import { genClientId } from "home-assistant-js-websocket"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../common/dom/fire_event"; +import { compare } from "../common/string/compare"; +import { LocalizeFunc } from "../common/translations/localize"; +import { ConfigEntry, getConfigEntries } from "../data/config_entries"; +import { + getConfigFlowInProgressCollection, + localizeConfigFlowTitle, + subscribeConfigFlowInProgress, +} from "../data/config_flow"; +import { DataEntryFlowProgress } from "../data/data_entry_flow"; +import { onboardIntegrationStep } from "../data/onboarding"; import { loadConfigFlowDialog, showConfigFlowDialog, } from "../dialogs/config-flow/show-dialog-config-flow"; import { HomeAssistant } from "../types"; -import { getConfigEntries, ConfigEntry } from "../data/config_entries"; -import { compare } from "../common/string/compare"; import "./integration-badge"; -import { LocalizeFunc } from "../common/translations/localize"; -import { fireEvent } from "../common/dom/fire_event"; -import { onboardIntegrationStep } from "../data/onboarding"; -import { genClientId } from "home-assistant-js-websocket"; -import { DataEntryFlowProgress } from "../data/data_entry_flow"; -import { - localizeConfigFlowTitle, - subscribeConfigFlowInProgress, - getConfigFlowInProgressCollection, -} from "../data/config_flow"; @customElement("onboarding-integrations") class OnboardingIntegrations extends LitElement { @property() public hass!: HomeAssistant; + @property() public onboardingLocalize!: LocalizeFunc; + @property() private _entries?: ConfigEntry[]; + @property() private _discovered?: DataEntryFlowProgress[]; + private _unsubEvents?: () => void; public connectedCallback() { diff --git a/src/onboarding/onboarding-loading.ts b/src/onboarding/onboarding-loading.ts index 75845879c2..96703c6a6c 100644 --- a/src/onboarding/onboarding-loading.ts +++ b/src/onboarding/onboarding-loading.ts @@ -1,18 +1,16 @@ import { + css, + CSSResult, + customElement, + html, LitElement, TemplateResult, - html, - customElement, - CSSResult, - css, } from "lit-element"; @customElement("onboarding-loading") class OnboardingLoading extends LitElement { protected render(): TemplateResult { - return html` -
    - `; + return html`
    `; } static get styles(): CSSResult { diff --git a/src/panels/calendar/ha-big-calendar.js b/src/panels/calendar/ha-big-calendar.js index 65e13eb23f..cff20e98b6 100644 --- a/src/panels/calendar/ha-big-calendar.js +++ b/src/panels/calendar/ha-big-calendar.js @@ -1,14 +1,13 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -/* eslint-disable */ -import { render } from "react-dom"; -import React from "react"; -/* eslint-enable */ -import BigCalendar from "react-big-calendar"; import moment from "moment"; +// eslint-disable-next-line import/no-duplicates,import/no-extraneous-dependencies +import React from "react"; +import BigCalendar from "react-big-calendar"; +// eslint-disable-next-line import/no-duplicates,import/no-extraneous-dependencies +import { render } from "react-dom"; import { EventsMixin } from "../../mixins/events-mixin"; - import "../../resources/ha-style"; BigCalendar.setLocalizer(BigCalendar.momentLocalizer(moment)); diff --git a/src/panels/calendar/ha-panel-calendar.js b/src/panels/calendar/ha-panel-calendar.js index a22a502c5e..3a3e432516 100644 --- a/src/panels/calendar/ha-panel-calendar.js +++ b/src/panels/calendar/ha-panel-calendar.js @@ -1,21 +1,20 @@ import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; -import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import moment from "moment"; import dates from "react-big-calendar/lib/utils/dates"; - -import "../../components/ha-menu-button"; import "../../components/ha-card"; +import "../../components/ha-menu-button"; +import LocalizeMixin from "../../mixins/localize-mixin"; import "../../resources/ha-style"; import "./ha-big-calendar"; -import LocalizeMixin from "../../mixins/localize-mixin"; - const DEFAULT_VIEW = "month"; /* @@ -195,17 +194,11 @@ class HaPanelCalendar extends LocalizeMixin(PolymerElement) { startDate = moment(this.currentDate).startOf("isoWeek"); endDate = moment(this.currentDate).endOf("isoWeek"); } else if (this.currentView === "month") { - startDate = moment(this.currentDate) - .startOf("month") - .subtract(7, "days"); - endDate = moment(this.currentDate) - .endOf("month") - .add(7, "days"); + startDate = moment(this.currentDate).startOf("month").subtract(7, "days"); + endDate = moment(this.currentDate).endOf("month").add(7, "days"); } else if (this.currentView === "agenda") { startDate = moment(this.currentDate).startOf("day"); - endDate = moment(this.currentDate) - .endOf("day") - .add(1, "month"); + endDate = moment(this.currentDate).endOf("day").add(1, "month"); } return [startDate.toISOString(), endDate.toISOString()]; } diff --git a/src/panels/config/areas/dialog-area-registry-detail.ts b/src/panels/config/areas/dialog-area-registry-detail.ts index 3bfa1a0a99..cf6b1a32a1 100644 --- a/src/panels/config/areas/dialog-area-registry-detail.ts +++ b/src/panels/config/areas/dialog-area-registry-detail.ts @@ -1,27 +1,30 @@ -import { - LitElement, - html, - css, - CSSResult, - TemplateResult, - property, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-input/paper-input"; - +import { + css, + CSSResult, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/dialog/ha-paper-dialog"; -import { AreaRegistryDetailDialogParams } from "./show-dialog-area-registry-detail"; +import { AreaRegistryEntryMutableParams } from "../../../data/area_registry"; import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; -import { AreaRegistryEntryMutableParams } from "../../../data/area_registry"; +import { AreaRegistryDetailDialogParams } from "./show-dialog-area-registry-detail"; class DialogAreaDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _name!: string; + @property() private _error?: string; + @property() private _params?: AreaRegistryDetailDialogParams; + @property() private _submitting?: boolean; public async showDialog( @@ -51,17 +54,9 @@ class DialogAreaDetail extends LitElement { : this.hass.localize("ui.panel.config.areas.editor.default_name")} - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    - ${entry - ? html` -
    Area ID: ${entry.area_id}
    - ` - : ""} + ${entry ? html`
    Area ID: ${entry.area_id}
    ` : ""} { @customElement("ha-automation-action-row") export default class HaAutomationActionRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public action!: Action; + @property() public index!: number; + @property() public totalActions!: number; + @property() private _yamlMode = false; protected render() { diff --git a/src/panels/config/automation/action/ha-automation-action.ts b/src/panels/config/automation/action/ha-automation-action.ts index 0be017cf98..35369a26df 100644 --- a/src/panels/config/automation/action/ha-automation-action.ts +++ b/src/panels/config/automation/action/ha-automation-action.ts @@ -12,12 +12,12 @@ import "../../../../components/ha-card"; import { Action } from "../../../../data/script"; import { HomeAssistant } from "../../../../types"; import "./ha-automation-action-row"; - import { HaDeviceAction } from "./types/ha-automation-action-device_id"; @customElement("ha-automation-action") export default class HaAutomationAction extends LitElement { @property() public hass!: HomeAssistant; + @property() public actions!: Action[]; protected render() { diff --git a/src/panels/config/automation/action/types/ha-automation-action-condition.ts b/src/panels/config/automation/action/types/ha-automation-action-condition.ts index 967455ffbb..195e716804 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-condition.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-condition.ts @@ -1,14 +1,14 @@ -import "../../condition/ha-automation-condition-editor"; - -import { LitElement, property, customElement, html } from "lit-element"; -import { ActionElement } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; import { Condition } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; +import "../../condition/ha-automation-condition-editor"; +import { ActionElement } from "../ha-automation-action-row"; @customElement("ha-automation-action-condition") export class HaConditionAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: Condition; public static get defaultConfig() { diff --git a/src/panels/config/automation/action/types/ha-automation-action-delay.ts b/src/panels/config/automation/action/types/ha-automation-action-delay.ts index 1559f1410b..5067408ec2 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-delay.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-delay.ts @@ -1,15 +1,15 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-service-picker"; +import { customElement, html, LitElement, property } from "lit-element"; import "../../../../../components/entity/ha-entity-picker"; - -import { LitElement, property, customElement, html } from "lit-element"; -import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; +import "../../../../../components/ha-service-picker"; import { DelayAction } from "../../../../../data/script"; +import { HomeAssistant } from "../../../../../types"; +import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; @customElement("ha-automation-action-delay") export class HaDelayAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: DelayAction; public static get defaultConfig() { diff --git a/src/panels/config/automation/action/types/ha-automation-action-device_id.ts b/src/panels/config/automation/action/types/ha-automation-action-device_id.ts index a3b0290f84..db56b9aa84 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-device_id.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-device_id.ts @@ -1,23 +1,26 @@ -import "../../../../../components/device/ha-device-picker"; -import "../../../../../components/device/ha-device-action-picker"; -import "../../../../../components/ha-form/ha-form"; - -import { - fetchDeviceActionCapabilities, - deviceAutomationsEqual, - DeviceAction, -} from "../../../../../data/device_automation"; -import { LitElement, customElement, property, html } from "lit-element"; -import { fireEvent } from "../../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, html, LitElement, property } from "lit-element"; import memoizeOne from "memoize-one"; +import { fireEvent } from "../../../../../common/dom/fire_event"; +import "../../../../../components/device/ha-device-action-picker"; +import "../../../../../components/device/ha-device-picker"; +import "../../../../../components/ha-form/ha-form"; +import { + DeviceAction, + deviceAutomationsEqual, + fetchDeviceActionCapabilities, +} from "../../../../../data/device_automation"; +import { HomeAssistant } from "../../../../../types"; @customElement("ha-automation-action-device_id") export class HaDeviceAction extends LitElement { @property() public hass!: HomeAssistant; + @property() public action!: DeviceAction; + @property() private _deviceId?: string; + @property() private _capabilities?; + private _origAction?: DeviceAction; public static get defaultConfig() { diff --git a/src/panels/config/automation/action/types/ha-automation-action-event.ts b/src/panels/config/automation/action/types/ha-automation-action-event.ts index 115b11680b..dc876a9fdd 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-event.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-event.ts @@ -1,27 +1,28 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-service-picker"; -import "../../../../../components/entity/ha-entity-picker"; -import "../../../../../components/ha-yaml-editor"; - import { + customElement, LitElement, property, - customElement, PropertyValues, query, } from "lit-element"; -import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; import { html } from "lit-html"; -import { EventAction } from "../../../../../data/script"; -// tslint:disable-next-line -import { HaYamlEditor } from "../../../../../components/ha-yaml-editor"; +import "../../../../../components/entity/ha-entity-picker"; +import "../../../../../components/ha-service-picker"; +import "../../../../../components/ha-yaml-editor"; +import type { HaYamlEditor } from "../../../../../components/ha-yaml-editor"; +import type { EventAction } from "../../../../../data/script"; +import type { HomeAssistant } from "../../../../../types"; +import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; @customElement("ha-automation-action-event") export class HaEventAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: EventAction; + @query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor; + private _actionData?: EventAction["event_data"]; public static get defaultConfig(): EventAction { diff --git a/src/panels/config/automation/action/types/ha-automation-action-scene.ts b/src/panels/config/automation/action/types/ha-automation-action-scene.ts index 112ab89b81..3399286deb 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-scene.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-scene.ts @@ -1,15 +1,15 @@ -import "../../../../../components/entity/ha-entity-picker"; - -import { LitElement, property, customElement, html } from "lit-element"; -import { ActionElement } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; +import "../../../../../components/entity/ha-entity-picker"; import { SceneAction } from "../../../../../data/script"; +import { PolymerChangedEvent } from "../../../../../polymer-types"; +import { HomeAssistant } from "../../../../../types"; +import { ActionElement } from "../ha-automation-action-row"; @customElement("ha-automation-action-scene") export class HaSceneAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: SceneAction; public static get defaultConfig(): SceneAction { diff --git a/src/panels/config/automation/action/types/ha-automation-action-service.ts b/src/panels/config/automation/action/types/ha-automation-action-service.ts index a0ac5a6ebe..4a7751e9c3 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-service.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-service.ts @@ -1,32 +1,33 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-service-picker"; -import "../../../../../components/entity/ha-entity-picker"; -import "../../../../../components/ha-yaml-editor"; - import { + customElement, LitElement, property, - customElement, PropertyValues, query, } from "lit-element"; -import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; import { html } from "lit-html"; import memoizeOne from "memoize-one"; +import { fireEvent } from "../../../../../common/dom/fire_event"; import { computeDomain } from "../../../../../common/entity/compute_domain"; import { computeObjectId } from "../../../../../common/entity/compute_object_id"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; -import { fireEvent } from "../../../../../common/dom/fire_event"; +import "../../../../../components/entity/ha-entity-picker"; +import "../../../../../components/ha-service-picker"; +import "../../../../../components/ha-yaml-editor"; +import type { HaYamlEditor } from "../../../../../components/ha-yaml-editor"; import { ServiceAction } from "../../../../../data/script"; -// tslint:disable-next-line -import { HaYamlEditor } from "../../../../../components/ha-yaml-editor"; +import type { PolymerChangedEvent } from "../../../../../polymer-types"; +import type { HomeAssistant } from "../../../../../types"; +import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; @customElement("ha-automation-action-service") export class HaServiceAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: ServiceAction; + @query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor; + private _actionData?: ServiceAction["data"]; public static get defaultConfig() { diff --git a/src/panels/config/automation/action/types/ha-automation-action-wait_template.ts b/src/panels/config/automation/action/types/ha-automation-action-wait_template.ts index 5d54469acd..d785160071 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-wait_template.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-wait_template.ts @@ -1,14 +1,14 @@ import "@polymer/paper-input/paper-input"; - -import { LitElement, property, customElement } from "lit-element"; -import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, LitElement, property } from "lit-element"; import { html } from "lit-html"; import { WaitAction } from "../../../../../data/script"; +import { HomeAssistant } from "../../../../../types"; +import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; @customElement("ha-automation-action-wait_template") export class HaWaitAction extends LitElement implements ActionElement { @property() public hass!: HomeAssistant; + @property() public action!: WaitAction; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/ha-automation-condition-editor.ts b/src/panels/config/automation/condition/ha-automation-condition-editor.ts index 4082b68265..ef6d855c4d 100644 --- a/src/panels/config/automation/condition/ha-automation-condition-editor.ts +++ b/src/panels/config/automation/condition/ha-automation-condition-editor.ts @@ -1,23 +1,21 @@ import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; -// tslint:disable-next-line -import { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox"; +import type { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox"; import { customElement, html, LitElement, property } from "lit-element"; import { dynamicElement } from "../../../../common/dom/dynamic-element-directive"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-card"; -import { HomeAssistant } from "../../../../types"; - +import type { Condition } from "../../../../data/automation"; +import type { HomeAssistant } from "../../../../types"; +import "./types/ha-automation-condition-and"; import "./types/ha-automation-condition-device"; -import "./types/ha-automation-condition-state"; import "./types/ha-automation-condition-numeric_state"; +import "./types/ha-automation-condition-or"; +import "./types/ha-automation-condition-state"; import "./types/ha-automation-condition-sun"; import "./types/ha-automation-condition-template"; import "./types/ha-automation-condition-time"; import "./types/ha-automation-condition-zone"; -import "./types/ha-automation-condition-and"; -import "./types/ha-automation-condition-or"; -import { Condition } from "../../../../data/automation"; const OPTIONS = [ "device", @@ -34,7 +32,9 @@ const OPTIONS = [ @customElement("ha-automation-condition-editor") export default class HaAutomationConditionEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: Condition; + @property() public yamlMode = false; protected render() { diff --git a/src/panels/config/automation/condition/ha-automation-condition-row.ts b/src/panels/config/automation/condition/ha-automation-condition-row.ts index e96beacab1..2a78ded2c2 100644 --- a/src/panels/config/automation/condition/ha-automation-condition-row.ts +++ b/src/panels/config/automation/condition/ha-automation-condition-row.ts @@ -11,11 +11,10 @@ import { } from "lit-element"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-card"; -import { HomeAssistant } from "../../../../types"; -import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; - -import "./ha-automation-condition-editor"; import { Condition } from "../../../../data/automation"; +import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; +import { HomeAssistant } from "../../../../types"; +import "./ha-automation-condition-editor"; export interface ConditionElement extends LitElement { condition: Condition; @@ -49,7 +48,9 @@ export const handleChangeEvent = ( @customElement("ha-automation-condition-row") export default class HaAutomationConditionRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: Condition; + @property() private _yamlMode = false; protected render() { diff --git a/src/panels/config/automation/condition/ha-automation-condition.ts b/src/panels/config/automation/condition/ha-automation-condition.ts index db368c4864..c65502bfa4 100644 --- a/src/panels/config/automation/condition/ha-automation-condition.ts +++ b/src/panels/config/automation/condition/ha-automation-condition.ts @@ -1,25 +1,23 @@ +import "@material/mwc-button"; import { - LitElement, + css, + CSSResult, customElement, html, + LitElement, property, - CSSResult, - css, } from "lit-element"; -import "@material/mwc-button"; -import "../../../../components/ha-card"; - -import { HaDeviceCondition } from "./types/ha-automation-condition-device"; - import { fireEvent } from "../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../types"; - -import "./ha-automation-condition-row"; +import "../../../../components/ha-card"; import { Condition } from "../../../../data/automation"; +import { HomeAssistant } from "../../../../types"; +import "./ha-automation-condition-row"; +import { HaDeviceCondition } from "./types/ha-automation-condition-device"; @customElement("ha-automation-condition") export default class HaAutomationCondition extends LitElement { @property() public hass!: HomeAssistant; + @property() public conditions!: Condition[]; protected render() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-and.ts b/src/panels/config/automation/condition/types/ha-automation-condition-and.ts index 111bd727b5..92148e5ffb 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-and.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-and.ts @@ -1,5 +1,5 @@ -import { HaLogicalCondition } from "./ha-automation-condition-logical"; import { customElement } from "lit-element"; +import { HaLogicalCondition } from "./ha-automation-condition-logical"; @customElement("ha-automation-condition-and") export class HaAndCondition extends HaLogicalCondition {} diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-device.ts b/src/panels/config/automation/condition/types/ha-automation-condition-device.ts index 1d5bfd4ff1..8ce4b90277 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-device.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-device.ts @@ -1,22 +1,25 @@ -import "../../../../../components/device/ha-device-picker"; +import { customElement, html, LitElement, property } from "lit-element"; +import { fireEvent } from "../../../../../common/dom/fire_event"; import "../../../../../components/device/ha-device-condition-picker"; +import "../../../../../components/device/ha-device-picker"; import "../../../../../components/ha-form/ha-form"; - import { - fetchDeviceConditionCapabilities, deviceAutomationsEqual, DeviceCondition, + fetchDeviceConditionCapabilities, } from "../../../../../data/device_automation"; -import { LitElement, customElement, property, html } from "lit-element"; -import { fireEvent } from "../../../../../common/dom/fire_event"; import { HomeAssistant } from "../../../../../types"; @customElement("ha-automation-condition-device") export class HaDeviceCondition extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: DeviceCondition; + @property() private _deviceId?: string; + @property() private _capabilities?; + private _origCondition?: DeviceCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-logical.ts b/src/panels/config/automation/condition/types/ha-automation-condition-logical.ts index 5cff91242d..d2c4b3e607 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-logical.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-logical.ts @@ -1,13 +1,14 @@ import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../../types"; -import { ConditionElement } from "../ha-automation-condition-row"; -import "../ha-automation-condition"; import { LogicalCondition } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; +import "../ha-automation-condition"; +import { ConditionElement } from "../ha-automation-condition-row"; @customElement("ha-automation-condition-logical") export class HaLogicalCondition extends LitElement implements ConditionElement { @property() public hass!: HomeAssistant; + @property() public condition!: LogicalCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-numeric_state.ts b/src/panels/config/automation/condition/types/ha-automation-condition-numeric_state.ts index 2ddb37d04b..c7755a2cf1 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-numeric_state.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-numeric_state.ts @@ -1,16 +1,16 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-textarea"; - -import "../../../../../components/entity/ha-entity-picker"; -import { LitElement, html, customElement, property } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { handleChangeEvent } from "../ha-automation-condition-row"; +import "../../../../../components/entity/ha-entity-picker"; +import "../../../../../components/ha-textarea"; import { NumericStateCondition } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; +import { handleChangeEvent } from "../ha-automation-condition-row"; @customElement("ha-automation-condition-numeric_state") export default class HaNumericStateCondition extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: NumericStateCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-or.ts b/src/panels/config/automation/condition/types/ha-automation-condition-or.ts index 796b8a012e..38152f3bbc 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-or.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-or.ts @@ -1,5 +1,5 @@ -import { HaLogicalCondition } from "./ha-automation-condition-logical"; import { customElement } from "lit-element"; +import { HaLogicalCondition } from "./ha-automation-condition-logical"; @customElement("ha-automation-condition-or") export class HaOrCondition extends HaLogicalCondition {} diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-state.ts b/src/panels/config/automation/condition/types/ha-automation-condition-state.ts index 11ff6cc085..7627c88916 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-state.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-state.ts @@ -2,17 +2,18 @@ import "@polymer/paper-input/paper-input"; import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; import "../../../../../components/entity/ha-entity-picker"; +import { StateCondition } from "../../../../../data/automation"; +import { PolymerChangedEvent } from "../../../../../polymer-types"; import { HomeAssistant } from "../../../../../types"; import { - handleChangeEvent, ConditionElement, + handleChangeEvent, } from "../ha-automation-condition-row"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; -import { StateCondition } from "../../../../../data/automation"; @customElement("ha-automation-condition-state") export class HaStateCondition extends LitElement implements ConditionElement { @property() public hass!: HomeAssistant; + @property() public condition!: StateCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-sun.ts b/src/panels/config/automation/condition/types/ha-automation-condition-sun.ts index 8975e889fa..99386c1f26 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-sun.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-sun.ts @@ -1,20 +1,20 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import { LitElement, customElement, property, html } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; -import { - handleChangeEvent, - ConditionElement, -} from "../ha-automation-condition-row"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { SunCondition } from "../../../../../data/automation"; +import type { SunCondition } from "../../../../../data/automation"; +import type { HomeAssistant } from "../../../../../types"; +import { + ConditionElement, + handleChangeEvent, +} from "../ha-automation-condition-row"; @customElement("ha-automation-condition-sun") export class HaSunCondition extends LitElement implements ConditionElement { @property() public hass!: HomeAssistant; + @property() public condition!: SunCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-template.ts b/src/panels/config/automation/condition/types/ha-automation-condition-template.ts index b33cfa6d2f..4e79bc9004 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-template.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-template.ts @@ -1,12 +1,13 @@ +import { customElement, html, LitElement, property } from "lit-element"; import "../../../../../components/ha-textarea"; -import { LitElement, property, html, customElement } from "lit-element"; +import { TemplateCondition } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent } from "../ha-automation-condition-row"; -import { TemplateCondition } from "../../../../../data/automation"; @customElement("ha-automation-condition-template") export class HaTemplateCondition extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: TemplateCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-time.ts b/src/panels/config/automation/condition/types/ha-automation-condition-time.ts index b42af4f4af..708624abfd 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-time.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-time.ts @@ -1,15 +1,16 @@ import "@polymer/paper-input/paper-input"; -import { LitElement, html, property, customElement } from "lit-element"; +import { customElement, html, LitElement, property } from "lit-element"; +import { TimeCondition } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { - handleChangeEvent, ConditionElement, + handleChangeEvent, } from "../ha-automation-condition-row"; -import { TimeCondition } from "../../../../../data/automation"; @customElement("ha-automation-condition-time") export class HaTimeCondition extends LitElement implements ConditionElement { @property() public hass!: HomeAssistant; + @property() public condition!: TimeCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-zone.ts b/src/panels/config/automation/condition/types/ha-automation-condition-zone.ts index edd2fac186..213fb1966e 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-zone.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-zone.ts @@ -1,13 +1,12 @@ import "@polymer/paper-radio-button/paper-radio-button"; -import "../../../../../components/entity/ha-entity-picker"; - -import { hasLocation } from "../../../../../common/entity/has_location"; -import { computeStateDomain } from "../../../../../common/entity/compute_state_domain"; -import { LitElement, property, html, customElement } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; +import { computeStateDomain } from "../../../../../common/entity/compute_state_domain"; +import { hasLocation } from "../../../../../common/entity/has_location"; +import "../../../../../components/entity/ha-entity-picker"; import { ZoneCondition } from "../../../../../data/automation"; +import { PolymerChangedEvent } from "../../../../../polymer-types"; +import { HomeAssistant } from "../../../../../types"; function zoneAndLocationFilter(stateObj) { return hasLocation(stateObj) && computeStateDomain(stateObj) !== "zone"; @@ -16,6 +15,7 @@ function zoneAndLocationFilter(stateObj) { @customElement("ha-automation-condition-zone") export class HaZoneCondition extends LitElement { @property() public hass!: HomeAssistant; + @property() public condition!: ZoneCondition; public static get defaultConfig() { diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts index 82acdecdda..fa7f671b90 100644 --- a/src/panels/config/automation/ha-automation-editor.ts +++ b/src/panels/config/automation/ha-automation-editor.ts @@ -44,13 +44,21 @@ import { HaDeviceTrigger } from "./trigger/types/ha-automation-trigger-device"; export class HaAutomationEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public automation!: AutomationEntity; + @property() public isWide?: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public creatingNew?: boolean; + @property() private _config?: AutomationConfig; + @property() private _dirty?: boolean; + @property() private _errors?: string; protected render(): TemplateResult { @@ -74,23 +82,15 @@ export class HaAutomationEditor extends LitElement { @click=${this._deleteConfirm} > `} - ${this._errors - ? html` -
    ${this._errors}
    - ` - : ""} + ${this._errors ? html`
    ${this._errors}
    ` : ""} ${this._config ? html` ${this.narrow - ? html` - ${this._config?.alias} - ` + ? html` ${this._config?.alias} ` : ""} ${!this.narrow - ? html` - ${this._config.alias} - ` + ? html` ${this._config.alias} ` : ""} ${this.hass.localize( @@ -298,7 +298,7 @@ export class HaAutomationEditor extends LitElement { if (changedProps.has("creatingNew") && this.creatingNew && this.hass) { const initData = getAutomationEditorInitData(); - this._dirty = initData ? true : false; + this._dirty = !!initData; this._config = { alias: this.hass.localize( "ui.panel.config.automation.editor.default_name" diff --git a/src/panels/config/automation/ha-automation-picker.ts b/src/panels/config/automation/ha-automation-picker.ts index 64dcd7b99b..68da1c886e 100644 --- a/src/panels/config/automation/ha-automation-picker.ts +++ b/src/panels/config/automation/ha-automation-picker.ts @@ -1,44 +1,46 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - property, - customElement, -} from "lit-element"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-tooltip/paper-tooltip"; -import "../../../layouts/hass-tabs-subpage-data-table"; - -import "../../../components/ha-fab"; -import "../../../components/entity/ha-entity-toggle"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { computeRTL } from "../../../common/util/compute_rtl"; -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant, Route } from "../../../types"; import { - AutomationEntity, - showAutomationEditor, - AutomationConfig, - triggerAutomation, -} from "../../../data/automation"; + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { ifDefined } from "lit-html/directives/if-defined"; +import memoizeOne from "memoize-one"; +import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { formatDateTime } from "../../../common/datetime/format_date_time"; import { fireEvent } from "../../../common/dom/fire_event"; -import { showThingtalkDialog } from "./show-dialog-thingtalk"; -import { isComponentLoaded } from "../../../common/config/is_component_loaded"; -import { configSections } from "../ha-panel-config"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { computeRTL } from "../../../common/util/compute_rtl"; import { DataTableColumnContainer } from "../../../components/data-table/ha-data-table"; -import memoizeOne from "memoize-one"; -import { ifDefined } from "lit-html/directives/if-defined"; +import "../../../components/entity/ha-entity-toggle"; +import "../../../components/ha-fab"; +import { + AutomationConfig, + AutomationEntity, + showAutomationEditor, + triggerAutomation, +} from "../../../data/automation"; +import "../../../layouts/hass-tabs-subpage-data-table"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant, Route } from "../../../types"; +import { configSections } from "../ha-panel-config"; +import { showThingtalkDialog } from "./show-dialog-thingtalk"; @customElement("ha-automation-picker") class HaAutomationPicker extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public automations!: AutomationEntity[]; private _automations = memoizeOne((automations: AutomationEntity[]) => { diff --git a/src/panels/config/automation/ha-config-automation.ts b/src/panels/config/automation/ha-config-automation.ts index e2bb568521..a6b86837b6 100644 --- a/src/panels/config/automation/ha-config-automation.ts +++ b/src/panels/config/automation/ha-config-automation.ts @@ -14,9 +14,13 @@ import "./ha-automation-picker"; @customElement("ha-config-automation") class HaConfigAutomation extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; + @property() public automations: AutomationEntity[] = []; protected routerOptions: RouterOptions = { @@ -63,7 +67,7 @@ class HaConfigAutomation extends HassRouterPage { ) { pageEl.creatingNew = undefined; const automationId = this.routeTail.path.substr(1); - pageEl.creatingNew = automationId === "new" ? true : false; + pageEl.creatingNew = automationId === "new"; pageEl.automation = automationId === "new" ? undefined diff --git a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts index 4d2ad0aee5..096b1e0e5b 100644 --- a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts +++ b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts @@ -1,30 +1,27 @@ -import { - LitElement, - html, - css, - CSSResult, - TemplateResult, - property, - customElement, - query, -} from "lit-element"; +import "@material/mwc-button"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-spinner/paper-spinner"; -import "@material/mwc-button"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + query, + TemplateResult, +} from "lit-element"; import "../../../../components/dialog/ha-paper-dialog"; -import "./ha-thingtalk-placeholders"; -import { ThingtalkDialogParams } from "../show-dialog-thingtalk"; -import { PolymerChangedEvent } from "../../../../polymer-types"; -import { haStyleDialog, haStyle } from "../../../../resources/styles"; -import { HomeAssistant } from "../../../../types"; -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { AutomationConfig } from "../../../../data/automation"; -// tslint:disable-next-line -import { PlaceholderValues } from "./ha-thingtalk-placeholders"; +import type { AutomationConfig } from "../../../../data/automation"; import { convertThingTalk } from "../../../../data/cloud"; +import type { PolymerChangedEvent } from "../../../../polymer-types"; +import { haStyle, haStyleDialog } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; +import type { ThingtalkDialogParams } from "../show-dialog-thingtalk"; +import "./ha-thingtalk-placeholders"; +import type { PlaceholderValues } from "./ha-thingtalk-placeholders"; export interface Placeholder { name: string; @@ -41,15 +38,21 @@ export interface PlaceholderContainer { @customElement("ha-dialog-thinktalk") class DialogThingtalk extends LitElement { @property() public hass!: HomeAssistant; + @property() private _error?: string; + @property() private _params?: ThingtalkDialogParams; - @property() private _submitting: boolean = false; + + @property() private _submitting = false; + @property() private _opened = false; + @property() private _placeholders?: PlaceholderContainer; @query("#input") private _input?: PaperInputElement; private _value!: string; + private _config!: Partial; public showDialog(params: ThingtalkDialogParams): void { @@ -83,11 +86,7 @@ class DialogThingtalk extends LitElement { >

    Create a new automation

    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""} Type below what this automation should do, and we will try to convert it into a Home Assistant automation. (only English is supported for now)

    diff --git a/src/panels/config/automation/thingtalk/ha-thingtalk-placeholders.ts b/src/panels/config/automation/thingtalk/ha-thingtalk-placeholders.ts index da21508a6d..ea937d71a3 100644 --- a/src/panels/config/automation/thingtalk/ha-thingtalk-placeholders.ts +++ b/src/panels/config/automation/thingtalk/ha-thingtalk-placeholders.ts @@ -1,34 +1,32 @@ +import { HassEntity } from "home-assistant-js-websocket"; import { - LitElement, - html, - TemplateResult, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../../../../components/device/ha-area-devices-picker"; - -import { HomeAssistant } from "../../../../types"; -import { PolymerChangedEvent } from "../../../../polymer-types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { haStyleDialog } from "../../../../resources/styles"; -import { PlaceholderContainer, Placeholder } from "./dialog-thingtalk"; -import { SubscribeMixin } from "../../../../mixins/subscribe-mixin"; -import { subscribeEntityRegistry } from "../../../../data/entity_registry"; import { computeDomain } from "../../../../common/entity/compute_domain"; -import { HassEntity } from "home-assistant-js-websocket"; -import { getPath, applyPatch } from "../../../../common/util/patch"; +import { applyPatch, getPath } from "../../../../common/util/patch"; +import "../../../../components/device/ha-area-devices-picker"; import { - subscribeAreaRegistry, AreaRegistryEntry, + subscribeAreaRegistry, } from "../../../../data/area_registry"; import { - subscribeDeviceRegistry, DeviceRegistryEntry, + subscribeDeviceRegistry, } from "../../../../data/device_registry"; +import { subscribeEntityRegistry } from "../../../../data/entity_registry"; +import { SubscribeMixin } from "../../../../mixins/subscribe-mixin"; +import { PolymerChangedEvent } from "../../../../polymer-types"; +import { haStyleDialog } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; +import { Placeholder, PlaceholderContainer } from "./dialog-thingtalk"; declare global { // for fire event @@ -64,15 +62,25 @@ interface DeviceEntitiesLookup { @customElement("ha-thingtalk-placeholders") export class ThingTalkPlaceholders extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public opened!: boolean; + public skip!: () => void; + @property() public placeholders!: PlaceholderContainer; + @property() private _error?: string; + private _deviceEntityLookup: DeviceEntitiesLookup = {}; + @property() private _extraInfo: ExtraInfo = {}; + @property() private _placeholderValues: PlaceholderValues = {}; + private _devices?: DeviceRegistryEntry[]; + private _areas?: AreaRegistryEntry[]; + private _search = false; public hassSubscribe() { @@ -122,11 +130,7 @@ export class ThingTalkPlaceholders extends SubscribeMixin(LitElement) { >

    Great! Now we need to link some devices.

    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""} ${Object.entries(this.placeholders).map( ([type, placeholders]) => html` @@ -200,7 +204,8 @@ export class ThingTalkPlaceholders extends SubscribeMixin(LitElement) { ` : ""} `; - } else if (placeholder.fields.includes("entity_id")) { + } + if (placeholder.fields.includes("entity_id")) { return html` ${placeholder.domains}
    ${placeholder.fields.map( - (field) => - html` - ${field}
    - ` + (field) => html` ${field}
    ` )}
    `; diff --git a/src/panels/config/automation/trigger/ha-automation-trigger-row.ts b/src/panels/config/automation/trigger/ha-automation-trigger-row.ts index 0cce5fa0be..8de3792209 100644 --- a/src/panels/config/automation/trigger/ha-automation-trigger-row.ts +++ b/src/panels/config/automation/trigger/ha-automation-trigger-row.ts @@ -1,8 +1,7 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; -// tslint:disable-next-line -import { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox"; +import type { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-menu-button/paper-menu-button"; import { css, @@ -15,16 +14,16 @@ import { import { dynamicElement } from "../../../../common/dom/dynamic-element-directive"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-card"; -import { HomeAssistant } from "../../../../types"; +import type { Trigger } from "../../../../data/automation"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; - +import type { HomeAssistant } from "../../../../types"; import "./types/ha-automation-trigger-device"; import "./types/ha-automation-trigger-event"; -import "./types/ha-automation-trigger-state"; import "./types/ha-automation-trigger-geo_location"; import "./types/ha-automation-trigger-homeassistant"; import "./types/ha-automation-trigger-mqtt"; import "./types/ha-automation-trigger-numeric_state"; +import "./types/ha-automation-trigger-state"; import "./types/ha-automation-trigger-sun"; import "./types/ha-automation-trigger-template"; import "./types/ha-automation-trigger-time"; @@ -32,8 +31,6 @@ import "./types/ha-automation-trigger-time_pattern"; import "./types/ha-automation-trigger-webhook"; import "./types/ha-automation-trigger-zone"; -import { Trigger } from "../../../../data/automation"; - const OPTIONS = [ "device", "event", @@ -79,7 +76,9 @@ export const handleChangeEvent = (element: TriggerElement, ev: CustomEvent) => { @customElement("ha-automation-trigger-row") export default class HaAutomationTriggerRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: Trigger; + @property() private _yamlMode = false; protected render() { diff --git a/src/panels/config/automation/trigger/ha-automation-trigger.ts b/src/panels/config/automation/trigger/ha-automation-trigger.ts index 407b495743..39d8467a1e 100644 --- a/src/panels/config/automation/trigger/ha-automation-trigger.ts +++ b/src/panels/config/automation/trigger/ha-automation-trigger.ts @@ -1,24 +1,23 @@ +import "@material/mwc-button"; import { - LitElement, + css, + CSSResult, customElement, html, + LitElement, property, - CSSResult, - css, } from "lit-element"; -import "@material/mwc-button"; -import "../../../../components/ha-card"; - import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/ha-card"; +import { Trigger } from "../../../../data/automation"; import { HomeAssistant } from "../../../../types"; - import "./ha-automation-trigger-row"; import { HaDeviceTrigger } from "./types/ha-automation-trigger-device"; -import { Trigger } from "../../../../data/automation"; @customElement("ha-automation-trigger") export default class HaAutomationTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public triggers!: Trigger[]; protected render() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-device.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-device.ts index 2dae62ad1b..bc41a6da57 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-device.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-device.ts @@ -1,22 +1,25 @@ +import { customElement, html, LitElement, property } from "lit-element"; +import { fireEvent } from "../../../../../common/dom/fire_event"; import "../../../../../components/device/ha-device-picker"; import "../../../../../components/device/ha-device-trigger-picker"; import "../../../../../components/ha-form/ha-form"; - import { - fetchDeviceTriggerCapabilities, deviceAutomationsEqual, DeviceTrigger, + fetchDeviceTriggerCapabilities, } from "../../../../../data/device_automation"; -import { LitElement, customElement, property, html } from "lit-element"; -import { fireEvent } from "../../../../../common/dom/fire_event"; import { HomeAssistant } from "../../../../../types"; @customElement("ha-automation-trigger-device") export class HaDeviceTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: DeviceTrigger; + @property() private _deviceId?: string; + @property() private _capabilities?; + private _origTrigger?: DeviceTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-event.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-event.ts index dfc130bc42..c8ba2e984e 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-event.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-event.ts @@ -1,18 +1,18 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-yaml-editor"; - -import { LitElement, property, customElement } from "lit-element"; -import { - TriggerElement, - handleChangeEvent, -} from "../ha-automation-trigger-row"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, LitElement, property } from "lit-element"; import { html } from "lit-html"; +import "../../../../../components/ha-yaml-editor"; import { EventTrigger } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; +import { + handleChangeEvent, + TriggerElement, +} from "../ha-automation-trigger-row"; @customElement("ha-automation-trigger-event") export class HaEventTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: EventTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-geo_location.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-geo_location.ts index 1fadc057c9..ef5f470101 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-geo_location.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-geo_location.ts @@ -1,17 +1,17 @@ import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import "../../../../../components/entity/ha-entity-picker"; -import { LitElement, customElement, property, html } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; -import { handleChangeEvent } from "../ha-automation-trigger-row"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { GeoLocationTrigger } from "../../../../../data/automation"; +import "../../../../../components/entity/ha-entity-picker"; +import type { GeoLocationTrigger } from "../../../../../data/automation"; +import type { HomeAssistant } from "../../../../../types"; +import { handleChangeEvent } from "../ha-automation-trigger-row"; @customElement("ha-automation-trigger-geo_location") export default class HaGeolocationTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: GeoLocationTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-homeassistant.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-homeassistant.ts index 2f7d6064ef..e6e2136cca 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-homeassistant.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-homeassistant.ts @@ -1,15 +1,15 @@ import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import { LitElement, html, property, customElement } from "lit-element"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../../types"; -import { HassTrigger } from "../../../../../data/automation"; +import type { HassTrigger } from "../../../../../data/automation"; +import type { HomeAssistant } from "../../../../../types"; @customElement("ha-automation-trigger-homeassistant") export default class HaHassTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: HassTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-mqtt.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-mqtt.ts index 51dde6bc27..2f55a97a9a 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-mqtt.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-mqtt.ts @@ -1,15 +1,16 @@ import "@polymer/paper-input/paper-input"; -import { LitElement, customElement, property, html } from "lit-element"; +import { customElement, html, LitElement, property } from "lit-element"; +import { MqttTrigger } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent, TriggerElement, } from "../ha-automation-trigger-row"; -import { MqttTrigger } from "../../../../../data/automation"; @customElement("ha-automation-trigger-mqtt") export class HaMQTTTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: MqttTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-numeric_state.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-numeric_state.ts index aac65f7661..8c3b151a2b 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-numeric_state.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-numeric_state.ts @@ -1,16 +1,16 @@ import "@polymer/paper-input/paper-input"; -import "../../../../../components/ha-textarea"; - -import "../../../../../components/entity/ha-entity-picker"; -import { LitElement, html, customElement, property } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; +import "../../../../../components/entity/ha-entity-picker"; +import "../../../../../components/ha-textarea"; +import { ForDict, NumericStateTrigger } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent } from "../ha-automation-trigger-row"; -import { NumericStateTrigger, ForDict } from "../../../../../data/automation"; @customElement("ha-automation-trigger-numeric_state") export default class HaNumericStateTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: NumericStateTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-state.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-state.ts index 2f93511553..02a9f03c54 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-state.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-state.ts @@ -2,17 +2,18 @@ import "@polymer/paper-input/paper-input"; import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; import "../../../../../components/entity/ha-entity-picker"; +import { ForDict, StateTrigger } from "../../../../../data/automation"; +import { PolymerChangedEvent } from "../../../../../polymer-types"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent, TriggerElement, } from "../ha-automation-trigger-row"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; -import { StateTrigger, ForDict } from "../../../../../data/automation"; @customElement("ha-automation-trigger-state") export class HaStateTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: StateTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-sun.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-sun.ts index 5bd0ea9e30..349f391842 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-sun.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-sun.ts @@ -1,20 +1,20 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import { LitElement, customElement, property, html } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { customElement, html, LitElement, property } from "lit-element"; +import { fireEvent } from "../../../../../common/dom/fire_event"; +import type { SunTrigger } from "../../../../../data/automation"; +import type { HomeAssistant } from "../../../../../types"; import { handleChangeEvent, TriggerElement, } from "../ha-automation-trigger-row"; -import { fireEvent } from "../../../../../common/dom/fire_event"; -import { SunTrigger } from "../../../../../data/automation"; @customElement("ha-automation-trigger-sun") export class HaSunTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: SunTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-template.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-template.ts index f321750103..fb5622c4b5 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-template.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-template.ts @@ -1,12 +1,13 @@ +import { customElement, html, LitElement, property } from "lit-element"; import "../../../../../components/ha-textarea"; -import { LitElement, property, html, customElement } from "lit-element"; +import { TemplateTrigger } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent } from "../ha-automation-trigger-row"; -import { TemplateTrigger } from "../../../../../data/automation"; @customElement("ha-automation-trigger-template") export class HaTemplateTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: TemplateTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-time.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-time.ts index 1a4de2776c..f308b59187 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-time.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-time.ts @@ -1,15 +1,16 @@ import "@polymer/paper-input/paper-input"; -import { LitElement, html, property, customElement } from "lit-element"; +import { customElement, html, LitElement, property } from "lit-element"; +import { TimeTrigger } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent, TriggerElement, } from "../ha-automation-trigger-row"; -import { TimeTrigger } from "../../../../../data/automation"; @customElement("ha-automation-trigger-time") export class HaTimeTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: TimeTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-time_pattern.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-time_pattern.ts index c15352abbb..db0b0dc906 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-time_pattern.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-time_pattern.ts @@ -1,15 +1,16 @@ import "@polymer/paper-input/paper-input"; -import { LitElement, property, html, customElement } from "lit-element"; -import { - TriggerElement, - handleChangeEvent, -} from "../ha-automation-trigger-row"; -import { HomeAssistant } from "../../../../../types"; +import { customElement, html, LitElement, property } from "lit-element"; import { TimePatternTrigger } from "../../../../../data/automation"; +import { HomeAssistant } from "../../../../../types"; +import { + handleChangeEvent, + TriggerElement, +} from "../ha-automation-trigger-row"; @customElement("ha-automation-trigger-time_pattern") export class HaTimePatternTrigger extends LitElement implements TriggerElement { @property() public hass!: HomeAssistant; + @property() public trigger!: TimePatternTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts index 0456665d4c..0ca2a1fe65 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts @@ -1,12 +1,13 @@ import "@polymer/paper-input/paper-input"; -import { LitElement, customElement, property, html } from "lit-element"; +import { customElement, html, LitElement, property } from "lit-element"; +import { WebhookTrigger } from "../../../../../data/automation"; import { HomeAssistant } from "../../../../../types"; import { handleChangeEvent } from "../ha-automation-trigger-row"; -import { WebhookTrigger } from "../../../../../data/automation"; @customElement("ha-automation-trigger-webhook") export class HaWebhookTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: WebhookTrigger; public static get defaultConfig() { diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-zone.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-zone.ts index 935ed86dd8..2b658e8046 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-zone.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-zone.ts @@ -1,16 +1,14 @@ import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; -// tslint:disable-next-line -import { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import "../../../../../components/entity/ha-entity-picker"; - -import { hasLocation } from "../../../../../common/entity/has_location"; -import { computeStateDomain } from "../../../../../common/entity/compute_state_domain"; -import { LitElement, property, html, customElement } from "lit-element"; -import { HomeAssistant } from "../../../../../types"; -import { PolymerChangedEvent } from "../../../../../polymer-types"; +import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; +import { customElement, html, LitElement, property } from "lit-element"; import { fireEvent } from "../../../../../common/dom/fire_event"; -import { ZoneTrigger } from "../../../../../data/automation"; +import { computeStateDomain } from "../../../../../common/entity/compute_state_domain"; +import { hasLocation } from "../../../../../common/entity/has_location"; +import "../../../../../components/entity/ha-entity-picker"; +import type { ZoneTrigger } from "../../../../../data/automation"; +import type { PolymerChangedEvent } from "../../../../../polymer-types"; +import type { HomeAssistant } from "../../../../../types"; function zoneAndLocationFilter(stateObj) { return hasLocation(stateObj) && computeStateDomain(stateObj) !== "zone"; @@ -19,6 +17,7 @@ function zoneAndLocationFilter(stateObj) { @customElement("ha-automation-trigger-zone") export class HaZoneTrigger extends LitElement { @property() public hass!: HomeAssistant; + @property() public trigger!: ZoneTrigger; public static get defaultConfig() { diff --git a/src/panels/config/cloud/account/cloud-account.js b/src/panels/config/cloud/account/cloud-account.js index 765d1a9f22..5f47122819 100644 --- a/src/panels/config/cloud/account/cloud-account.js +++ b/src/panels/config/cloud/account/cloud-account.js @@ -1,23 +1,21 @@ import "@material/mwc-button"; import "@polymer/paper-item/paper-item-body"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../../components/ha-card"; +import { formatDateTime } from "../../../../common/datetime/format_date_time"; import "../../../../components/buttons/ha-call-api-button"; +import "../../../../components/ha-card"; +import { fetchCloudSubscriptionInfo } from "../../../../data/cloud"; import "../../../../layouts/hass-subpage"; +import { EventsMixin } from "../../../../mixins/events-mixin"; +import LocalizeMixin from "../../../../mixins/localize-mixin"; import "../../../../resources/ha-style"; import "../../ha-config-section"; -import "./cloud-webhooks"; import "./cloud-alexa-pref"; import "./cloud-google-pref"; import "./cloud-remote-pref"; - -import { EventsMixin } from "../../../../mixins/events-mixin"; -import { fetchCloudSubscriptionInfo } from "../../../../data/cloud"; - -import { formatDateTime } from "../../../../common/datetime/format_date_time"; -import LocalizeMixin from "../../../../mixins/localize-mixin"; +import "./cloud-webhooks"; /* * @appliesMixin EventsMixin diff --git a/src/panels/config/cloud/account/cloud-alexa-pref.ts b/src/panels/config/cloud/account/cloud-alexa-pref.ts index 45d2deee12..bedd66fe3e 100644 --- a/src/panels/config/cloud/account/cloud-alexa-pref.ts +++ b/src/panels/config/cloud/account/cloud-alexa-pref.ts @@ -1,26 +1,25 @@ +import "@material/mwc-button"; import { + css, + CSSResult, html, LitElement, - TemplateResult, - CSSResult, - css, property, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; - +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-card"; import "../../../../components/ha-switch"; - -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../../../components/ha-switch"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../types"; -import { CloudStatusLoggedIn, updateCloudPref } from "../../../../data/cloud"; +import type { HaSwitch } from "../../../../components/ha-switch"; import { syncCloudAlexaEntities } from "../../../../data/alexa"; +import { CloudStatusLoggedIn, updateCloudPref } from "../../../../data/cloud"; +import type { HomeAssistant } from "../../../../types"; export class CloudAlexaPref extends LitElement { @property() public hass?: HomeAssistant; + @property() public cloudStatus?: CloudStatusLoggedIn; + @property() private _syncing = false; protected render(): TemplateResult { diff --git a/src/panels/config/cloud/account/cloud-google-pref.ts b/src/panels/config/cloud/account/cloud-google-pref.ts index 8cd4af956e..f701a27e8c 100644 --- a/src/panels/config/cloud/account/cloud-google-pref.ts +++ b/src/panels/config/cloud/account/cloud-google-pref.ts @@ -1,27 +1,25 @@ +import "@material/mwc-button"; +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { + css, + CSSResult, html, LitElement, - TemplateResult, - CSSResult, - css, property, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; -import "../../../../components/buttons/ha-call-api-button"; - -import "../../../../components/ha-card"; -import "../../../../components/ha-switch"; - -// tslint:disable-next-line -import { HaSwitch } from "../../../../components/ha-switch"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../types"; +import "../../../../components/buttons/ha-call-api-button"; +import "../../../../components/ha-card"; +import type { HaSwitch } from "../../../../components/ha-switch"; import { CloudStatusLoggedIn, updateCloudPref } from "../../../../data/cloud"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import type { HomeAssistant } from "../../../../types"; import { showSaveSuccessToast } from "../../../../util/toast-saved-success"; export class CloudGooglePref extends LitElement { @property() public hass?: HomeAssistant; + @property() public cloudStatus?: CloudStatusLoggedIn; protected render(): TemplateResult { diff --git a/src/panels/config/cloud/account/cloud-remote-pref.ts b/src/panels/config/cloud/account/cloud-remote-pref.ts index 3ea34f0797..7455d1d9bc 100644 --- a/src/panels/config/cloud/account/cloud-remote-pref.ts +++ b/src/panels/config/cloud/account/cloud-remote-pref.ts @@ -1,32 +1,31 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - CSSResult, - css, - property, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-item/paper-item-body"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-card"; import "../../../../components/ha-switch"; - -// tslint:disable-next-line -import { HaSwitch } from "../../../../components/ha-switch"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { HomeAssistant } from "../../../../types"; +// eslint-disable-next-line +import type { HaSwitch } from "../../../../components/ha-switch"; import { + CloudStatusLoggedIn, connectCloudRemote, disconnectCloudRemote, - CloudStatusLoggedIn, } from "../../../../data/cloud"; +import type { HomeAssistant } from "../../../../types"; import { showCloudCertificateDialog } from "../dialog-cloud-certificate/show-dialog-cloud-certificate"; @customElement("cloud-remote-pref") export class CloudRemotePref extends LitElement { @property() public hass?: HomeAssistant; + @property() public cloudStatus?: CloudStatusLoggedIn; protected render(): TemplateResult { diff --git a/src/panels/config/cloud/account/cloud-webhooks.ts b/src/panels/config/cloud/account/cloud-webhooks.ts index 8aed1c75ae..58a9053a91 100644 --- a/src/panels/config/cloud/account/cloud-webhooks.ts +++ b/src/panels/config/cloud/account/cloud-webhooks.ts @@ -1,26 +1,28 @@ -import { html, LitElement, PropertyValues, property } from "lit-element"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-spinner/paper-spinner"; - +import { html, LitElement, property, PropertyValues } from "lit-element"; import "../../../../components/ha-card"; import "../../../../components/ha-switch"; - -import { HomeAssistant, WebhookError } from "../../../../types"; -import { Webhook, fetchWebhooks } from "../../../../data/webhook"; import { + CloudStatusLoggedIn, + CloudWebhook, createCloudhook, deleteCloudhook, - CloudWebhook, - CloudStatusLoggedIn, } from "../../../../data/cloud"; +import { fetchWebhooks, Webhook } from "../../../../data/webhook"; +import { HomeAssistant, WebhookError } from "../../../../types"; import { showManageCloudhookDialog } from "../dialog-manage-cloudhook/show-dialog-manage-cloudhook"; export class CloudWebhooks extends LitElement { @property() public hass?: HomeAssistant; + @property() public cloudStatus?: CloudStatusLoggedIn; + @property() private _cloudHooks?: { [webhookId: string]: CloudWebhook }; + @property() private _localHooks?: Webhook[]; + @property() private _progress: string[]; constructor() { @@ -128,9 +130,7 @@ export class CloudWebhooks extends LitElement { )} ` - : html` - - `} + : html` `} ` ); diff --git a/src/panels/config/cloud/alexa/cloud-alexa.ts b/src/panels/config/cloud/alexa/cloud-alexa.ts index d1980bcea6..1ef8340a2a 100644 --- a/src/panels/config/cloud/alexa/cloud-alexa.ts +++ b/src/panels/config/cloud/alexa/cloud-alexa.ts @@ -1,42 +1,38 @@ -import { - LitElement, - TemplateResult, - html, - CSSResult, - css, - customElement, - property, -} from "lit-element"; import "@polymer/paper-icon-button"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import memoizeOne from "memoize-one"; - -import "../../../../layouts/hass-subpage"; -import "../../../../layouts/hass-loading-screen"; -import "../../../../components/ha-card"; -import "../../../../components/ha-switch"; -import "../../../../components/entity/state-info"; - -import { HomeAssistant } from "../../../../types"; -import { - CloudStatusLoggedIn, - CloudPreferences, - updateCloudAlexaEntityConfig, - AlexaEntityConfig, -} from "../../../../data/cloud"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { computeDomain } from "../../../../common/entity/compute_domain"; +import { computeStateName } from "../../../../common/entity/compute_state_name"; import { + EntityFilter, generateFilter, isEmptyFilter, - EntityFilter, } from "../../../../common/entity/entity_filter"; import { compare } from "../../../../common/string/compare"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { showDomainTogglerDialog } from "../../../../dialogs/domain-toggler/show-dialog-domain-toggler"; +import "../../../../components/entity/state-info"; +import "../../../../components/ha-card"; +import "../../../../components/ha-switch"; +import type { HaSwitch } from "../../../../components/ha-switch"; import { AlexaEntity, fetchCloudAlexaEntities } from "../../../../data/alexa"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../../../components/ha-switch"; - -import { computeStateName } from "../../../../common/entity/compute_state_name"; -import { computeDomain } from "../../../../common/entity/compute_domain"; +import { + AlexaEntityConfig, + CloudPreferences, + CloudStatusLoggedIn, + updateCloudAlexaEntityConfig, +} from "../../../../data/cloud"; +import { showDomainTogglerDialog } from "../../../../dialogs/domain-toggler/show-dialog-domain-toggler"; +import "../../../../layouts/hass-loading-screen"; +import "../../../../layouts/hass-subpage"; +import type { HomeAssistant } from "../../../../types"; const DEFAULT_CONFIG_EXPOSE = true; const IGNORE_INTERFACES = ["Alexa.EndpointHealth"]; @@ -59,8 +55,11 @@ class CloudAlexa extends LitElement { @property() private _entityConfigs: CloudPreferences["alexa_entity_configs"] = {}; + private _popstateSyncAttached = false; + private _popstateReloadStatusAttached = false; + private _isInitialExposed?: Set; private _getEntityFilterFunc = memoizeOne((filter: EntityFilter) => @@ -74,9 +73,7 @@ class CloudAlexa extends LitElement { protected render(): TemplateResult { if (this._entities === undefined) { - return html` - - `; + return html` `; } const emptyFilter = isEmptyFilter(this.cloudStatus.alexa_entities); const filterFunc = this._getEntityFilterFunc( @@ -152,13 +149,7 @@ class CloudAlexa extends LitElement { "ui.panel.config.cloud.alexa.title" )}"> - ${selected}${ - !this.narrow - ? html` - selected - ` - : "" - } + ${selected}${!this.narrow ? html` selected ` : ""} ${ emptyFilter diff --git a/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts b/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts index 89df7f4812..92ca9af54c 100644 --- a/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts +++ b/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts @@ -1,22 +1,18 @@ +import "@material/mwc-button"; import { - html, - LitElement, css, CSSResult, customElement, + html, + LitElement, property, } from "lit-element"; - -import "@material/mwc-button"; -import "../../../../components/dialog/ha-paper-dialog"; -// This is not a duplicate import, one is for types, one is for element. -// tslint:disable-next-line -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; - -import { HomeAssistant } from "../../../../types"; -import { haStyle } from "../../../../resources/styles"; -import { CloudCertificateParams as CloudCertificateDialogParams } from "./show-dialog-cloud-certificate"; import { formatDateTime } from "../../../../common/datetime/format_date_time"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import { haStyle } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; +import type { CloudCertificateParams as CloudCertificateDialogParams } from "./show-dialog-cloud-certificate"; @customElement("dialog-cloud-certificate") class DialogCloudCertificate extends LitElement { diff --git a/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts b/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts index b619490d2c..2e54752063 100644 --- a/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts +++ b/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts @@ -1,24 +1,20 @@ -import { html, LitElement, css, CSSResult, property } from "lit-element"; - import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; +import { css, CSSResult, html, LitElement, property } from "lit-element"; import "../../../../components/dialog/ha-paper-dialog"; -// This is not a duplicate import, one is for types, one is for element. -// tslint:disable-next-line -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line -import { PaperInputElement } from "@polymer/paper-input/paper-input"; - -import { HomeAssistant } from "../../../../types"; -import { haStyle } from "../../../../resources/styles"; -import { WebhookDialogParams } from "./show-dialog-manage-cloudhook"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; +import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; +import { WebhookDialogParams } from "./show-dialog-manage-cloudhook"; const inputLabel = "Public URL – Click to copy to clipboard"; export class DialogManageCloudhook extends LitElement { protected hass?: HomeAssistant; + @property() private _params?: WebhookDialogParams; public async showDialog(params: WebhookDialogParams) { diff --git a/src/panels/config/cloud/dialog-manage-cloudhook/show-dialog-manage-cloudhook.ts b/src/panels/config/cloud/dialog-manage-cloudhook/show-dialog-manage-cloudhook.ts index a5951e23b7..bba3c83be6 100644 --- a/src/panels/config/cloud/dialog-manage-cloudhook/show-dialog-manage-cloudhook.ts +++ b/src/panels/config/cloud/dialog-manage-cloudhook/show-dialog-manage-cloudhook.ts @@ -1,6 +1,6 @@ import { fireEvent } from "../../../../common/dom/fire_event"; -import { Webhook } from "../../../../data/webhook"; import { CloudWebhook } from "../../../../data/cloud"; +import { Webhook } from "../../../../data/webhook"; export interface WebhookDialogParams { webhook: Webhook; diff --git a/src/panels/config/cloud/forgot-password/cloud-forgot-password.js b/src/panels/config/cloud/forgot-password/cloud-forgot-password.js index b036f3bf65..656db3782c 100644 --- a/src/panels/config/cloud/forgot-password/cloud-forgot-password.js +++ b/src/panels/config/cloud/forgot-password/cloud-forgot-password.js @@ -1,13 +1,14 @@ import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../../components/ha-card"; import "../../../../components/buttons/ha-progress-button"; +import "../../../../components/ha-card"; import "../../../../layouts/hass-subpage"; -import "../../../../resources/ha-style"; import { EventsMixin } from "../../../../mixins/events-mixin"; import LocalizeMixin from "../../../../mixins/localize-mixin"; +import "../../../../resources/ha-style"; + /* * @appliesMixin EventsMixin * @appliesMixin LocalizeMixin diff --git a/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts b/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts index d964d152f0..fa38b2b254 100644 --- a/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts +++ b/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts @@ -1,47 +1,43 @@ +import "@polymer/paper-icon-button"; import { - LitElement, - TemplateResult, - html, - CSSResult, css, + CSSResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; import memoizeOne from "memoize-one"; -import "@polymer/paper-icon-button"; - -import "../../../../layouts/hass-subpage"; -import "../../../../layouts/hass-loading-screen"; -import "../../../../components/ha-card"; -import "../../../../components/entity/state-info"; -import "../../../../components/ha-switch"; - -import { HomeAssistant } from "../../../../types"; -import { - CloudStatusLoggedIn, - CloudPreferences, - updateCloudGoogleEntityConfig, - cloudSyncGoogleAssistant, - GoogleEntityConfig, -} from "../../../../data/cloud"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { computeDomain } from "../../../../common/entity/compute_domain"; +import { computeStateName } from "../../../../common/entity/compute_state_name"; import { + EntityFilter, generateFilter, isEmptyFilter, - EntityFilter, } from "../../../../common/entity/entity_filter"; import { compare } from "../../../../common/string/compare"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { showToast } from "../../../../util/toast"; -import { showDomainTogglerDialog } from "../../../../dialogs/domain-toggler/show-dialog-domain-toggler"; +import "../../../../components/entity/state-info"; +import "../../../../components/ha-card"; +import "../../../../components/ha-switch"; +import type { HaSwitch } from "../../../../components/ha-switch"; +import { + CloudPreferences, + CloudStatusLoggedIn, + cloudSyncGoogleAssistant, + GoogleEntityConfig, + updateCloudGoogleEntityConfig, +} from "../../../../data/cloud"; import { - GoogleEntity, fetchCloudGoogleEntities, + GoogleEntity, } from "../../../../data/google_assistant"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../../../components/ha-switch"; - -import { computeStateName } from "../../../../common/entity/compute_state_name"; -import { computeDomain } from "../../../../common/entity/compute_domain"; +import { showDomainTogglerDialog } from "../../../../dialogs/domain-toggler/show-dialog-domain-toggler"; +import "../../../../layouts/hass-loading-screen"; +import "../../../../layouts/hass-subpage"; +import type { HomeAssistant } from "../../../../types"; +import { showToast } from "../../../../util/toast"; const DEFAULT_CONFIG_EXPOSE = true; @@ -53,13 +49,20 @@ const configIsExposed = (config: GoogleEntityConfig) => @customElement("cloud-google-assistant") class CloudGoogleAssistant extends LitElement { @property() public hass!: HomeAssistant; + @property() public cloudStatus!: CloudStatusLoggedIn; + @property() public narrow!: boolean; + @property() private _entities?: GoogleEntity[]; + @property() private _entityConfigs: CloudPreferences["google_entity_configs"] = {}; + private _popstateSyncAttached = false; + private _popstateReloadStatusAttached = false; + private _isInitialExposed?: Set; private _getEntityFilterFunc = memoizeOne((filter: EntityFilter) => @@ -73,9 +76,7 @@ class CloudGoogleAssistant extends LitElement { protected render(): TemplateResult { if (this._entities === undefined) { - return html` - - `; + return html` `; } const emptyFilter = isEmptyFilter(this.cloudStatus.google_entities); const filterFunc = this._getEntityFilterFunc( @@ -161,13 +162,7 @@ class CloudGoogleAssistant extends LitElement { "ui.panel.config.cloud.google.title" )}"> - ${selected}${ - !this.narrow - ? html` - selected - ` - : "" - } + ${selected}${!this.narrow ? html` selected ` : ""} ${ emptyFilter diff --git a/src/panels/config/cloud/ha-config-cloud.ts b/src/panels/config/cloud/ha-config-cloud.ts index 986f206c22..93d4bef9fd 100644 --- a/src/panels/config/cloud/ha-config-cloud.ts +++ b/src/panels/config/cloud/ha-config-cloud.ts @@ -1,15 +1,15 @@ -import "./account/cloud-account"; -import "./login/cloud-login"; +import { PolymerElement } from "@polymer/polymer"; +import { customElement, property } from "lit-element"; +import { navigate } from "../../../common/navigate"; +import { CloudStatus } from "../../../data/cloud"; import { HassRouterPage, RouterOptions, } from "../../../layouts/hass-router-page"; -import { property, customElement } from "lit-element"; -import { HomeAssistant, Route } from "../../../types"; -import { navigate } from "../../../common/navigate"; -import { CloudStatus } from "../../../data/cloud"; import { PolymerChangedEvent } from "../../../polymer-types"; -import { PolymerElement } from "@polymer/polymer"; +import { HomeAssistant, Route } from "../../../types"; +import "./account/cloud-account"; +import "./login/cloud-login"; const LOGGED_IN_URLS = ["account", "google-assistant", "alexa"]; const NOT_LOGGED_IN_URLS = ["login", "register", "forgot-password"]; @@ -17,9 +17,13 @@ const NOT_LOGGED_IN_URLS = ["login", "register", "forgot-password"]; @customElement("ha-config-cloud") class HaConfigCloud extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public cloudStatus!: CloudStatus; protected routerOptions: RouterOptions = { @@ -32,10 +36,8 @@ class HaConfigCloud extends HassRouterPage { if (!LOGGED_IN_URLS.includes(page)) { return "account"; } - } else { - if (!NOT_LOGGED_IN_URLS.includes(page)) { - return "login"; - } + } else if (!NOT_LOGGED_IN_URLS.includes(page)) { + return "login"; } return undefined; }, @@ -76,8 +78,11 @@ class HaConfigCloud extends HassRouterPage { }; @property() private _flashMessage = ""; + @property() private _loginEmail = ""; + private _resolveCloudStatusLoaded!: () => void; + private _cloudStatusLoaded = new Promise((resolve) => { this._resolveCloudStatusLoaded = resolve; }); diff --git a/src/panels/config/cloud/login/cloud-login.js b/src/panels/config/cloud/login/cloud-login.js index d45f8daaf4..5f271c7987 100644 --- a/src/panels/config/cloud/login/cloud-login.js +++ b/src/panels/config/cloud/login/cloud-login.js @@ -1,22 +1,22 @@ import "@material/mwc-button"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-ripple/paper-ripple"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../../components/ha-card"; import "../../../../components/buttons/ha-progress-button"; -import "../../../../layouts/hass-subpage"; -import "../../../../resources/ha-style"; - -import "../../ha-config-section"; -import { EventsMixin } from "../../../../mixins/events-mixin"; -import NavigateMixin from "../../../../mixins/navigate-mixin"; +import "../../../../components/ha-card"; import "../../../../components/ha-icon-next"; +import "../../../../layouts/hass-subpage"; +import { EventsMixin } from "../../../../mixins/events-mixin"; import LocalizeMixin from "../../../../mixins/localize-mixin"; +import NavigateMixin from "../../../../mixins/navigate-mixin"; +import "../../../../resources/ha-style"; +import "../../ha-config-section"; + /* * @appliesMixin NavigateMixin * @appliesMixin EventsMixin diff --git a/src/panels/config/cloud/register/cloud-register.js b/src/panels/config/cloud/register/cloud-register.js index e82ecc8806..90d43735f5 100644 --- a/src/panels/config/cloud/register/cloud-register.js +++ b/src/panels/config/cloud/register/cloud-register.js @@ -1,14 +1,14 @@ import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../../components/ha-card"; import "../../../../components/buttons/ha-progress-button"; +import "../../../../components/ha-card"; import "../../../../layouts/hass-subpage"; -import "../../../../resources/ha-style"; -import "../../ha-config-section"; import { EventsMixin } from "../../../../mixins/events-mixin"; import LocalizeMixin from "../../../../mixins/localize-mixin"; +import "../../../../resources/ha-style"; +import "../../ha-config-section"; /* * @appliesMixin EventsMixin diff --git a/src/panels/config/core/ha-config-core-form.ts b/src/panels/config/core/ha-config-core-form.ts index 5e16bce60d..57dc3327d9 100644 --- a/src/panels/config/core/ha-config-core-form.ts +++ b/src/panels/config/core/ha-config-core-form.ts @@ -1,25 +1,24 @@ -import { - LitElement, - customElement, - property, - TemplateResult, - html, - CSSResult, - css, -} from "lit-element"; import "@material/mwc-button/mwc-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-radio-group/paper-radio-group"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; -import { HomeAssistant } from "../../../types"; -import "../../../components/ha-card"; -import { PolymerChangedEvent } from "../../../polymer-types"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import "@polymer/paper-radio-group/paper-radio-group"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { UNIT_C } from "../../../common/const"; -import { ConfigUpdateValues, saveCoreConfig } from "../../../data/core"; -import { createTimezoneListEl } from "../../../components/timezone-datalist"; +import "../../../components/ha-card"; import "../../../components/map/ha-location-editor"; +import { createTimezoneListEl } from "../../../components/timezone-datalist"; +import { ConfigUpdateValues, saveCoreConfig } from "../../../data/core"; +import type { PolymerChangedEvent } from "../../../polymer-types"; +import type { HomeAssistant } from "../../../types"; @customElement("ha-config-core-form") class ConfigCoreForm extends LitElement { @@ -30,7 +29,9 @@ class ConfigCoreForm extends LitElement { @property() private _location!: [number, number]; @property() private _elevation!: string; + @property() private _unitSystem!: ConfigUpdateValues["unit_system"]; + @property() private _timeZone!: string; protected render(): TemplateResult { diff --git a/src/panels/config/core/ha-config-core.js b/src/panels/config/core/ha-config-core.js index 723d74f9f1..eade141912 100644 --- a/src/panels/config/core/ha-config-core.js +++ b/src/panels/config/core/ha-config-core.js @@ -2,16 +2,13 @@ import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../layouts/hass-tabs-subpage"; -import "../../../resources/ha-style"; - -import "./ha-config-section-core"; - -import { configSections } from "../ha-panel-config"; - import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../../../resources/ha-style"; +import { configSections } from "../ha-panel-config"; +import "./ha-config-section-core"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/core/ha-config-name-form.ts b/src/panels/config/core/ha-config-name-form.ts index 63993c5f23..6543546c67 100644 --- a/src/panels/config/core/ha-config-name-form.ts +++ b/src/panels/config/core/ha-config-name-form.ts @@ -1,20 +1,19 @@ -import { - LitElement, - customElement, - property, - TemplateResult, - html, -} from "lit-element"; import "@material/mwc-button/mwc-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-radio-group/paper-radio-group"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; -import { HomeAssistant } from "../../../types"; +import "@polymer/paper-radio-group/paper-radio-group"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/ha-card"; -import { PolymerChangedEvent } from "../../../polymer-types"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperInputElement } from "@polymer/paper-input/paper-input"; import { ConfigUpdateValues, saveCoreConfig } from "../../../data/core"; +import type { PolymerChangedEvent } from "../../../polymer-types"; +import type { HomeAssistant } from "../../../types"; @customElement("ha-config-name-form") class ConfigNameForm extends LitElement { diff --git a/src/panels/config/core/ha-config-section-core.js b/src/panels/config/core/ha-config-section-core.js index 04be1e7684..e33196a147 100644 --- a/src/panels/config/core/ha-config-section-core.js +++ b/src/panels/config/core/ha-config-section-core.js @@ -1,19 +1,16 @@ import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../components/ha-card"; -import "../../../components/buttons/ha-call-service-button"; -import "../../../resources/ha-style"; - -import "../ha-config-section"; - import { isComponentLoaded } from "../../../common/config/is_component_loaded"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; import LocalizeMixin from "../../../mixins/localize-mixin"; - -import "./ha-config-name-form"; +import "../../../resources/ha-style"; +import "../ha-config-section"; import "./ha-config-core-form"; +import "./ha-config-name-form"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/customize/ha-config-customize.js b/src/panels/config/customize/ha-config-customize.js index abd812191f..12ce05aba7 100644 --- a/src/panels/config/customize/ha-config-customize.js +++ b/src/panels/config/customize/ha-config-customize.js @@ -1,21 +1,18 @@ import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../layouts/hass-tabs-subpage"; -import "../../../resources/ha-style"; +import { computeStateDomain } from "../../../common/entity/compute_state_domain"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { sortStatesByName } from "../../../common/entity/states_sort_by_name"; import "../../../components/ha-paper-icon-button-arrow-prev"; - +import "../../../layouts/hass-tabs-subpage"; +import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../../../resources/ha-style"; import "../ha-config-section"; import "../ha-entity-config"; -import "./ha-form-customize"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { computeStateDomain } from "../../../common/entity/compute_state_domain"; -import { sortStatesByName } from "../../../common/entity/states_sort_by_name"; -import LocalizeMixin from "../../../mixins/localize-mixin"; - import { configSections } from "../ha-panel-config"; +import "./ha-form-customize"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/customize/ha-customize-attribute.js b/src/panels/config/customize/ha-customize-attribute.js index fdfc7f9dad..2ab31914f7 100644 --- a/src/panels/config/customize/ha-customize-attribute.js +++ b/src/panels/config/customize/ha-customize-attribute.js @@ -1,7 +1,7 @@ import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import hassAttributeUtil from "../../../util/hass-attributes-util"; import "../ha-form-style"; import "./types/ha-customize-array"; diff --git a/src/panels/config/customize/ha-form-customize-attributes.js b/src/panels/config/customize/ha-form-customize-attributes.js index c71779c885..2c0def4524 100644 --- a/src/panels/config/customize/ha-form-customize-attributes.js +++ b/src/panels/config/customize/ha-form-customize-attributes.js @@ -1,7 +1,7 @@ import { MutableData } from "@polymer/polymer/lib/mixins/mutable-data"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "./ha-customize-attribute"; class HaFormCustomizeAttributes extends MutableData(PolymerElement) { diff --git a/src/panels/config/customize/ha-form-customize.js b/src/panels/config/customize/ha-form-customize.js index 4f486b3575..90844f93f4 100644 --- a/src/panels/config/customize/ha-form-customize.js +++ b/src/panels/config/customize/ha-form-customize.js @@ -2,14 +2,13 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; +import { computeStateDomain } from "../../../common/entity/compute_state_domain"; import LocalizeMixin from "../../../mixins/localize-mixin"; - import hassAttributeUtil from "../../../util/hass-attributes-util"; import "./ha-form-customize-attributes"; -import { computeStateDomain } from "../../../common/entity/compute_state_domain"; - class HaFormCustomize extends LocalizeMixin(PolymerElement) { static get template() { return html` diff --git a/src/panels/config/customize/types/ha-customize-array.js b/src/panels/config/customize/types/ha-customize-array.js index c300a8ed91..fe7147d0e9 100644 --- a/src/panels/config/customize/types/ha-customize-array.js +++ b/src/panels/config/customize/types/ha-customize-array.js @@ -2,8 +2,8 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { EventsMixin } from "../../../../mixins/events-mixin"; /* diff --git a/src/panels/config/customize/types/ha-customize-boolean.js b/src/panels/config/customize/types/ha-customize-boolean.js index b4483acfff..bf6aa5c7db 100644 --- a/src/panels/config/customize/types/ha-customize-boolean.js +++ b/src/panels/config/customize/types/ha-customize-boolean.js @@ -1,5 +1,6 @@ import "@polymer/paper-checkbox/paper-checkbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaCustomizeBoolean extends PolymerElement { diff --git a/src/panels/config/customize/types/ha-customize-icon.js b/src/panels/config/customize/types/ha-customize-icon.js index 563d9e3f99..919719fbd5 100644 --- a/src/panels/config/customize/types/ha-customize-icon.js +++ b/src/panels/config/customize/types/ha-customize-icon.js @@ -1,6 +1,7 @@ import "@polymer/iron-icon/iron-icon"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaCustomizeIcon extends PolymerElement { diff --git a/src/panels/config/customize/types/ha-customize-key-value.js b/src/panels/config/customize/types/ha-customize-key-value.js index e30b9b0e6a..528ee13694 100644 --- a/src/panels/config/customize/types/ha-customize-key-value.js +++ b/src/panels/config/customize/types/ha-customize-key-value.js @@ -1,5 +1,6 @@ import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaCustomizeKeyValue extends PolymerElement { diff --git a/src/panels/config/customize/types/ha-customize-string.js b/src/panels/config/customize/types/ha-customize-string.js index e1c94a0c29..71b142a5a1 100644 --- a/src/panels/config/customize/types/ha-customize-string.js +++ b/src/panels/config/customize/types/ha-customize-string.js @@ -1,5 +1,6 @@ import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaCustomizeString extends PolymerElement { diff --git a/src/panels/config/dashboard/ha-config-dashboard.ts b/src/panels/config/dashboard/ha-config-dashboard.ts index a24e7cb76e..3671555353 100644 --- a/src/panels/config/dashboard/ha-config-dashboard.ts +++ b/src/panels/config/dashboard/ha-config-dashboard.ts @@ -1,36 +1,36 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - customElement, - property, -} from "lit-element"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; - -import "../../../components/ha-menu-button"; - -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; -import { CloudStatus } from "../../../data/cloud"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; - import "../../../components/ha-card"; import "../../../components/ha-icon-next"; - +import "../../../components/ha-menu-button"; +import { CloudStatus } from "../../../data/cloud"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; import "../ha-config-section"; -import "./ha-config-navigation"; import { configSections } from "../ha-panel-config"; +import "./ha-config-navigation"; @customElement("ha-config-dashboard") class HaConfigDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public cloudStatus?: CloudStatus; + @property() public showAdvanced!: boolean; protected render(): TemplateResult { diff --git a/src/panels/config/dashboard/ha-config-navigation.ts b/src/panels/config/dashboard/ha-config-navigation.ts index 2d0116daf1..56b899aeac 100644 --- a/src/panels/config/dashboard/ha-config-navigation.ts +++ b/src/panels/config/dashboard/ha-config-navigation.ts @@ -1,28 +1,28 @@ import "@polymer/iron-icon/iron-icon"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-icon-item"; - +import "@polymer/paper-item/paper-item-body"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; - import "../../../components/ha-card"; import "../../../components/ha-icon-next"; -import { - LitElement, - html, - TemplateResult, - property, - customElement, - CSSResult, - css, -} from "lit-element"; -import { HomeAssistant } from "../../../types"; import { CloudStatus, CloudStatusLoggedIn } from "../../../data/cloud"; import { PageNavigation } from "../../../layouts/hass-tabs-subpage"; +import { HomeAssistant } from "../../../types"; @customElement("ha-config-navigation") class HaConfigNavigation extends LitElement { @property() public hass!: HomeAssistant; + @property() public showAdvanced!: boolean; + @property() public pages!: PageNavigation[]; protected render(): TemplateResult { diff --git a/src/panels/config/devices/device-detail/ha-device-actions-card.ts b/src/panels/config/devices/device-detail/ha-device-actions-card.ts index 45b933b343..a5d5e4507f 100644 --- a/src/panels/config/devices/device-detail/ha-device-actions-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-actions-card.ts @@ -1,16 +1,15 @@ import { customElement } from "lit-element"; +import "../../../../components/ha-card"; import { DeviceAction, localizeDeviceAutomationAction, } from "../../../../data/device_automation"; - -import "../../../../components/ha-card"; - import { HaDeviceAutomationCard } from "./ha-device-automation-card"; @customElement("ha-device-actions-card") export class HaDeviceActionsCard extends HaDeviceAutomationCard { protected type = "action"; + protected headerKey = "ui.panel.config.devices.automation.actions.caption"; constructor() { diff --git a/src/panels/config/devices/device-detail/ha-device-automation-card.ts b/src/panels/config/devices/device-detail/ha-device-automation-card.ts index c2ca072ab6..3549a9b9b8 100644 --- a/src/panels/config/devices/device-detail/ha-device-automation-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-automation-card.ts @@ -1,28 +1,31 @@ import { - LitElement, - TemplateResult, - html, - property, - CSSResult, css, + CSSResult, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../../types"; -import { DeviceAutomation } from "../../../../data/device_automation"; - import "../../../../components/ha-card"; import "../../../../components/ha-chips"; import { showAutomationEditor } from "../../../../data/automation"; +import { DeviceAutomation } from "../../../../data/device_automation"; import { showScriptEditor } from "../../../../data/script"; +import { HomeAssistant } from "../../../../types"; export abstract class HaDeviceAutomationCard< T extends DeviceAutomation > extends LitElement { @property() public hass!: HomeAssistant; + @property() public deviceId?: string; + @property() public script = false; + @property() public automations: T[] = []; protected headerKey = ""; + protected type = ""; private _localizeDeviceAutomation: ( diff --git a/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts b/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts index 7514d29bb8..326cf503b8 100644 --- a/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts +++ b/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts @@ -1,34 +1,37 @@ import { - LitElement, - html, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - import "../../../../components/ha-dialog"; -import "./ha-device-triggers-card"; -import "./ha-device-conditions-card"; -import "./ha-device-actions-card"; -import { DeviceAutomationDialogParams } from "./show-dialog-device-automation"; -import { HomeAssistant } from "../../../../types"; import { - DeviceTrigger, - DeviceCondition, DeviceAction, - fetchDeviceTriggers, - fetchDeviceConditions, + DeviceCondition, + DeviceTrigger, fetchDeviceActions, + fetchDeviceConditions, + fetchDeviceTriggers, } from "../../../../data/device_automation"; import { haStyleDialog } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; +import "./ha-device-actions-card"; +import "./ha-device-conditions-card"; +import "./ha-device-triggers-card"; +import { DeviceAutomationDialogParams } from "./show-dialog-device-automation"; @customElement("dialog-device-automation") export class DialogDeviceAutomation extends LitElement { @property() public hass!: HomeAssistant; + @property() private _triggers: DeviceTrigger[] = []; + @property() private _conditions: DeviceCondition[] = []; + @property() private _actions: DeviceAction[] = []; + @property() private _params?: DeviceAutomationDialogParams; public async showDialog(params: DeviceAutomationDialogParams): Promise { @@ -53,18 +56,18 @@ export class DialogDeviceAutomation extends LitElement { const { deviceId, script } = this._params; - fetchDeviceActions(this.hass, deviceId).then( - (actions) => (this._actions = actions) - ); + fetchDeviceActions(this.hass, deviceId).then((actions) => { + this._actions = actions; + }); if (script) { return; } - fetchDeviceTriggers(this.hass, deviceId).then( - (triggers) => (this._triggers = triggers) - ); - fetchDeviceConditions(this.hass, deviceId).then( - (conditions) => (this._conditions = conditions) - ); + fetchDeviceTriggers(this.hass, deviceId).then((triggers) => { + this._triggers = triggers; + }); + fetchDeviceConditions(this.hass, deviceId).then((conditions) => { + this._conditions = conditions; + }); } protected render(): TemplateResult | void { diff --git a/src/panels/config/devices/device-detail/ha-device-card-mqtt.ts b/src/panels/config/devices/device-detail/ha-device-card-mqtt.ts index a4233b7c8a..cce083ac15 100644 --- a/src/panels/config/devices/device-detail/ha-device-card-mqtt.ts +++ b/src/panels/config/devices/device-detail/ha-device-card-mqtt.ts @@ -1,20 +1,21 @@ -import { DeviceRegistryEntry } from "../../../../data/device_registry"; -import { removeMQTTDeviceEntry } from "../../../../data/mqtt"; import { - LitElement, - html, + CSSResult, customElement, + html, + LitElement, property, TemplateResult, - CSSResult, } from "lit-element"; +import { DeviceRegistryEntry } from "../../../../data/device_registry"; +import { removeMQTTDeviceEntry } from "../../../../data/mqtt"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; -import { HomeAssistant } from "../../../../types"; import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-device-card-mqtt") export class HaDeviceCardMqtt extends LitElement { @property() public hass!: HomeAssistant; + @property() public device!: DeviceRegistryEntry; protected render(): TemplateResult { diff --git a/src/panels/config/devices/device-detail/ha-device-conditions-card.ts b/src/panels/config/devices/device-detail/ha-device-conditions-card.ts index a56119d480..74fbd99b33 100644 --- a/src/panels/config/devices/device-detail/ha-device-conditions-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-conditions-card.ts @@ -1,11 +1,9 @@ import { customElement } from "lit-element"; +import "../../../../components/ha-card"; import { DeviceCondition, localizeDeviceAutomationCondition, } from "../../../../data/device_automation"; - -import "../../../../components/ha-card"; - import { HaDeviceAutomationCard } from "./ha-device-automation-card"; @customElement("ha-device-conditions-card") @@ -13,6 +11,7 @@ export class HaDeviceConditionsCard extends HaDeviceAutomationCard< DeviceCondition > { protected type = "condition"; + protected headerKey = "ui.panel.config.devices.automation.conditions.caption"; constructor() { diff --git a/src/panels/config/devices/device-detail/ha-device-entities-card.ts b/src/panels/config/devices/device-detail/ha-device-entities-card.ts index dcf006bf08..23bb2af680 100644 --- a/src/panels/config/devices/device-detail/ha-device-entities-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-entities-card.ts @@ -1,40 +1,41 @@ +import "@polymer/paper-item/paper-icon-item"; +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import { - LitElement, - TemplateResult, - html, - property, - customElement, css, CSSResult, - queryAll, + customElement, + html, + LitElement, + property, PropertyValues, + queryAll, + TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../../types"; - -import "../../../../components/entity/state-badge"; - -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-item/paper-item-body"; - -import "../../../../components/ha-card"; -import "../../../../components/ha-icon"; -import { showEntityEditorDialog } from "../../entities/show-dialog-entity-editor"; import { computeDomain } from "../../../../common/entity/compute_domain"; import { domainIcon } from "../../../../common/entity/domain_icon"; -import { EntityRegistryStateEntry } from "../ha-config-device-page"; -import { addEntitiesToLovelaceView } from "../../../lovelace/editor/add-entities-to-view"; +import "../../../../components/entity/state-badge"; +import "../../../../components/ha-card"; +import "../../../../components/ha-icon"; +import { HomeAssistant } from "../../../../types"; import { createRowElement } from "../../../lovelace/create-element/create-row-element"; +import { addEntitiesToLovelaceView } from "../../../lovelace/editor/add-entities-to-view"; import { LovelaceRow } from "../../../lovelace/entity-rows/types"; +import { showEntityEditorDialog } from "../../entities/show-dialog-entity-editor"; +import { EntityRegistryStateEntry } from "../ha-config-device-page"; @customElement("ha-device-entities-card") export class HaDeviceEntitiesCard extends LitElement { @property() public hass!: HomeAssistant; + @property() public deviceId!: string; + @property() public entities!: EntityRegistryStateEntry[]; + @property() public narrow!: boolean; + @property() private _showDisabled = false; + @queryAll("#entities > *") private _entityRows?: LovelaceRow[]; protected updated(changedProps: PropertyValues): void { @@ -126,9 +127,7 @@ export class HaDeviceEntitiesCard extends LitElement { element.entry = entry; element.addEventListener("hass-more-info", (ev) => this._openEditEntry(ev)); - return html` -
    ${element}
    - `; + return html`
    ${element}
    `; } private _renderEntry(entry: EntityRegistryStateEntry): TemplateResult { diff --git a/src/panels/config/devices/device-detail/ha-device-info-card.ts b/src/panels/config/devices/device-detail/ha-device-info-card.ts index 7ad3e79ea4..67cbabc5ce 100644 --- a/src/panels/config/devices/device-detail/ha-device-info-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-info-card.ts @@ -1,26 +1,30 @@ import { - DeviceRegistryEntry, - computeDeviceName, -} from "../../../../data/device_registry"; -import { loadDeviceRegistryDetailDialog } from "../../../../dialogs/device-registry-detail/show-dialog-device-registry-detail"; -import { - LitElement, - html, + css, + CSSResult, customElement, + html, + LitElement, property, TemplateResult, - CSSResult, - css, } from "lit-element"; -import { HomeAssistant } from "../../../../types"; import { AreaRegistryEntry } from "../../../../data/area_registry"; +import { + computeDeviceName, + DeviceRegistryEntry, +} from "../../../../data/device_registry"; +import { loadDeviceRegistryDetailDialog } from "../../../../dialogs/device-registry-detail/show-dialog-device-registry-detail"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-device-info-card") export class HaDeviceCard extends LitElement { @property() public hass!: HomeAssistant; + @property() public device!: DeviceRegistryEntry; + @property() public devices!: DeviceRegistryEntry[]; + @property() public areas!: AreaRegistryEntry[]; + @property() public narrow!: boolean; protected render(): TemplateResult { @@ -28,9 +32,7 @@ export class HaDeviceCard extends LitElement {
    ${this.device.model - ? html` -
    ${this.device.model}
    - ` + ? html`
    ${this.device.model}
    ` : ""} ${this.device.manufacturer ? html` diff --git a/src/panels/config/devices/device-detail/ha-device-triggers-card.ts b/src/panels/config/devices/device-detail/ha-device-triggers-card.ts index 7920681605..40d6e458f0 100644 --- a/src/panels/config/devices/device-detail/ha-device-triggers-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-triggers-card.ts @@ -3,7 +3,6 @@ import { DeviceTrigger, localizeDeviceAutomationTrigger, } from "../../../../data/device_automation"; - import { HaDeviceAutomationCard } from "./ha-device-automation-card"; @customElement("ha-device-triggers-card") @@ -11,6 +10,7 @@ export class HaDeviceTriggersCard extends HaDeviceAutomationCard< DeviceTrigger > { protected type = "trigger"; + protected headerKey = "ui.panel.config.devices.automation.triggers.caption"; constructor() { diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index b6f02d3812..bb2daabd0c 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -13,8 +13,8 @@ import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { computeStateName } from "../../../common/entity/compute_state_name"; import { createValidEntityId } from "../../../common/entity/valid_entity_id"; import { compare } from "../../../common/string/compare"; -import "../../../components/ha-icon-next"; import "../../../components/entity/ha-state-icon"; +import "../../../components/ha-icon-next"; import { AreaRegistryEntry } from "../../../data/area_registry"; import { ConfigEntry } from "../../../data/config_entries"; import { @@ -50,15 +50,25 @@ export interface EntityRegistryStateEntry extends EntityRegistryEntry { @customElement("ha-config-device-page") export class HaConfigDevicePage extends LitElement { @property() public hass!: HomeAssistant; + @property() public devices!: DeviceRegistryEntry[]; + @property() public entries!: ConfigEntry[]; + @property() public entities!: EntityRegistryEntry[]; + @property() public areas!: AreaRegistryEntry[]; + @property() public deviceId!: string; + @property({ type: Boolean, reflect: true }) public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; + @property() public route!: Route; + @property() private _related?: RelatedResult; private _device = memoizeOne( diff --git a/src/panels/config/devices/ha-config-devices-dashboard.ts b/src/panels/config/devices/ha-config-devices-dashboard.ts index 28bc4922e0..885873e253 100644 --- a/src/panels/config/devices/ha-config-devices-dashboard.ts +++ b/src/panels/config/devices/ha-config-devices-dashboard.ts @@ -1,46 +1,53 @@ -import "../../../layouts/hass-tabs-subpage-data-table"; - import { - LitElement, - html, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import { HomeAssistant, Route } from "../../../types"; -import { - DeviceRegistryEntry, - computeDeviceName, - DeviceEntityLookup, -} from "../../../data/device_registry"; -import { - EntityRegistryEntry, - findBatteryEntity, -} from "../../../data/entity_registry"; -import { ConfigEntry } from "../../../data/config_entries"; -import { AreaRegistryEntry } from "../../../data/area_registry"; -import { configSections } from "../ha-panel-config"; import memoizeOne from "memoize-one"; +import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; import { LocalizeFunc } from "../../../common/translations/localize"; -import { DeviceRowData } from "./ha-devices-data-table"; import { DataTableColumnContainer, DataTableRowData, RowClickedEvent, } from "../../../components/data-table/ha-data-table"; -import { navigate } from "../../../common/navigate"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { AreaRegistryEntry } from "../../../data/area_registry"; +import { ConfigEntry } from "../../../data/config_entries"; +import { + computeDeviceName, + DeviceEntityLookup, + DeviceRegistryEntry, +} from "../../../data/device_registry"; +import { + EntityRegistryEntry, + findBatteryEntity, +} from "../../../data/entity_registry"; +import "../../../layouts/hass-tabs-subpage-data-table"; +import { HomeAssistant, Route } from "../../../types"; +import { configSections } from "../ha-panel-config"; +import { DeviceRowData } from "./ha-devices-data-table"; @customElement("ha-config-devices-dashboard") export class HaConfigDeviceDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property() public isWide = false; + @property() public devices!: DeviceRegistryEntry[]; + @property() public entries!: ConfigEntry[]; + @property() public entities!: EntityRegistryEntry[]; + @property() public areas!: AreaRegistryEntry[]; + @property() public domain!: string; + @property() public route!: Route; private _devices = memoizeOne( @@ -160,9 +167,7 @@ export class HaConfigDeviceDashboard extends LitElement { .stateObj=${battery} > ` - : html` - - - `; + : html` - `; }, }, } @@ -228,9 +233,7 @@ export class HaConfigDeviceDashboard extends LitElement { .stateObj=${battery} > ` - : html` - - - `; + : html` - `; }, }, } diff --git a/src/panels/config/devices/ha-config-devices.ts b/src/panels/config/devices/ha-config-devices.ts index 191e520181..f02b1f1178 100644 --- a/src/panels/config/devices/ha-config-devices.ts +++ b/src/panels/config/devices/ha-config-devices.ts @@ -1,32 +1,35 @@ -import "./ha-config-devices-dashboard"; -import "./ha-config-device-page"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; +import { customElement, property, PropertyValues } from "lit-element"; import { compare } from "../../../common/string/compare"; import { - subscribeAreaRegistry, AreaRegistryEntry, + subscribeAreaRegistry, } from "../../../data/area_registry"; -import { - HassRouterPage, - RouterOptions, -} from "../../../layouts/hass-router-page"; -import { property, customElement, PropertyValues } from "lit-element"; -import { HomeAssistant } from "../../../types"; import { ConfigEntry, getConfigEntries } from "../../../data/config_entries"; +import { + DeviceRegistryEntry, + subscribeDeviceRegistry, +} from "../../../data/device_registry"; import { EntityRegistryEntry, subscribeEntityRegistry, } from "../../../data/entity_registry"; import { - DeviceRegistryEntry, - subscribeDeviceRegistry, -} from "../../../data/device_registry"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; + HassRouterPage, + RouterOptions, +} from "../../../layouts/hass-router-page"; +import { HomeAssistant } from "../../../types"; +import "./ha-config-device-page"; +import "./ha-config-devices-dashboard"; @customElement("ha-config-devices") class HaConfigDevices extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; protected routerOptions: RouterOptions = { @@ -43,8 +46,11 @@ class HaConfigDevices extends HassRouterPage { }; @property() private _configEntries: ConfigEntry[] = []; + @property() private _entityRegistryEntries: EntityRegistryEntry[] = []; + @property() private _deviceRegistryEntries: DeviceRegistryEntry[] = []; + @property() private _areas: AreaRegistryEntry[] = []; private _unsubs?: UnsubscribeFunc[]; diff --git a/src/panels/config/devices/ha-devices-data-table.ts b/src/panels/config/devices/ha-devices-data-table.ts index 9a0bbdfc5c..e0ab9b78b8 100644 --- a/src/panels/config/devices/ha-devices-data-table.ts +++ b/src/panels/config/devices/ha-devices-data-table.ts @@ -1,36 +1,32 @@ -import "../../../components/data-table/ha-data-table"; -import "../../../components/entity/ha-state-icon"; - -import memoizeOne from "memoize-one"; - import { - LitElement, - html, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../types"; -// tslint:disable-next-line -import { +import memoizeOne from "memoize-one"; +import { navigate } from "../../../common/navigate"; +import { LocalizeFunc } from "../../../common/translations/localize"; +import "../../../components/data-table/ha-data-table"; +import type { DataTableColumnContainer, - RowClickedEvent, DataTableRowData, + RowClickedEvent, } from "../../../components/data-table/ha-data-table"; -// tslint:disable-next-line +import "../../../components/entity/ha-state-icon"; +import type { AreaRegistryEntry } from "../../../data/area_registry"; +import type { ConfigEntry } from "../../../data/config_entries"; import { - DeviceRegistryEntry, computeDeviceName, DeviceEntityLookup, + DeviceRegistryEntry, } from "../../../data/device_registry"; import { EntityRegistryEntry, findBatteryEntity, } from "../../../data/entity_registry"; -import { ConfigEntry } from "../../../data/config_entries"; -import { AreaRegistryEntry } from "../../../data/area_registry"; -import { navigate } from "../../../common/navigate"; -import { LocalizeFunc } from "../../../common/translations/localize"; +import type { HomeAssistant } from "../../../types"; export interface DeviceRowData extends DeviceRegistryEntry { device?: DeviceRowData; @@ -42,11 +38,17 @@ export interface DeviceRowData extends DeviceRegistryEntry { @customElement("ha-devices-data-table") export class HaDevicesDataTable extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property() public devices!: DeviceRegistryEntry[]; + @property() public entries!: ConfigEntry[]; + @property() public entities!: EntityRegistryEntry[]; + @property() public areas!: AreaRegistryEntry[]; + @property() public domain!: string; private _devices = memoizeOne( @@ -221,9 +223,7 @@ export class HaDevicesDataTable extends LitElement { .stateObj=${battery} > ` - : html` - - - `; + : html` - `; }, }, } diff --git a/src/panels/config/entities/dialog-entity-editor.ts b/src/panels/config/entities/dialog-entity-editor.ts index 8122cfd666..24a8928abe 100644 --- a/src/panels/config/entities/dialog-entity-editor.ts +++ b/src/panels/config/entities/dialog-entity-editor.ts @@ -13,24 +13,23 @@ import { TemplateResult, } from "lit-element"; import { cache } from "lit-html/directives/cache"; -import { PLATFORMS_WITH_SETTINGS_TAB } from "./const"; import { dynamicElement } from "../../../common/dom/dynamic-element-directive"; import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; import "../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line: no-duplicate-imports -import { HaPaperDialog } from "../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../components/dialog/ha-paper-dialog"; import "../../../components/ha-related-items"; import { EntityRegistryEntry, ExtEntityRegistryEntry, getExtendedEntityRegistryEntry, } from "../../../data/entity_registry"; -import { PolymerChangedEvent } from "../../../polymer-types"; +import type { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; +import type { HomeAssistant } from "../../../types"; +import { PLATFORMS_WITH_SETTINGS_TAB } from "./const"; import "./entity-registry-settings"; -import { EntityRegistryDetailDialogParams } from "./show-dialog-entity-editor"; +import type { EntityRegistryDetailDialogParams } from "./show-dialog-entity-editor"; interface Tabs { [key: string]: Tab; @@ -44,15 +43,22 @@ interface Tab { @customElement("dialog-entity-editor") export class DialogEntityEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: EntityRegistryDetailDialogParams; + @property() private _entry?: | EntityRegistryEntry | ExtEntityRegistryEntry | null; + @property() private _curTab?: string; + @property() private _extraTabs: Tabs = {}; + @property() private _settingsElementTag?: string; + @query("ha-paper-dialog") private _dialog!: HaPaperDialog; + private _curTabIndex = 0; public async showDialog( diff --git a/src/panels/config/entities/editor-tabs/settings/entity-settings-helper-tab.ts b/src/panels/config/entities/editor-tabs/settings/entity-settings-helper-tab.ts index 5332e305e4..24ef2e3046 100644 --- a/src/panels/config/entities/editor-tabs/settings/entity-settings-helper-tab.ts +++ b/src/panels/config/entities/editor-tabs/settings/entity-settings-helper-tab.ts @@ -43,16 +43,15 @@ import { updateInputText, } from "../../../../../data/input_text"; import { showConfirmationDialog } from "../../../../../dialogs/generic/show-dialog-box"; -import { HomeAssistant } from "../../../../../types"; +import type { HomeAssistant } from "../../../../../types"; +import type { Helper } from "../../../helpers/const"; import "../../../helpers/forms/ha-input_boolean-form"; -import "../../../helpers/forms/ha-input_text-form"; import "../../../helpers/forms/ha-input_datetime-form"; -import "../../../helpers/forms/ha-input_select-form"; import "../../../helpers/forms/ha-input_number-form"; -import { Helper } from "../../../helpers/const"; +import "../../../helpers/forms/ha-input_select-form"; +import "../../../helpers/forms/ha-input_text-form"; import "../../entity-registry-basic-editor"; -// tslint:disable-next-line: no-duplicate-imports -import { HaEntityRegistryBasicEditor } from "../../entity-registry-basic-editor"; +import type { HaEntityRegistryBasicEditor } from "../../entity-registry-basic-editor"; const HELPERS = { input_boolean: { @@ -85,12 +84,19 @@ const HELPERS = { @customElement("entity-settings-helper-tab") export class EntityRegistrySettingsHelper extends LitElement { @property() public hass!: HomeAssistant; + @property() public entry!: ExtEntityRegistryEntry; + @property() public dialogElement!: HaPaperDialog; + @property() private _error?: string; + @property() private _item?: Helper | null; + @property() private _submitting?: boolean; + @property() private _componentLoaded?: boolean; + @query("ha-registry-basic-editor") private _registryEditor?: HaEntityRegistryBasicEditor; @@ -115,11 +121,7 @@ export class EntityRegistrySettingsHelper extends LitElement { const stateObj = this.hass.states[this.entry.entity_id]; return html` - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    ${!this._componentLoaded ? this.hass.localize( @@ -149,7 +151,7 @@ export class EntityRegistrySettingsHelper extends LitElement { class="warning" @click=${this._confirmDeleteItem} .disabled=${this._submitting || - (!this._item && !stateObj?.attributes.restored)} + (!this._item && !stateObj?.attributes.restored)} > ${this.hass.localize("ui.dialogs.entity_registry.editor.delete")} diff --git a/src/panels/config/entities/entity-registry-basic-editor.ts b/src/panels/config/entities/entity-registry-basic-editor.ts index b2ea726182..419321241f 100644 --- a/src/panels/config/entities/entity-registry-basic-editor.ts +++ b/src/panels/config/entities/entity-registry-basic-editor.ts @@ -1,33 +1,36 @@ -import { - html, - css, - LitElement, - TemplateResult, - property, - customElement, - PropertyValues, -} from "lit-element"; - import "@polymer/paper-input/paper-input"; -import "../../../components/ha-switch"; import { - ExtEntityRegistryEntry, + css, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import "../../../components/ha-switch"; +import type { HaSwitch } from "../../../components/ha-switch"; +import { EntityRegistryEntryUpdateParams, + ExtEntityRegistryEntry, updateEntityRegistryEntry, } from "../../../data/entity_registry"; -import { HomeAssistant } from "../../../types"; -import { PolymerChangedEvent } from "../../../polymer-types"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../../components/ha-switch"; -import { computeDomain } from "../../../common/entity/compute_domain"; +import type { PolymerChangedEvent } from "../../../polymer-types"; +import type { HomeAssistant } from "../../../types"; @customElement("ha-registry-basic-editor") export class HaEntityRegistryBasicEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public entry!: ExtEntityRegistryEntry; + @property() private _origEntityId!: string; + @property() private _entityId!: string; + @property() private _disabledBy!: string | null; + @property() private _submitting?: boolean; public async updateEntry(): Promise { @@ -40,8 +43,6 @@ export class HaEntityRegistryBasicEditor extends LitElement { } try { await updateEntityRegistryEntry(this.hass!, this._origEntityId, params); - } catch (err) { - throw err; } finally { this._submitting = false; } diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index d26b1461fc..4fb5140153 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -12,32 +12,40 @@ import { } from "lit-element"; import { fireEvent } from "../../../common/dom/fire_event"; import { computeDomain } from "../../../common/entity/compute_domain"; -import "../../../components/ha-switch"; import "../../../components/ha-icon-input"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../../components/ha-switch"; +import "../../../components/ha-switch"; +import type { HaSwitch } from "../../../components/ha-switch"; import { - removeEntityRegistryEntry, - updateEntityRegistryEntry, EntityRegistryEntryUpdateParams, ExtEntityRegistryEntry, + removeEntityRegistryEntry, + updateEntityRegistryEntry, } from "../../../data/entity_registry"; import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import { HomeAssistant } from "../../../types"; +import type { PolymerChangedEvent } from "../../../polymer-types"; import { haStyle } from "../../../resources/styles"; +import type { HomeAssistant } from "../../../types"; @customElement("entity-registry-settings") export class EntityRegistrySettings extends LitElement { @property() public hass!: HomeAssistant; + @property() public entry!: ExtEntityRegistryEntry; + @property() public dialogElement!: HTMLElement; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _entityId!: string; + @property() private _disabledBy!: string | null; + @property() private _error?: string; + @property() private _submitting?: boolean; + private _origEntityId!: string; protected updated(changedProperties: PropertyValues) { @@ -73,11 +81,7 @@ export class EntityRegistrySettings extends LitElement {
    ` : ""} - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    ${this.hass.localize("ui.dialogs.entity_registry.editor.delete")} diff --git a/src/panels/config/entities/ha-config-entities.ts b/src/panels/config/entities/ha-config-entities.ts index 00b61c8761..f9c793bb8b 100644 --- a/src/panels/config/entities/ha-config-entities.ts +++ b/src/panels/config/entities/ha-config-entities.ts @@ -14,19 +14,22 @@ import { query, TemplateResult, } from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; import { styleMap } from "lit-html/directives/style-map"; import memoize from "memoize-one"; +import type { HASSDomEvent } from "../../../common/dom/fire_event"; import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateName } from "../../../common/entity/compute_state_name"; import { domainIcon } from "../../../common/entity/domain_icon"; import { stateIcon } from "../../../common/entity/state_icon"; -import { +import "../../../common/search/search-input"; +import type { DataTableColumnContainer, DataTableColumnData, RowClickedEvent, SelectionChangedEvent, } from "../../../components/data-table/ha-data-table"; import "../../../components/ha-icon"; -import "../../../common/search/search-input"; import { computeEntityRegistryName, EntityRegistryEntry, @@ -37,19 +40,15 @@ import { import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box"; import "../../../layouts/hass-loading-screen"; import "../../../layouts/hass-tabs-subpage-data-table"; +import type { HaTabsSubpageDataTable } from "../../../layouts/hass-tabs-subpage-data-table"; import { SubscribeMixin } from "../../../mixins/subscribe-mixin"; -import { HomeAssistant, Route } from "../../../types"; +import type { HomeAssistant, Route } from "../../../types"; +import { configSections } from "../ha-panel-config"; import { DialogEntityEditor } from "./dialog-entity-editor"; import { loadEntityEditorDialog, showEntityEditorDialog, } from "./show-dialog-entity-editor"; -import { configSections } from "../ha-panel-config"; -import { classMap } from "lit-html/directives/class-map"; -import { computeStateName } from "../../../common/entity/compute_state_name"; -// tslint:disable-next-line: no-duplicate-imports -import { HaTabsSubpageDataTable } from "../../../layouts/hass-tabs-subpage-data-table"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; export interface StateEntity extends EntityRegistryEntry { readonly?: boolean; @@ -66,18 +65,30 @@ export interface EntityRow extends StateEntity { @customElement("ha-config-entities") export class HaConfigEntities extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() private _entities?: EntityRegistryEntry[]; + @property() private _stateEntities: StateEntity[] = []; + @property() private _showDisabled = false; + @property() private _showUnavailable = true; + @property() private _showReadOnly = true; + @property() private _filter = ""; + @property() private _selectedEntities: string[] = []; + @query("hass-tabs-subpage-data-table") private _dataTable!: HaTabsSubpageDataTable; + private getDialog?: () => DialogEntityEditor | undefined; private _columns = memoize( @@ -156,7 +167,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { ${name}
    ${entity.entity_id} | ${this.hass.localize(`component.${entity.platform}.config.title`) || - entity.platform} + entity.platform} `; }; columns.status = statusColumn; @@ -196,7 +207,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { showReadOnly: boolean ): EntityRow[] => { if (!showDisabled) { - entities = entities.filter((entity) => !Boolean(entity.disabled_by)); + entities = entities.filter((entity) => !entity.disabled_by); } const result: EntityRow[] = []; @@ -264,9 +275,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { protected render(): TemplateResult { if (!this.hass || this._entities === undefined) { - return html` - - `; + return html` `; } const headerToolbar = this._selectedEntities.length ? html` diff --git a/src/panels/config/ha-config-section.ts b/src/panels/config/ha-config-section.ts index 2e4e70db3c..5f76bdfdd2 100644 --- a/src/panels/config/ha-config-section.ts +++ b/src/panels/config/ha-config-section.ts @@ -1,9 +1,9 @@ -import { customElement, LitElement, html, css, property } from "lit-element"; +import { css, customElement, html, LitElement, property } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; @customElement("ha-config-section") export class HaConfigSection extends LitElement { - @property() public isWide: boolean = false; + @property() public isWide = false; protected render() { return html` diff --git a/src/panels/config/ha-entity-config.js b/src/panels/config/ha-entity-config.js index c026143958..da870762c0 100644 --- a/src/panels/config/ha-entity-config.js +++ b/src/panels/config/ha-entity-config.js @@ -4,10 +4,10 @@ import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; -import "../../components/ha-card"; - import { computeStateName } from "../../common/entity/compute_state_name"; +import "../../components/ha-card"; class HaEntityConfig extends PolymerElement { static get template() { @@ -180,7 +180,7 @@ class HaEntityConfig extends PolymerElement { var oldEntityId = oldEntities[this.selectedEntity].entity_id; - var newIndex = entities.findIndex(function(ent) { + var newIndex = entities.findIndex(function (ent) { return ent.entity_id === oldEntityId; }); @@ -198,16 +198,18 @@ class HaEntityConfig extends PolymerElement { if (!entity) return; this.formState = "loading"; + // eslint-disable-next-line @typescript-eslint/no-this-alias var el = this; - this.formEl.loadEntity(entity).then(function() { + this.formEl.loadEntity(entity).then(function () { el.formState = "editing"; }); } saveEntity() { this.formState = "saving"; + // eslint-disable-next-line @typescript-eslint/no-this-alias var el = this; - this.formEl.saveEntity().then(function() { + this.formEl.saveEntity().then(function () { el.formState = "editing"; }); } diff --git a/src/panels/config/ha-panel-config.ts b/src/panels/config/ha-panel-config.ts index d39c741185..2b7b3529e6 100644 --- a/src/panels/config/ha-panel-config.ts +++ b/src/panels/config/ha-panel-config.ts @@ -1,14 +1,14 @@ -import { property, PropertyValues, customElement } from "lit-element"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; -import "../../layouts/hass-loading-screen"; -import { isComponentLoaded } from "../../common/config/is_component_loaded"; -import { HomeAssistant, Route } from "../../types"; -import { CloudStatus, fetchCloudStatus } from "../../data/cloud"; -import { listenMediaQuery } from "../../common/dom/media_query"; -import { HassRouterPage, RouterOptions } from "../../layouts/hass-router-page"; +import "@polymer/paper-item/paper-item-body"; import { PolymerElement } from "@polymer/polymer"; +import { customElement, property, PropertyValues } from "lit-element"; +import { isComponentLoaded } from "../../common/config/is_component_loaded"; +import { listenMediaQuery } from "../../common/dom/media_query"; +import { CloudStatus, fetchCloudStatus } from "../../data/cloud"; +import "../../layouts/hass-loading-screen"; +import { HassRouterPage, RouterOptions } from "../../layouts/hass-router-page"; import { PageNavigation } from "../../layouts/hass-tabs-subpage"; +import { HomeAssistant, Route } from "../../types"; declare global { // for fire event @@ -147,7 +147,9 @@ export const configSections: { [name: string]: PageNavigation[] } = { @customElement("ha-panel-config") class HaPanelConfig extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public route!: Route; protected routerOptions: RouterOptions = { @@ -289,8 +291,10 @@ class HaPanelConfig extends HassRouterPage { }, }; - @property() private _wideSidebar: boolean = false; - @property() private _wide: boolean = false; + @property() private _wideSidebar = false; + + @property() private _wide = false; + @property() private _cloudStatus?: CloudStatus; private _listeners: Array<() => void> = []; diff --git a/src/panels/config/helpers/const.ts b/src/panels/config/helpers/const.ts index 944abf5bd1..d273290613 100644 --- a/src/panels/config/helpers/const.ts +++ b/src/panels/config/helpers/const.ts @@ -1,12 +1,8 @@ import { InputBoolean } from "../../../data/input_boolean"; - -import { InputText } from "../../../data/input_text"; - -import { InputNumber } from "../../../data/input_number"; - -import { InputSelect } from "../../../data/input_select"; - import { InputDateTime } from "../../../data/input_datetime"; +import { InputNumber } from "../../../data/input_number"; +import { InputSelect } from "../../../data/input_select"; +import { InputText } from "../../../data/input_text"; export const HELPER_DOMAINS = [ "input_boolean", diff --git a/src/panels/config/helpers/dialog-helper-detail.ts b/src/panels/config/helpers/dialog-helper-detail.ts index df24aeccb0..4f1db280d8 100644 --- a/src/panels/config/helpers/dialog-helper-detail.ts +++ b/src/panels/config/helpers/dialog-helper-detail.ts @@ -1,3 +1,5 @@ +import "@polymer/paper-item/paper-icon-item"; +import "@polymer/paper-tooltip/paper-tooltip"; import { css, CSSResult, @@ -5,29 +7,27 @@ import { html, LitElement, property, - TemplateResult, query, + TemplateResult, } from "lit-element"; -import "../../../components/ha-dialog"; -import { HomeAssistant } from "../../../types"; -import { dynamicElement } from "../../../common/dom/dynamic-element-directive"; -import { createInputBoolean } from "../../../data/input_boolean"; -import { createInputText } from "../../../data/input_text"; -import { createInputNumber } from "../../../data/input_number"; -import { createInputDateTime } from "../../../data/input_datetime"; -import { createInputSelect } from "../../../data/input_select"; -import { isComponentLoaded } from "../../../common/config/is_component_loaded"; -import { Helper } from "./const"; -import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-tooltip/paper-tooltip"; -import "./forms/ha-input_boolean-form"; -import "./forms/ha-input_text-form"; -import "./forms/ha-input_datetime-form"; -import "./forms/ha-input_select-form"; -import "./forms/ha-input_number-form"; -import { domainIcon } from "../../../common/entity/domain_icon"; import { classMap } from "lit-html/directives/class-map"; +import { isComponentLoaded } from "../../../common/config/is_component_loaded"; +import { dynamicElement } from "../../../common/dom/dynamic-element-directive"; +import { domainIcon } from "../../../common/entity/domain_icon"; +import "../../../components/ha-dialog"; +import { createInputBoolean } from "../../../data/input_boolean"; +import { createInputDateTime } from "../../../data/input_datetime"; +import { createInputNumber } from "../../../data/input_number"; +import { createInputSelect } from "../../../data/input_select"; +import { createInputText } from "../../../data/input_text"; import { haStyleDialog } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; +import { Helper } from "./const"; +import "./forms/ha-input_boolean-form"; +import "./forms/ha-input_datetime-form"; +import "./forms/ha-input_number-form"; +import "./forms/ha-input_select-form"; +import "./forms/ha-input_text-form"; const HELPERS = { input_boolean: createInputBoolean, @@ -40,11 +40,17 @@ const HELPERS = { @customElement("dialog-helper-detail") export class DialogHelperDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _item?: Helper; + @property() private _opened = false; + @property() private _platform?: string; + @property() private _error?: string; + @property() private _submitting = false; + @query(".form") private _form?: HTMLDivElement; public async showDialog(): Promise { @@ -81,9 +87,7 @@ export class DialogHelperDetail extends LitElement { ? html`
    ${this._error - ? html` -
    ${this._error}
    - ` + ? html`
    ${this._error}
    ` : ""} ${dynamicElement(`ha-${this._platform}-form`, { hass: this.hass, diff --git a/src/panels/config/helpers/forms/ha-input_boolean-form.ts b/src/panels/config/helpers/forms/ha-input_boolean-form.ts index 1d1bfe6b35..fc44075538 100644 --- a/src/panels/config/helpers/forms/ha-input_boolean-form.ts +++ b/src/panels/config/helpers/forms/ha-input_boolean-form.ts @@ -1,28 +1,30 @@ +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; - -import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; -import { InputBoolean } from "../../../../data/input_boolean"; import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/ha-icon-input"; +import "../../../../components/ha-switch"; +import { InputBoolean } from "../../../../data/input_boolean"; import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-input_boolean-form") class HaInputBooleanForm extends LitElement { @property() public hass!: HomeAssistant; + @property() public new?: boolean; + private _item?: InputBoolean; + @property() private _name!: string; + @property() private _icon!: string; set item(item: InputBoolean) { diff --git a/src/panels/config/helpers/forms/ha-input_datetime-form.ts b/src/panels/config/helpers/forms/ha-input_datetime-form.ts index 2e71669226..98532d7ba0 100644 --- a/src/panels/config/helpers/forms/ha-input_datetime-form.ts +++ b/src/panels/config/helpers/forms/ha-input_datetime-form.ts @@ -1,29 +1,32 @@ +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; - -import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { haStyle } from "../../../../resources/styles"; +import "../../../../components/ha-icon-input"; +import "../../../../components/ha-switch"; import { InputDateTime } from "../../../../data/input_datetime"; +import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-input_datetime-form") class HaInputDateTimeForm extends LitElement { @property() public hass!: HomeAssistant; + @property() public new?: boolean; + private _item?: InputDateTime; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _mode!: "date" | "time" | "datetime"; set item(item: InputDateTime) { diff --git a/src/panels/config/helpers/forms/ha-input_number-form.ts b/src/panels/config/helpers/forms/ha-input_number-form.ts index 99a4dddf14..c1a6340e7d 100644 --- a/src/panels/config/helpers/forms/ha-input_number-form.ts +++ b/src/panels/config/helpers/forms/ha-input_number-form.ts @@ -1,34 +1,41 @@ +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; - -import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { haStyle } from "../../../../resources/styles"; +import "../../../../components/ha-icon-input"; +import "../../../../components/ha-switch"; import { InputNumber } from "../../../../data/input_number"; +import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-input_number-form") class HaInputNumberForm extends LitElement { @property() public hass!: HomeAssistant; + @property() public new?: boolean; + private _item?: Partial; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _max?: number; + @property() private _min?: number; + @property() private _mode?: string; + @property() private _step?: number; - // tslint:disable-next-line: variable-name + + // eslint-disable-next-line: variable-name @property() private _unit_of_measurement?: string; set item(item: InputNumber) { diff --git a/src/panels/config/helpers/forms/ha-input_select-form.ts b/src/panels/config/helpers/forms/ha-input_select-form.ts index 6b0a23b24b..bfbe3a1c3a 100644 --- a/src/panels/config/helpers/forms/ha-input_select-form.ts +++ b/src/panels/config/helpers/forms/ha-input_select-form.ts @@ -1,34 +1,37 @@ +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, query, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; - -import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { haStyle } from "../../../../resources/styles"; -import { InputSelect } from "../../../../data/input_select"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import "../../../../components/ha-icon-input"; +import "../../../../components/ha-switch"; +import type { InputSelect } from "../../../../data/input_select"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; +import { haStyle } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; @customElement("ha-input_select-form") class HaInputSelectForm extends LitElement { @property() public hass!: HomeAssistant; + @property() public new?: boolean; + private _item?: InputSelect; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _options: string[] = []; + @query("#option_input") private _optionInput?: PaperInputElement; set item(item: InputSelect) { diff --git a/src/panels/config/helpers/forms/ha-input_text-form.ts b/src/panels/config/helpers/forms/ha-input_text-form.ts index aa9cde3041..5967c8f481 100644 --- a/src/panels/config/helpers/forms/ha-input_text-form.ts +++ b/src/panels/config/helpers/forms/ha-input_text-form.ts @@ -1,32 +1,38 @@ +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; - -import "../../../../components/ha-switch"; -import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; -import { InputText } from "../../../../data/input_text"; import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/ha-icon-input"; +import "../../../../components/ha-switch"; +import { InputText } from "../../../../data/input_text"; import { haStyle } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; @customElement("ha-input_text-form") class HaInputTextForm extends LitElement { @property() public hass!: HomeAssistant; + @property() public new?: boolean; + private _item?: InputText; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _max?: number; + @property() private _min?: number; + @property() private _mode?: string; + @property() private _pattern?: string; set item(item: InputText) { diff --git a/src/panels/config/helpers/ha-config-helpers.ts b/src/panels/config/helpers/ha-config-helpers.ts index 0841b0a9fc..fb5af2a7d2 100644 --- a/src/panels/config/helpers/ha-config-helpers.ts +++ b/src/panels/config/helpers/ha-config-helpers.ts @@ -5,17 +5,18 @@ import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-tooltip/paper-tooltip"; import { HassEntity } from "home-assistant-js-websocket"; import { + css, + CSSResult, customElement, html, LitElement, property, PropertyValues, TemplateResult, - CSSResult, - css, } from "lit-element"; import memoize from "memoize-one"; import { computeStateDomain } from "../../../common/entity/compute_state_domain"; +import { domainIcon } from "../../../common/entity/domain_icon"; import "../../../common/search/search-input"; import { DataTableColumnContainer, @@ -26,18 +27,21 @@ import "../../../components/ha-icon"; import "../../../layouts/hass-loading-screen"; import "../../../layouts/hass-tabs-subpage-data-table"; import { HomeAssistant, Route } from "../../../types"; -import { configSections } from "../ha-panel-config"; import { showEntityEditorDialog } from "../entities/show-dialog-entity-editor"; -import { showHelperDetailDialog } from "./show-dialog-helper-detail"; +import { configSections } from "../ha-panel-config"; import { HELPER_DOMAINS } from "./const"; -import { domainIcon } from "../../../common/entity/domain_icon"; +import { showHelperDetailDialog } from "./show-dialog-helper-detail"; @customElement("ha-config-helpers") export class HaConfigHelpers extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() private _stateItems: HassEntity[] = []; private _columns = memoize( @@ -91,7 +95,7 @@ export class HaConfigHelpers extends LitElement { template: (type) => html` ${this.hass.localize(`ui.panel.config.helpers.types.${type}`) || - type} + type} `, }; columns.editable = { @@ -134,9 +138,7 @@ export class HaConfigHelpers extends LitElement { protected render(): TemplateResult { if (!this.hass || this._stateItems === undefined) { - return html` - - `; + return html` `; } return html` diff --git a/src/panels/config/integrations/config-entry/ha-ce-entities-card.js b/src/panels/config/integrations/config-entry/ha-ce-entities-card.js index 63cd18774d..343c801bf1 100644 --- a/src/panels/config/integrations/config-entry/ha-ce-entities-card.js +++ b/src/panels/config/integrations/config-entry/ha-ce-entities-card.js @@ -1,15 +1,14 @@ import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-item-body"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import "../../../../components/entity/state-badge"; import "../../../../components/ha-card"; +import { computeEntityRegistryName } from "../../../../data/entity_registry"; import "../../../../layouts/hass-subpage"; - import { EventsMixin } from "../../../../mixins/events-mixin"; import LocalizeMixIn from "../../../../mixins/localize-mixin"; -import "../../../../components/entity/state-badge"; -import { computeEntityRegistryName } from "../../../../data/entity_registry"; /* * @appliesMixin LocalizeMixIn diff --git a/src/panels/config/integrations/config-entry/ha-config-entry-page.ts b/src/panels/config/integrations/config-entry/ha-config-entry-page.ts index bc2923aed4..d02eaa66a3 100755 --- a/src/panels/config/integrations/config-entry/ha-config-entry-page.ts +++ b/src/panels/config/integrations/config-entry/ha-config-entry-page.ts @@ -1,34 +1,39 @@ +import { css, CSSResult, html, LitElement, property } from "lit-element"; import memoizeOne from "memoize-one"; -import "../../../../layouts/hass-subpage"; -import "../../../../layouts/hass-error-screen"; - -import "../../devices/ha-devices-data-table"; -import "./ha-ce-entities-card"; -import { showOptionsFlowDialog } from "../../../../dialogs/config-flow/show-dialog-options-flow"; -import { property, LitElement, CSSResult, css, html } from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; import { navigate } from "../../../../common/navigate"; -import { HomeAssistant } from "../../../../types"; +import { AreaRegistryEntry } from "../../../../data/area_registry"; import { ConfigEntry, deleteConfigEntry, } from "../../../../data/config_entries"; -import { EntityRegistryEntry } from "../../../../data/entity_registry"; import { DeviceRegistryEntry } from "../../../../data/device_registry"; -import { AreaRegistryEntry } from "../../../../data/area_registry"; -import { fireEvent } from "../../../../common/dom/fire_event"; +import { EntityRegistryEntry } from "../../../../data/entity_registry"; import { showConfigEntrySystemOptionsDialog } from "../../../../dialogs/config-entry-system-options/show-dialog-config-entry-system-options"; +import { showOptionsFlowDialog } from "../../../../dialogs/config-flow/show-dialog-options-flow"; import { showAlertDialog, showConfirmationDialog, } from "../../../../dialogs/generic/show-dialog-box"; +import "../../../../layouts/hass-error-screen"; +import "../../../../layouts/hass-subpage"; +import { HomeAssistant } from "../../../../types"; +import "../../devices/ha-devices-data-table"; +import "./ha-ce-entities-card"; class HaConfigEntryPage extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public configEntryId!: string; + @property() public configEntries!: ConfigEntry[]; + @property() public entityRegistryEntries!: EntityRegistryEntry[]; + @property() public deviceRegistryEntries!: DeviceRegistryEntry[]; + @property() public areas!: AreaRegistryEntry[]; private get _configEntry(): ConfigEntry | undefined { diff --git a/src/panels/config/integrations/ha-config-entries-dashboard.ts b/src/panels/config/integrations/ha-config-entries-dashboard.ts index 0b6387d3fa..6873673dd2 100644 --- a/src/panels/config/integrations/ha-config-entries-dashboard.ts +++ b/src/panels/config/integrations/ha-config-entries-dashboard.ts @@ -1,57 +1,57 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; -import "@polymer/paper-tooltip/paper-tooltip"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/iron-icon/iron-icon"; -import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; - +import "@polymer/paper-listbox/paper-listbox"; +import "@polymer/paper-tooltip/paper-tooltip"; import { HassEntity } from "home-assistant-js-websocket"; - -import "../../../components/ha-card"; -import "../../../components/ha-icon-next"; -import "../../../components/ha-fab"; -import "../../../components/entity/ha-state-icon"; -import "../../../layouts/hass-tabs-subpage"; -import "../../../resources/ha-style"; -import "../../../components/ha-icon"; - -import { computeRTL } from "../../../common/util/compute_rtl"; -import "../ha-config-section"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; +import { computeRTL } from "../../../common/util/compute_rtl"; +import "../../../components/entity/ha-state-icon"; +import "../../../components/ha-card"; +import "../../../components/ha-fab"; +import "../../../components/ha-icon"; +import "../../../components/ha-icon-next"; +import { ConfigEntry, deleteConfigEntry } from "../../../data/config_entries"; +import { + DISCOVERY_SOURCES, + ignoreConfigFlow, + localizeConfigFlowTitle, +} from "../../../data/config_flow"; +import { DataEntryFlowProgress } from "../../../data/data_entry_flow"; +import { EntityRegistryEntry } from "../../../data/entity_registry"; import { loadConfigFlowDialog, showConfigFlowDialog, } from "../../../dialogs/config-flow/show-dialog-config-flow"; -import { - localizeConfigFlowTitle, - ignoreConfigFlow, - DISCOVERY_SOURCES, -} from "../../../data/config_flow"; -import { - LitElement, - TemplateResult, - html, - property, - customElement, - css, - CSSResult, -} from "lit-element"; -import { HomeAssistant, Route } from "../../../types"; -import { ConfigEntry, deleteConfigEntry } from "../../../data/config_entries"; -import { fireEvent } from "../../../common/dom/fire_event"; -import { EntityRegistryEntry } from "../../../data/entity_registry"; -import { DataEntryFlowProgress } from "../../../data/data_entry_flow"; import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box"; +import "../../../layouts/hass-tabs-subpage"; +import "../../../resources/ha-style"; +import { HomeAssistant, Route } from "../../../types"; +import "../ha-config-section"; import { configSections } from "../ha-panel-config"; @customElement("ha-config-entries-dashboard") export class HaConfigManagerDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public showAdvanced!: boolean; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; @property() private configEntries!: ConfigEntry[]; @@ -66,6 +66,7 @@ export class HaConfigManagerDashboard extends LitElement { * For example, can be discovered devices that require more config. */ @property() private configEntriesInProgress!: DataEntryFlowProgress[]; + @property() private _showIgnored = false; public connectedCallback() { diff --git a/src/panels/config/integrations/ha-config-integrations.ts b/src/panels/config/integrations/ha-config-integrations.ts index 511f4e6390..15cf0a5804 100644 --- a/src/panels/config/integrations/ha-config-integrations.ts +++ b/src/panels/config/integrations/ha-config-integrations.ts @@ -1,33 +1,32 @@ import "@polymer/app-route/app-route"; -import { property, customElement, PropertyValues } from "lit-element"; - -import "./ha-config-entries-dashboard"; -import "./config-entry/ha-config-entry-page"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; +import { customElement, property, PropertyValues } from "lit-element"; import { compare } from "../../../common/string/compare"; import { - subscribeAreaRegistry, AreaRegistryEntry, + subscribeAreaRegistry, } from "../../../data/area_registry"; -import { - HassRouterPage, - RouterOptions, -} from "../../../layouts/hass-router-page"; -import { HomeAssistant } from "../../../types"; import { ConfigEntry, getConfigEntries } from "../../../data/config_entries"; +import { + getConfigFlowInProgressCollection, + subscribeConfigFlowInProgress, +} from "../../../data/config_flow"; +import { DataEntryFlowProgress } from "../../../data/data_entry_flow"; +import { + DeviceRegistryEntry, + subscribeDeviceRegistry, +} from "../../../data/device_registry"; import { EntityRegistryEntry, subscribeEntityRegistry, } from "../../../data/entity_registry"; import { - DeviceRegistryEntry, - subscribeDeviceRegistry, -} from "../../../data/device_registry"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { DataEntryFlowProgress } from "../../../data/data_entry_flow"; -import { - subscribeConfigFlowInProgress, - getConfigFlowInProgressCollection, -} from "../../../data/config_flow"; + HassRouterPage, + RouterOptions, +} from "../../../layouts/hass-router-page"; +import { HomeAssistant } from "../../../types"; +import "./config-entry/ha-config-entry-page"; +import "./ha-config-entries-dashboard"; declare global { interface HASSDomEvents { @@ -38,8 +37,11 @@ declare global { @customElement("ha-config-integrations") class HaConfigIntegrations extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; protected routerOptions: RouterOptions = { @@ -55,9 +57,13 @@ class HaConfigIntegrations extends HassRouterPage { }; @property() private _configEntries: ConfigEntry[] = []; + @property() private _configEntriesInProgress: DataEntryFlowProgress[] = []; + @property() private _entityRegistryEntries: EntityRegistryEntry[] = []; + @property() private _deviceRegistryEntries: DeviceRegistryEntry[] = []; + @property() private _areas: AreaRegistryEntry[] = []; private _unsubs?: UnsubscribeFunc[]; diff --git a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts index f393113eca..365d57d316 100644 --- a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts +++ b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts @@ -7,31 +7,38 @@ import { property, TemplateResult, } from "lit-element"; +import { createCloseHeading } from "../../../../components/ha-dialog"; import "../../../../components/ha-icon-input"; -import { HomeAssistant } from "../../../../types"; +import { HaSwitch } from "../../../../components/ha-switch"; import { LovelaceDashboard, - LovelaceDashboardMutableParams, LovelaceDashboardCreateParams, + LovelaceDashboardMutableParams, } from "../../../../data/lovelace"; -import { LovelaceDashboardDetailsDialogParams } from "./show-dialog-lovelace-dashboard-detail"; +import { DEFAULT_PANEL, setDefaultPanel } from "../../../../data/panel"; import { PolymerChangedEvent } from "../../../../polymer-types"; -import { HaSwitch } from "../../../../components/ha-switch"; -import { createCloseHeading } from "../../../../components/ha-dialog"; import { haStyleDialog } from "../../../../resources/styles"; -import { setDefaultPanel, DEFAULT_PANEL } from "../../../../data/panel"; +import { HomeAssistant } from "../../../../types"; +import { LovelaceDashboardDetailsDialogParams } from "./show-dialog-lovelace-dashboard-detail"; @customElement("dialog-lovelace-dashboard-detail") export class DialogLovelaceDashboardDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: LovelaceDashboardDetailsDialogParams; + @property() private _urlPath!: LovelaceDashboard["url_path"]; + @property() private _showInSidebar!: boolean; + @property() private _icon!: string; + @property() private _title!: string; + @property() private _requireAdmin!: LovelaceDashboard["require_admin"]; @property() private _error?: string; + @property() private _submitting = false; public async showDialog( @@ -92,9 +99,7 @@ export class DialogLovelaceDashboardDetail extends LitElement { ) : html` ${this._error - ? html` -
    ${this._error}
    - ` + ? html`
    ${this._error}
    ` : ""}
    ${this._params.urlPath === defaultPanelUrlPath ? this.hass.localize( diff --git a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts index 10a675ff49..4b9bafe7fc 100644 --- a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts +++ b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts @@ -1,45 +1,49 @@ +import "@polymer/paper-tooltip/paper-tooltip"; import { + css, + CSSResult, customElement, html, LitElement, property, PropertyValues, TemplateResult, - CSSResult, - css, } from "lit-element"; import memoize from "memoize-one"; -import "@polymer/paper-tooltip/paper-tooltip"; +import { navigate } from "../../../../common/navigate"; +import { compare } from "../../../../common/string/compare"; import { DataTableColumnContainer, RowClickedEvent, } from "../../../../components/data-table/ha-data-table"; -import "../../../../components/ha-icon"; import "../../../../components/ha-fab"; +import "../../../../components/ha-icon"; +import { + createDashboard, + deleteDashboard, + fetchDashboards, + LovelaceDashboard, + LovelaceDashboardCreateParams, + LovelacePanelConfig, + updateDashboard, +} from "../../../../data/lovelace"; +import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; import "../../../../layouts/hass-loading-screen"; import "../../../../layouts/hass-tabs-subpage-data-table"; import { HomeAssistant, Route } from "../../../../types"; -import { - LovelaceDashboard, - fetchDashboards, - createDashboard, - updateDashboard, - deleteDashboard, - LovelaceDashboardCreateParams, - LovelacePanelConfig, -} from "../../../../data/lovelace"; -import { showDashboardDetailDialog } from "./show-dialog-lovelace-dashboard-detail"; -import { compare } from "../../../../common/string/compare"; -import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; import { lovelaceTabs } from "../ha-config-lovelace"; -import { navigate } from "../../../../common/navigate"; +import { showDashboardDetailDialog } from "./show-dialog-lovelace-dashboard-detail"; @customElement("ha-config-lovelace-dashboards") export class HaConfigLovelaceDashboards extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() private _dashboards: LovelaceDashboard[] = []; private _columns = memoize( @@ -50,9 +54,7 @@ export class HaConfigLovelaceDashboards extends LitElement { type: "icon", template: (icon) => icon - ? html` - - ` + ? html` ` : html``, }, title: { @@ -87,9 +89,7 @@ export class HaConfigLovelaceDashboards extends LitElement { ${this.hass.localize( `ui.panel.config.lovelace.dashboards.conf_mode.${dashboard.mode}` )}${dashboard.filename - ? html` - - ${dashboard.filename} - ` + ? html` - ${dashboard.filename} ` : ""}
    ` @@ -132,12 +132,8 @@ export class HaConfigLovelaceDashboards extends LitElement { width: "100px", template: (requireAdmin: boolean) => requireAdmin - ? html` - - ` - : html` - - - `, + ? html` ` + : html` - `, }; columns.show_in_sidebar = { title: this.hass.localize( @@ -146,13 +142,7 @@ export class HaConfigLovelaceDashboards extends LitElement { type: "icon", width: "121px", template: (sidebar) => - sidebar - ? html` - - ` - : html` - - - `, + sidebar ? html` ` : html` - `, }; } @@ -210,9 +200,7 @@ export class HaConfigLovelaceDashboards extends LitElement { protected render(): TemplateResult { if (!this.hass || this._dashboards === undefined) { - return html` - - `; + return html` `; } return html` diff --git a/src/panels/config/lovelace/dashboards/show-dialog-lovelace-dashboard-detail.ts b/src/panels/config/lovelace/dashboards/show-dialog-lovelace-dashboard-detail.ts index b0dedf4966..49a316eadf 100644 --- a/src/panels/config/lovelace/dashboards/show-dialog-lovelace-dashboard-detail.ts +++ b/src/panels/config/lovelace/dashboards/show-dialog-lovelace-dashboard-detail.ts @@ -1,8 +1,8 @@ import { fireEvent } from "../../../../common/dom/fire_event"; import { LovelaceDashboard, - LovelaceDashboardMutableParams, LovelaceDashboardCreateParams, + LovelaceDashboardMutableParams, } from "../../../../data/lovelace"; export interface LovelaceDashboardDetailsDialogParams { diff --git a/src/panels/config/lovelace/ha-config-lovelace.ts b/src/panels/config/lovelace/ha-config-lovelace.ts index d509d9161b..837f1686a2 100644 --- a/src/panels/config/lovelace/ha-config-lovelace.ts +++ b/src/panels/config/lovelace/ha-config-lovelace.ts @@ -1,8 +1,8 @@ +import { customElement, property } from "lit-element"; import { HassRouterPage, RouterOptions, } from "../../../layouts/hass-router-page"; -import { property, customElement } from "lit-element"; import { HomeAssistant } from "../../../types"; export const lovelaceTabs = [ @@ -24,7 +24,9 @@ export const lovelaceTabs = [ @customElement("ha-config-lovelace") class HaConfigLovelace extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; protected routerOptions: RouterOptions = { diff --git a/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts b/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts index 7fce68b229..b369bfac8a 100644 --- a/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts +++ b/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts @@ -7,23 +7,28 @@ import { property, TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../../types"; +import { createCloseHeading } from "../../../../components/ha-dialog"; import { LovelaceResource, LovelaceResourcesMutableParams, } from "../../../../data/lovelace"; -import { LovelaceResourceDetailsDialogParams } from "./show-dialog-lovelace-resource-detail"; import { PolymerChangedEvent } from "../../../../polymer-types"; -import { createCloseHeading } from "../../../../components/ha-dialog"; import { haStyleDialog } from "../../../../resources/styles"; +import { HomeAssistant } from "../../../../types"; +import { LovelaceResourceDetailsDialogParams } from "./show-dialog-lovelace-resource-detail"; @customElement("dialog-lovelace-resource-detail") export class DialogLovelaceResourceDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: LovelaceResourceDetailsDialogParams; + @property() private _url!: LovelaceResource["url"]; + @property() private _type!: LovelaceResource["type"]; + @property() private _error?: string; + @property() private _submitting = false; public async showDialog( @@ -62,11 +67,7 @@ export class DialogLovelaceResourceDetail extends LitElement { )} >
    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}

    ${this.hass!.localize( diff --git a/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts b/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts index c011b9cceb..30f5556ffa 100644 --- a/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts +++ b/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts @@ -4,47 +4,51 @@ import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-tooltip/paper-tooltip"; import { + css, + CSSResult, customElement, html, LitElement, property, PropertyValues, TemplateResult, - CSSResult, - css, } from "lit-element"; import memoize from "memoize-one"; +import { compare } from "../../../../common/string/compare"; import { DataTableColumnContainer, RowClickedEvent, } from "../../../../components/data-table/ha-data-table"; -import "../../../../components/ha-icon"; import "../../../../components/ha-fab"; +import "../../../../components/ha-icon"; +import { + createResource, + deleteResource, + fetchResources, + LovelaceResource, + updateResource, +} from "../../../../data/lovelace"; +import { + showAlertDialog, + showConfirmationDialog, +} from "../../../../dialogs/generic/show-dialog-box"; import "../../../../layouts/hass-loading-screen"; import "../../../../layouts/hass-tabs-subpage-data-table"; import { HomeAssistant, Route } from "../../../../types"; -import { - LovelaceResource, - fetchResources, - createResource, - updateResource, - deleteResource, -} from "../../../../data/lovelace"; -import { showResourceDetailDialog } from "./show-dialog-lovelace-resource-detail"; -import { compare } from "../../../../common/string/compare"; -import { - showConfirmationDialog, - showAlertDialog, -} from "../../../../dialogs/generic/show-dialog-box"; -import { lovelaceTabs } from "../ha-config-lovelace"; import { loadLovelaceResources } from "../../../lovelace/common/load-resources"; +import { lovelaceTabs } from "../ha-config-lovelace"; +import { showResourceDetailDialog } from "./show-dialog-lovelace-resource-detail"; @customElement("ha-config-lovelace-resources") export class HaConfigLovelaceRescources extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() private _resources: LovelaceResource[] = []; private _columns = memoize( @@ -79,9 +83,7 @@ export class HaConfigLovelaceRescources extends LitElement { protected render(): TemplateResult { if (!this.hass || this._resources === undefined) { - return html` - - `; + return html` `; } return html` diff --git a/src/panels/config/person/dialog-person-detail.ts b/src/panels/config/person/dialog-person-detail.ts index 7bb5e4fd18..570b4574a9 100644 --- a/src/panels/config/person/dialog-person-detail.ts +++ b/src/panels/config/person/dialog-person-detail.ts @@ -1,33 +1,37 @@ +import "@material/mwc-button"; +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; import memoizeOne from "memoize-one"; - -import "@polymer/paper-input/paper-input"; -import "@material/mwc-button"; - import "../../../components/entity/ha-entities-picker"; -import "../../../components/user/ha-user-picker"; -import { PersonDetailDialogParams } from "./show-dialog-person-detail"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import { HomeAssistant } from "../../../types"; -import { PersonMutableParams } from "../../../data/person"; import { createCloseHeading } from "../../../components/ha-dialog"; +import "../../../components/user/ha-user-picker"; +import { PersonMutableParams } from "../../../data/person"; +import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; +import { PersonDetailDialogParams } from "./show-dialog-person-detail"; class DialogPersonDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _name!: string; + @property() private _userId?: string; + @property() private _deviceTrackers!: string[]; + @property() private _error?: string; + @property() private _params?: PersonDetailDialogParams; - @property() private _submitting: boolean = false; + + @property() private _submitting = false; private _deviceTrackersAvailable = memoizeOne((hass) => { return Object.keys(hass.states).some( @@ -70,11 +74,7 @@ class DialogPersonDetail extends LitElement { )} >
    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    ; protected render(): TemplateResult { @@ -46,9 +51,7 @@ class HaConfigPerson extends LitElement { this._storageItems === undefined || this._configItems === undefined ) { - return html` - - `; + return html` `; } const hass = this.hass; return html` diff --git a/src/panels/config/scene/ha-config-scene.ts b/src/panels/config/scene/ha-config-scene.ts index 2488a5a6d1..e39f5da51e 100644 --- a/src/panels/config/scene/ha-config-scene.ts +++ b/src/panels/config/scene/ha-config-scene.ts @@ -1,23 +1,26 @@ -import "./ha-scene-editor"; -import "./ha-scene-dashboard"; - +import { HassEntities } from "home-assistant-js-websocket"; +import { customElement, property, PropertyValues } from "lit-element"; +import memoizeOne from "memoize-one"; +import { computeStateDomain } from "../../../common/entity/compute_state_domain"; +import { SceneEntity } from "../../../data/scene"; import { HassRouterPage, RouterOptions, } from "../../../layouts/hass-router-page"; -import { property, customElement, PropertyValues } from "lit-element"; import { HomeAssistant } from "../../../types"; -import { computeStateDomain } from "../../../common/entity/compute_state_domain"; -import { SceneEntity } from "../../../data/scene"; -import memoizeOne from "memoize-one"; -import { HassEntities } from "home-assistant-js-websocket"; +import "./ha-scene-dashboard"; +import "./ha-scene-editor"; @customElement("ha-config-scene") class HaConfigScene extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; + @property() public scenes: SceneEntity[] = []; protected routerOptions: RouterOptions = { @@ -61,7 +64,7 @@ class HaConfigScene extends HassRouterPage { ) { pageEl.creatingNew = undefined; const sceneId = this.routeTail.path.substr(1); - pageEl.creatingNew = sceneId === "new" ? true : false; + pageEl.creatingNew = sceneId === "new"; pageEl.scene = sceneId === "new" ? undefined diff --git a/src/panels/config/scene/ha-scene-dashboard.ts b/src/panels/config/scene/ha-scene-dashboard.ts index e65c80f599..23dec6542e 100644 --- a/src/panels/config/scene/ha-scene-dashboard.ts +++ b/src/panels/config/scene/ha-scene-dashboard.ts @@ -28,9 +28,13 @@ import { configSections } from "../ha-panel-config"; @customElement("ha-scene-dashboard") class HaSceneDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public route!: Route; + @property() public scenes!: SceneEntity[]; private _scenes = memoizeOne((scenes: SceneEntity[]) => { diff --git a/src/panels/config/scene/ha-scene-editor.ts b/src/panels/config/scene/ha-scene-editor.ts index 93a2c8640c..85ac9d69dc 100644 --- a/src/panels/config/scene/ha-scene-editor.ts +++ b/src/panels/config/scene/ha-scene-editor.ts @@ -69,22 +69,39 @@ interface DeviceEntitiesLookup { @customElement("ha-scene-editor") export class HaSceneEditor extends SubscribeMixin(LitElement) { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public route!: Route; + @property() public scene?: SceneEntity; + @property() public creatingNew?: boolean; + @property() public showAdvanced!: boolean; + @property() private _dirty?: boolean; + @property() private _errors?: string; + @property() private _config!: SceneConfig; + @property() private _entities: string[] = []; + @property() private _devices: string[] = []; + @property() private _deviceRegistryEntries: DeviceRegistryEntry[] = []; + @property() private _entityRegistryEntries: EntityRegistryEntry[] = []; + private _storedStates: SceneEntities = {}; + private _unsubscribeEvents?: () => void; + @property() private _deviceEntityLookup: DeviceEntitiesLookup = {}; + private _activateContextId?: string; private _getEntitiesDevices = memoizeOne( @@ -188,18 +205,10 @@ export class HaSceneEditor extends SubscribeMixin(LitElement) { ${ this._errors - ? html` -
    ${this._errors}
    - ` - : "" - } - ${ - this.narrow - ? html` - ${name} - ` + ? html`
    ${this._errors}
    ` : "" } + ${this.narrow ? html` ${name} ` : ""}
    - ${ - !this.narrow - ? html` - ${name} - ` - : "" - } + ${!this.narrow ? html` ${name} ` : ""}
    ${this.hass.localize( "ui.panel.config.scene.editor.introduction" @@ -296,7 +299,7 @@ export class HaSceneEditor extends SubscribeMixin(LitElement) { .label=${this.hass.localize( "ui.panel.config.scene.editor.devices.add" )} - /> + >
    @@ -372,7 +375,7 @@ export class HaSceneEditor extends SubscribeMixin(LitElement) { label=${this.hass.localize( "ui.panel.config.scene.editor.entities.add" )} - /> + >
    @@ -640,7 +643,7 @@ export class HaSceneEditor extends SubscribeMixin(LitElement) { private _getCurrentState(entityId: string) { const stateObj = this.hass.states[entityId]; if (!stateObj) { - return; + return undefined; } return { ...stateObj.attributes, state: stateObj.state }; } diff --git a/src/panels/config/script/ha-config-script.ts b/src/panels/config/script/ha-config-script.ts index 7ac95b8f72..46ec4bf970 100644 --- a/src/panels/config/script/ha-config-script.ts +++ b/src/panels/config/script/ha-config-script.ts @@ -13,9 +13,13 @@ import "./ha-script-picker"; @customElement("ha-config-script") class HaConfigScript extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public showAdvanced!: boolean; + @property() public scripts: HassEntity[] = []; protected routerOptions: RouterOptions = { @@ -59,7 +63,7 @@ class HaConfigScript extends HassRouterPage { ) { pageEl.creatingNew = undefined; const scriptEntityId = this.routeTail.path.substr(1); - pageEl.creatingNew = scriptEntityId === "new" ? true : false; + pageEl.creatingNew = scriptEntityId === "new"; pageEl.script = scriptEntityId === "new" ? undefined diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index 67367e1d64..cf37ad7098 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -35,13 +35,21 @@ import { configSections } from "../ha-panel-config"; export class HaScriptEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public script!: ScriptEntity; + @property() public isWide?: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public creatingNew?: boolean; + @property() private _config?: ScriptConfig; + @property() private _dirty?: boolean; + @property() private _errors?: string; protected render(): TemplateResult { @@ -66,15 +74,11 @@ export class HaScriptEditor extends LitElement { > `} ${this.narrow - ? html` - ${this._config?.alias} - ` + ? html` ${this._config?.alias} ` : ""}
    ${this._errors - ? html` -
    ${this._errors}
    - ` + ? html`
    ${this._errors}
    ` : ""}
    ${this._config.alias} - ` + ? html` ${this._config.alias} ` : ""} ${this.hass.localize( @@ -202,7 +204,7 @@ export class HaScriptEditor extends LitElement { if (changedProps.has("creatingNew") && this.creatingNew && this.hass) { const initData = getScriptEditorInitData(); - this._dirty = initData ? true : false; + this._dirty = !!initData; this._config = { alias: this.hass.localize("ui.panel.config.script.editor.default_name"), sequence: [{ ...HaDeviceAction.defaultConfig }], diff --git a/src/panels/config/script/ha-script-picker.ts b/src/panels/config/script/ha-script-picker.ts index c91aa68e6a..8b8af148d1 100644 --- a/src/panels/config/script/ha-script-picker.ts +++ b/src/panels/config/script/ha-script-picker.ts @@ -17,19 +17,23 @@ import { computeRTL } from "../../../common/util/compute_rtl"; import { DataTableColumnContainer } from "../../../components/data-table/ha-data-table"; import "../../../components/ha-fab"; import { triggerScript } from "../../../data/script"; +import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import "../../../layouts/hass-tabs-subpage-data-table"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant, Route } from "../../../types"; import { showToast } from "../../../util/toast"; import { configSections } from "../ha-panel-config"; -import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; @customElement("ha-script-picker") class HaScriptPicker extends LitElement { @property() public hass!: HomeAssistant; + @property() public scripts!: HassEntity[]; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; private _scripts = memoizeOne((scripts: HassEntity[]) => { diff --git a/src/panels/config/server_control/ha-config-section-server-control.js b/src/panels/config/server_control/ha-config-section-server-control.js index 3e44176e9e..e26a9f76db 100644 --- a/src/panels/config/server_control/ha-config-section-server-control.js +++ b/src/panels/config/server_control/ha-config-section-server-control.js @@ -1,16 +1,14 @@ import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../../components/ha-card"; -import "../../../components/buttons/ha-call-service-button"; -import "../../../resources/ha-style"; - -import "../ha-config-section"; - import { isComponentLoaded } from "../../../common/config/is_component_loaded"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../../../resources/ha-style"; +import "../ha-config-section"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/server_control/ha-config-server-control.js b/src/panels/config/server_control/ha-config-server-control.js index ef93fe8fd6..4eeb383b0b 100644 --- a/src/panels/config/server_control/ha-config-server-control.js +++ b/src/panels/config/server_control/ha-config-server-control.js @@ -2,15 +2,13 @@ import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../layouts/hass-tabs-subpage"; -import "../../../resources/ha-style"; - -import "./ha-config-section-server-control"; - import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../../../resources/ha-style"; import { configSections } from "../ha-panel-config"; +import "./ha-config-section-server-control"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/users/dialog-add-user.ts b/src/panels/config/users/dialog-add-user.ts index f4f62402af..b7f7858766 100644 --- a/src/panels/config/users/dialog-add-user.ts +++ b/src/panels/config/users/dialog-add-user.ts @@ -1,40 +1,47 @@ import "@material/mwc-button"; import "@polymer/paper-spinner/paper-spinner"; -import "../../../components/ha-switch"; -import "../../../components/ha-dialog"; import { - LitElement, - html, - TemplateResult, + css, + CSSResult, customElement, + html, + LitElement, property, PropertyValues, - CSSResult, - css, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../types"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import { AddUserDialogParams } from "./show-dialog-add-user"; +import "../../../components/ha-dialog"; +import "../../../components/ha-switch"; +import { createAuthForUser } from "../../../data/auth"; import { - User, - SYSTEM_GROUP_ID_USER, createUser, deleteUser, SYSTEM_GROUP_ID_ADMIN, + SYSTEM_GROUP_ID_USER, + User, } from "../../../data/user"; -import { createAuthForUser } from "../../../data/auth"; +import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; +import { AddUserDialogParams } from "./show-dialog-add-user"; @customElement("dialog-add-user") export class DialogAddUser extends LitElement { @property() public hass!: HomeAssistant; + @property() private _loading = false; + // Error message when can't talk to server etc @property() private _error?: string; + @property() private _params?: AddUserDialogParams; + @property() private _name?: string; + @property() private _username?: string; + @property() private _password?: string; + @property() private _isAdmin?: boolean; public showDialog(params: AddUserDialogParams) { @@ -69,11 +76,7 @@ export class DialogAddUser extends LitElement { .heading=${this.hass.localize("ui.panel.config.users.add_user.caption")} >
    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""} { this._params = params; @@ -52,11 +57,7 @@ class DialogUserDetail extends LitElement { .heading=${createCloseHeading(this.hass, user.name)} >
    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    ${this.hass.localize("ui.panel.config.users.editor.id")}: ${user.id}
    @@ -139,8 +140,8 @@ class DialogUserDetail extends LitElement { ${this.hass!.localize("ui.panel.config.users.editor.update_user")} diff --git a/src/panels/config/users/ha-config-users.ts b/src/panels/config/users/ha-config-users.ts index f466b8d47c..d9bae12aab 100644 --- a/src/panels/config/users/ha-config-users.ts +++ b/src/panels/config/users/ha-config-users.ts @@ -1,34 +1,37 @@ -import "../../../layouts/hass-tabs-subpage-data-table"; -import "../../../components/ha-fab"; - -import { computeRTL } from "../../../common/util/compute_rtl"; -import { configSections } from "../ha-panel-config"; import { + css, + customElement, LitElement, property, - css, PropertyValues, - customElement, } from "lit-element"; -import { HomeAssistant, Route } from "../../../types"; import { html } from "lit-html"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; -import { User, fetchUsers, updateUser, deleteUser } from "../../../data/user"; import memoizeOne from "memoize-one"; +import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { computeRTL } from "../../../common/util/compute_rtl"; import { DataTableColumnContainer, RowClickedEvent, } from "../../../components/data-table/ha-data-table"; -import { showUserDetailDialog } from "./show-dialog-user-detail"; -import { showAddUserDialog } from "./show-dialog-add-user"; +import "../../../components/ha-fab"; +import { deleteUser, fetchUsers, updateUser, User } from "../../../data/user"; import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box"; +import "../../../layouts/hass-tabs-subpage-data-table"; +import { HomeAssistant, Route } from "../../../types"; +import { configSections } from "../ha-panel-config"; +import { showAddUserDialog } from "./show-dialog-add-user"; +import { showUserDetailDialog } from "./show-dialog-user-detail"; @customElement("ha-config-users") export class HaConfigUsers extends LitElement { @property() public hass!: HomeAssistant; + @property() public _users: User[] = []; + @property() public isWide!: boolean; + @property() public narrow!: boolean; + @property() public route!: Route; private _columns = memoizeOne( @@ -44,7 +47,7 @@ export class HaConfigUsers extends LitElement { grows: true, template: (name) => html` ${name || - this.hass!.localize("ui.panel.config.users.editor.unnamed_user")} + this.hass!.localize("ui.panel.config.users.editor.unnamed_user")} `, }, group_ids: { @@ -67,9 +70,7 @@ export class HaConfigUsers extends LitElement { filterable: true, template: (generated) => html` ${generated - ? html` - - ` + ? html` ` : ""} `, }, diff --git a/src/panels/config/users/show-dialog-user-detail.ts b/src/panels/config/users/show-dialog-user-detail.ts index 0f04236a56..bcdeeb5a57 100644 --- a/src/panels/config/users/show-dialog-user-detail.ts +++ b/src/panels/config/users/show-dialog-user-detail.ts @@ -1,5 +1,5 @@ import { fireEvent } from "../../../common/dom/fire_event"; -import { User, UpdateUserParams } from "../../../data/user"; +import { UpdateUserParams, User } from "../../../data/user"; export interface UserDetailDialogParams { entry: User; diff --git a/src/panels/config/zha/functions.ts b/src/panels/config/zha/functions.ts index 065eb9867e..065fe14ee9 100644 --- a/src/panels/config/zha/functions.ts +++ b/src/panels/config/zha/functions.ts @@ -1,4 +1,4 @@ -import { ZHADevice, ZHAGroup, Cluster } from "../../../data/zha"; +import { Cluster, ZHADevice, ZHAGroup } from "../../../data/zha"; export const formatAsPaddedHex = (value: string | number): string => { let hex = value; diff --git a/src/panels/config/zha/types.ts b/src/panels/config/zha/types.ts index c785614efb..19bff74ff5 100644 --- a/src/panels/config/zha/types.ts +++ b/src/panels/config/zha/types.ts @@ -1,4 +1,4 @@ -import { ZHADevice, Cluster } from "../../../data/zha"; +import { Cluster, ZHADevice } from "../../../data/zha"; export interface PickerTarget extends EventTarget { selected: number; diff --git a/src/panels/config/zha/zha-add-devices-page.ts b/src/panels/config/zha/zha-add-devices-page.ts index f4a4765828..b80bfa791d 100644 --- a/src/panels/config/zha/zha-add-devices-page.ts +++ b/src/panels/config/zha/zha-add-devices-page.ts @@ -1,11 +1,6 @@ -import "../../../components/ha-service-description"; -import "../../../components/ha-textarea"; -import "../../../layouts/hass-subpage"; -import "./zha-device-card"; import "@material/mwc-button"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-spinner/paper-spinner"; - import { css, CSSResult, @@ -15,30 +10,45 @@ import { property, TemplateResult, } from "lit-element"; - +import "../../../components/ha-service-description"; +import "../../../components/ha-textarea"; import { ZHADevice } from "../../../data/zha"; +import "../../../layouts/hass-subpage"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant, Route } from "../../../types"; +import "./zha-device-card"; @customElement("zha-add-devices-page") class ZHAAddDevicesPage extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide?: boolean; + @property() public route?: Route; + @property() private _error?: string; + @property() private _discoveredDevices: ZHADevice[] = []; - @property() private _formattedEvents: string = ""; - @property() private _active: boolean = false; - @property() private _showHelp: boolean = false; + + @property() private _formattedEvents = ""; + + @property() private _active = false; + + @property() private _showHelp = false; + private _ieeeAddress?: string; + private _addDevicesTimeoutHandle: any = undefined; + private _subscribed?: Promise<() => Promise>; public connectedCallback(): void { super.connectedCallback(); - this.route && this.route.path && this.route.path !== "" - ? (this._ieeeAddress = this.route.path.substring(1)) - : (this._ieeeAddress = undefined); + if (this.route && this.route.path && this.route.path !== "") { + this._ieeeAddress = this.route.path.substring(1); + } else { + this._ieeeAddress = undefined; + } this._subscribe(); } @@ -88,16 +98,12 @@ class ZHAAddDevicesPage extends LitElement { domain="zha" service="permit" class="help-text" - /> + > ` : ""}
    `} - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    ${this._discoveredDevices.length < 1 diff --git a/src/panels/config/zha/zha-add-group-page.ts b/src/panels/config/zha/zha-add-group-page.ts index 7daf692795..c52e6da84a 100644 --- a/src/panels/config/zha/zha-add-group-page.ts +++ b/src/panels/config/zha/zha-add-group-page.ts @@ -1,46 +1,51 @@ +import "@material/mwc-button"; +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; +import "@polymer/paper-spinner/paper-spinner"; import { - property, - LitElement, - html, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, query, } from "lit-element"; - -import "../../../layouts/hass-subpage"; -import "../../../layouts/hass-error-screen"; -import "../ha-config-section"; -import { HomeAssistant } from "../../../types"; +import type { HASSDomEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; +import type { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; import { - ZHADevice, - fetchGroupableDevices, addGroup, + fetchGroupableDevices, + ZHADevice, ZHAGroup, } from "../../../data/zha"; +import "../../../layouts/hass-error-screen"; +import "../../../layouts/hass-subpage"; +import type { PolymerChangedEvent } from "../../../polymer-types"; +import type { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import "./zha-devices-data-table"; -import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; -import { navigate } from "../../../common/navigate"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import "@polymer/paper-spinner/paper-spinner"; -import "@material/mwc-button"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; -// tslint:disable-next-line: no-duplicate-imports -import { ZHADevicesDataTable } from "./zha-devices-data-table"; +import type { ZHADevicesDataTable } from "./zha-devices-data-table"; @customElement("zha-add-group-page") export class ZHAAddGroupPage extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public devices: ZHADevice[] = []; - @property() private _processingAdd: boolean = false; - @property() private _groupName: string = ""; + + @property() private _processingAdd = false; + + @property() private _groupName = ""; + @query("zha-devices-data-table") private _zhaDevicesDataTable!: ZHADevicesDataTable; - private _firstUpdatedCalled: boolean = false; + private _firstUpdatedCalled = false; + private _selectedDevicesToAdd: string[] = []; public connectedCallback(): void { @@ -94,8 +99,8 @@ export class ZHAAddGroupPage extends LitElement {
    diff --git a/src/panels/config/zha/zha-cluster-attributes.ts b/src/panels/config/zha/zha-cluster-attributes.ts index ed909c8458..44b1901149 100644 --- a/src/panels/config/zha/zha-cluster-attributes.ts +++ b/src/panels/config/zha/zha-cluster-attributes.ts @@ -1,24 +1,21 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; import "@material/mwc-button"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, html, LitElement, + property, PropertyValues, TemplateResult, - property, } from "lit-element"; - +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { Attribute, Cluster, @@ -29,6 +26,7 @@ import { } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { formatAsPaddedHex } from "./functions"; import { ChangeEvent, @@ -38,14 +36,23 @@ import { export class ZHAClusterAttributes extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public showHelp = false; + @property() public selectedNode?: ZHADevice; + @property() public selectedCluster?: Cluster; + @property() private _attributes: Attribute[] = []; + @property() private _selectedAttributeIndex = -1; + @property() private _attributeValue?: any = ""; + @property() private _manufacturerCodeOverride?: string | number; + @property() private _setAttributeServiceData?: SetAttributeServiceData; protected updated(changedProperties: PropertyValues): void { @@ -97,9 +104,9 @@ export class ZHAClusterAttributes extends LitElement { (entry) => html` ${entry.name + - " (id: " + - formatAsPaddedHex(entry.id) + - ")"} ` )} @@ -207,7 +214,7 @@ export class ZHAClusterAttributes extends LitElement { | ReadAttributeServiceData | undefined { if (!this.selectedCluster || !this.selectedNode) { - return; + return undefined; } return { ieee: this.selectedNode!.ieee, @@ -225,7 +232,7 @@ export class ZHAClusterAttributes extends LitElement { | SetAttributeServiceData | undefined { if (!this.selectedCluster || !this.selectedNode) { - return; + return undefined; } return { ieee: this.selectedNode!.ieee, diff --git a/src/panels/config/zha/zha-cluster-commands.ts b/src/panels/config/zha/zha-cluster-commands.ts index a4455a8ca0..0af3b55dd6 100644 --- a/src/panels/config/zha/zha-cluster-commands.ts +++ b/src/panels/config/zha/zha-cluster-commands.ts @@ -1,23 +1,20 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, html, LitElement, + property, PropertyValues, TemplateResult, - property, } from "lit-element"; - +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { Cluster, Command, @@ -26,6 +23,7 @@ import { } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { formatAsPaddedHex } from "./functions"; import { ChangeEvent, @@ -35,13 +33,21 @@ import { export class ZHAClusterCommands extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public selectedNode?: ZHADevice; + @property() public selectedCluster?: Cluster; + @property() private _showHelp = false; + @property() private _commands: Command[] = []; + @property() private _selectedCommandIndex = -1; + @property() private _manufacturerCodeOverride?: number; + @property() private _issueClusterCommandServiceData?: IssueCommandServiceData; protected updated(changedProperties: PropertyValues): void { @@ -92,9 +98,9 @@ export class ZHAClusterCommands extends LitElement { (entry) => html` ${entry.name + - " (id: " + - formatAsPaddedHex(entry.id) + - ")"} ` )} @@ -173,7 +179,7 @@ export class ZHAClusterCommands extends LitElement { | IssueCommandServiceData | undefined { if (!this.selectedNode || !this.selectedCluster) { - return; + return undefined; } return { ieee: this.selectedNode!.ieee, diff --git a/src/panels/config/zha/zha-clusters-data-table.ts b/src/panels/config/zha/zha-clusters-data-table.ts index 9216b832e5..e5750edcd3 100644 --- a/src/panels/config/zha/zha-clusters-data-table.ts +++ b/src/panels/config/zha/zha-clusters-data-table.ts @@ -1,24 +1,20 @@ -import "../../../components/data-table/ha-data-table"; -import "../../../components/entity/ha-state-icon"; - -import memoizeOne from "memoize-one"; - import { - LitElement, - html, - TemplateResult, - property, customElement, + html, + LitElement, + property, query, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../types"; -// tslint:disable-next-line -import { +import memoizeOne from "memoize-one"; +import "../../../components/data-table/ha-data-table"; +import type { DataTableColumnContainer, HaDataTable, } from "../../../components/data-table/ha-data-table"; -// tslint:disable-next-line -import { Cluster } from "../../../data/zha"; +import "../../../components/entity/ha-state-icon"; +import type { Cluster } from "../../../data/zha"; +import type { HomeAssistant } from "../../../types"; import { formatAsPaddedHex } from "./functions"; export interface ClusterRowData extends Cluster { @@ -29,8 +25,11 @@ export interface ClusterRowData extends Cluster { @customElement("zha-clusters-data-table") export class ZHAClustersDataTable extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property() public clusters: Cluster[] = []; + @query("ha-data-table") private _dataTable!: HaDataTable; private _clusters = memoizeOne((clusters: Cluster[]) => { @@ -67,9 +66,7 @@ export class ZHAClustersDataTable extends LitElement { id: { title: "ID", template: (id: number) => { - return html` - ${formatAsPaddedHex(id)} - `; + return html` ${formatAsPaddedHex(id)} `; }, sortable: true, width: "15%", diff --git a/src/panels/config/zha/zha-clusters.ts b/src/panels/config/zha/zha-clusters.ts index 86c6f2d8ef..a10fabc1c2 100644 --- a/src/panels/config/zha/zha-clusters.ts +++ b/src/panels/config/zha/zha-clusters.ts @@ -1,26 +1,24 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, html, LitElement, + property, PropertyValues, TemplateResult, - property, } from "lit-element"; - import { fireEvent } from "../../../common/dom/fire_event"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { Cluster, fetchClustersForZhaNode, ZHADevice } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { computeClusterKey } from "./functions"; import { ItemSelectedEvent } from "./types"; @@ -35,10 +33,15 @@ declare global { export class ZHAClusters extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public selectedDevice?: ZHADevice; + @property() public showHelp = false; + @property() private _selectedClusterIndex = -1; + @property() private _clusters: Cluster[] = []; protected updated(changedProperties: PropertyValues): void { diff --git a/src/panels/config/zha/zha-config-dashboard-router.ts b/src/panels/config/zha/zha-config-dashboard-router.ts index dc8f4b3c22..fe71707a75 100644 --- a/src/panels/config/zha/zha-config-dashboard-router.ts +++ b/src/panels/config/zha/zha-config-dashboard-router.ts @@ -1,14 +1,16 @@ +import { customElement, property } from "lit-element"; import { HassRouterPage, RouterOptions, } from "../../../layouts/hass-router-page"; -import { customElement, property } from "lit-element"; import { HomeAssistant } from "../../../types"; @customElement("zha-config-dashboard-router") class ZHAConfigDashboardRouter extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() public narrow!: boolean; protected routerOptions: RouterOptions = { diff --git a/src/panels/config/zha/zha-config-dashboard.ts b/src/panels/config/zha/zha-config-dashboard.ts index d9f4f43e7f..f277ae2e54 100644 --- a/src/panels/config/zha/zha-config-dashboard.ts +++ b/src/panels/config/zha/zha-config-dashboard.ts @@ -1,32 +1,31 @@ +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import { - LitElement, - TemplateResult, - html, - CSSResultArray, css, + CSSResultArray, customElement, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; -import "@polymer/paper-item/paper-item-body"; -import "@polymer/paper-item/paper-item"; -import "../../../components/ha-card"; -import "../../../components/ha-icon-next"; -import "../../../layouts/hass-subpage"; -import "../ha-config-section"; - -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant, Route } from "../../../types"; -import { fetchDevices, ZHADevice } from "../../../data/zha"; -import { sortZHADevices, formatAsPaddedHex } from "./functions"; import memoizeOne from "memoize-one"; +import { navigate } from "../../../common/navigate"; import "../../../components/data-table/ha-data-table"; -// tslint:disable-next-line: no-duplicate-imports -import { +import type { DataTableColumnContainer, RowClickedEvent, } from "../../../components/data-table/ha-data-table"; -import { navigate } from "../../../common/navigate"; +import "../../../components/ha-card"; +import "../../../components/ha-icon-next"; +import { fetchDevices } from "../../../data/zha"; +import type { ZHADevice } from "../../../data/zha"; +import "../../../layouts/hass-subpage"; +import { haStyle } from "../../../resources/styles"; +import type { HomeAssistant, Route } from "../../../types"; +import "../ha-config-section"; +import { formatAsPaddedHex, sortZHADevices } from "./functions"; export interface DeviceRowData extends ZHADevice { device?: DeviceRowData; @@ -35,12 +34,18 @@ export interface DeviceRowData extends ZHADevice { @customElement("zha-config-dashboard") class ZHAConfigDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public route!: Route; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() private _devices: ZHADevice[] = []; + private pages: string[] = ["add", "groups"]; - private _firstUpdatedCalled: boolean = false; + + private _firstUpdatedCalled = false; private _memoizeDevices = memoizeOne((devices: ZHADevice[]) => { let outputDevices: DeviceRowData[] = devices; diff --git a/src/panels/config/zha/zha-device-binding.ts b/src/panels/config/zha/zha-device-binding.ts index 5aeaf74c7d..e1e3c5c792 100644 --- a/src/panels/config/zha/zha-device-binding.ts +++ b/src/panels/config/zha/zha-device-binding.ts @@ -1,12 +1,8 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; import "@material/mwc-button/mwc-button"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, @@ -17,21 +13,29 @@ import { PropertyValues, TemplateResult, } from "lit-element"; - +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { bindDevices, unbindDevices, ZHADevice } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { ItemSelectedEvent } from "./types"; -import "@polymer/paper-item/paper-item"; @customElement("zha-device-binding-control") export class ZHADeviceBindingControl extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public selectedDevice?: ZHADevice; - @property() private _showHelp: boolean = false; - @property() private _bindTargetIndex: number = -1; + + @property() private _showHelp = false; + + @property() private _bindTargetIndex = -1; + @property() private bindableDevices: ZHADevice[] = []; + @property() private _deviceToBind?: ZHADevice; protected updated(changedProperties: PropertyValues): void { diff --git a/src/panels/config/zha/zha-device-card.ts b/src/panels/config/zha/zha-device-card.ts index 312fe982c1..af597ec060 100644 --- a/src/panels/config/zha/zha-device-card.ts +++ b/src/panels/config/zha/zha-device-card.ts @@ -1,7 +1,3 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/entity/state-badge"; -import "../../../components/ha-card"; import "@material/mwc-button"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-input/paper-input"; @@ -9,7 +5,7 @@ import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-listbox/paper-listbox"; - +import { HassEvent, UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, CSSResult, @@ -20,8 +16,13 @@ import { PropertyValues, TemplateResult, } from "lit-element"; - import { fireEvent } from "../../../common/dom/fire_event"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { navigate } from "../../../common/navigate"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/entity/state-badge"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { AreaRegistryEntry, subscribeAreaRegistry, @@ -37,12 +38,9 @@ import { } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; -import { ItemSelectedEvent, NodeServiceData } from "./types"; -import { navigate } from "../../../common/navigate"; -import { UnsubscribeFunc, HassEvent } from "home-assistant-js-websocket"; -import { formatAsPaddedHex } from "./functions"; -import { computeStateName } from "../../../common/entity/compute_state_name"; import { addEntitiesToLovelaceView } from "../../lovelace/editor/add-entities-to-view"; +import { formatAsPaddedHex } from "./functions"; +import { ItemSelectedEvent, NodeServiceData } from "./types"; declare global { // for fire event @@ -56,19 +54,33 @@ declare global { @customElement("zha-device-card") class ZHADeviceCard extends LitElement { @property() public hass!: HomeAssistant; + @property() public device?: ZHADevice; + @property({ type: Boolean }) public narrow?: boolean; + @property({ type: Boolean }) public showHelp?: boolean = false; + @property({ type: Boolean }) public showActions?: boolean = true; + @property({ type: Boolean }) public showName?: boolean = true; + @property({ type: Boolean }) public showEntityDetail?: boolean = true; + @property({ type: Boolean }) public showModelInfo?: boolean = true; + @property({ type: Boolean }) public showEditableInfo?: boolean = true; + @property() private _serviceData?: NodeServiceData; + @property() private _areas: AreaRegistryEntry[] = []; - @property() private _selectedAreaIndex: number = -1; + + @property() private _selectedAreaIndex = -1; + @property() private _userGivenName?: string; + private _unsubAreas?: UnsubscribeFunc; + private _unsubEntities?: UnsubscribeFunc; public disconnectedCallback() { @@ -102,7 +114,9 @@ class ZHADeviceCard extends LitElement { }); } }, "entity_registry_updated") - .then((unsub) => (this._unsubEntities = unsub)); + .then((unsub) => { + this._unsubEntities = unsub; + }); } protected firstUpdated(changedProperties: PropertyValues): void { @@ -167,21 +181,29 @@ class ZHADeviceCard extends LitElement {
    Device Type:
    ${this.device!.device_type}
    LQI:
    -
    ${this.device!.lqi || - this.hass!.localize("ui.dialogs.zha_device_info.unknown")}
    +
    ${ + this.device!.lqi || + this.hass!.localize("ui.dialogs.zha_device_info.unknown") + }
    RSSI:
    -
    ${this.device!.rssi || - this.hass!.localize("ui.dialogs.zha_device_info.unknown")}
    +
    ${ + this.device!.rssi || + this.hass!.localize("ui.dialogs.zha_device_info.unknown") + }
    ${this.hass!.localize( "ui.dialogs.zha_device_info.last_seen" )}:
    -
    ${this.device!.last_seen || - this.hass!.localize("ui.dialogs.zha_device_info.unknown")}
    +
    ${ + this.device!.last_seen || + this.hass!.localize("ui.dialogs.zha_device_info.unknown") + }
    ${this.hass!.localize( "ui.dialogs.zha_device_info.power_source" )}:
    -
    ${this.device!.power_source || - this.hass!.localize("ui.dialogs.zha_device_info.unknown")}
    +
    ${ + this.device!.power_source || + this.hass!.localize("ui.dialogs.zha_device_info.unknown") + }
    ${ this.device!.quirk_applied ? html` @@ -340,7 +362,7 @@ class ZHADeviceCard extends LitElement { domain="zha" service="permit" class="help-text2" - /> + > ` : ""} ` diff --git a/src/panels/config/zha/zha-device-page.ts b/src/panels/config/zha/zha-device-page.ts index 4b152925e3..92711fd4d4 100755 --- a/src/panels/config/zha/zha-device-page.ts +++ b/src/panels/config/zha/zha-device-page.ts @@ -1,47 +1,52 @@ -import "../../../layouts/hass-subpage"; -import "../../../components/ha-paper-icon-button-arrow-prev"; -import "./zha-device-binding"; -import "./zha-group-binding"; -import "./zha-cluster-attributes"; -import "./zha-cluster-commands"; -import "./zha-clusters"; -import "./zha-node"; import "@polymer/paper-icon-button/paper-icon-button"; - import { + css, CSSResult, + customElement, html, LitElement, property, PropertyValues, TemplateResult, - customElement, - css, } from "lit-element"; - import { HASSDomEvent } from "../../../common/dom/fire_event"; +import "../../../components/ha-paper-icon-button-arrow-prev"; import { Cluster, fetchBindableDevices, - ZHADevice, - fetchZHADevice, - ZHAGroup, fetchGroups, + fetchZHADevice, + ZHADevice, + ZHAGroup, } from "../../../data/zha"; +import "../../../layouts/hass-subpage"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; import { sortZHADevices, sortZHAGroups } from "./functions"; import { ZHAClusterSelectedParams } from "./types"; +import "./zha-cluster-attributes"; +import "./zha-cluster-commands"; +import "./zha-clusters"; +import "./zha-device-binding"; +import "./zha-group-binding"; +import "./zha-node"; @customElement("zha-device-page") export class ZHADevicePage extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public ieee?: string; + @property() public device?: ZHADevice; + @property() public narrow?: boolean; + @property() private _selectedCluster?: Cluster; + @property() private _bindableDevices: ZHADevice[] = []; + @property() private _groups: ZHAGroup[] = []; protected updated(changedProperties: PropertyValues): void { @@ -111,7 +116,7 @@ export class ZHADevicePage extends LitElement { : ""} ` : ""} -
    +
    `; } diff --git a/src/panels/config/zha/zha-devices-data-table.ts b/src/panels/config/zha/zha-devices-data-table.ts index 7824e178ca..3808868633 100644 --- a/src/panels/config/zha/zha-devices-data-table.ts +++ b/src/panels/config/zha/zha-devices-data-table.ts @@ -1,25 +1,21 @@ -import "../../../components/data-table/ha-data-table"; -import "../../../components/entity/ha-state-icon"; - -import memoizeOne from "memoize-one"; - import { - LitElement, - html, - TemplateResult, - property, customElement, + html, + LitElement, + property, query, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../types"; -// tslint:disable-next-line -import { +import memoizeOne from "memoize-one"; +import "../../../components/data-table/ha-data-table"; +import type { DataTableColumnContainer, HaDataTable, } from "../../../components/data-table/ha-data-table"; -// tslint:disable-next-line -import { ZHADevice } from "../../../data/zha"; +import "../../../components/entity/ha-state-icon"; +import type { ZHADevice } from "../../../data/zha"; import { showZHADeviceInfoDialog } from "../../../dialogs/zha-device-info-dialog/show-dialog-zha-device-info"; +import type { HomeAssistant } from "../../../types"; export interface DeviceRowData extends ZHADevice { device?: DeviceRowData; @@ -28,9 +24,13 @@ export interface DeviceRowData extends ZHADevice { @customElement("zha-devices-data-table") export class ZHADevicesDataTable extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property({ type: Boolean }) public selectable = false; + @property() public devices: ZHADevice[] = []; + @query("ha-data-table") private _dataTable!: HaDataTable; private _devices = memoizeOne((devices: ZHADevice[]) => { diff --git a/src/panels/config/zha/zha-group-binding.ts b/src/panels/config/zha/zha-group-binding.ts index 543735a7fb..1f54489981 100644 --- a/src/panels/config/zha/zha-group-binding.ts +++ b/src/panels/config/zha/zha-group-binding.ts @@ -1,12 +1,8 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; import "@material/mwc-button/mwc-button"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, @@ -15,41 +11,53 @@ import { LitElement, property, PropertyValues, - TemplateResult, query, + TemplateResult, } from "lit-element"; - +import type { HASSDomEvent } from "../../../common/dom/fire_event"; +import "../../../components/buttons/ha-call-service-button"; +import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { bindDeviceToGroup, + Cluster, + fetchClustersForZhaNode, unbindDeviceFromGroup, ZHADevice, ZHAGroup, - Cluster, - fetchClustersForZhaNode, } from "../../../data/zha"; -import "./zha-clusters-data-table"; import { haStyle } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; +import type { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { ItemSelectedEvent } from "./types"; -import "@polymer/paper-item/paper-item"; -import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; -// tslint:disable-next-line: no-duplicate-imports -import { ZHAClustersDataTable } from "./zha-clusters-data-table"; +import "./zha-clusters-data-table"; +import type { ZHAClustersDataTable } from "./zha-clusters-data-table"; @customElement("zha-group-binding-control") export class ZHAGroupBindingControl extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public narrow?: boolean; + @property() public selectedDevice?: ZHADevice; - @property() private _showHelp: boolean = false; - @property() private _bindTargetIndex: number = -1; + + @property() private _showHelp = false; + + @property() private _bindTargetIndex = -1; + @property() private groups: ZHAGroup[] = []; + @property() private _selectedClusters: string[] = []; + @property() private _clusters: Cluster[] = []; + private _groupToBind?: ZHAGroup; + private _clustersToBind?: Cluster[]; + @query("zha-clusters-data-table") private _zhaClustersDataTable!: ZHAClustersDataTable; @@ -99,9 +107,7 @@ export class ZHAGroupBindingControl extends LitElement { @iron-select="${this._bindTargetIndexChanged}" > ${this.groups.map( - (group) => html` - ${group.name} - ` + (group) => html` ${group.name} ` )} diff --git a/src/panels/config/zha/zha-group-page.ts b/src/panels/config/zha/zha-group-page.ts index cb2dce1c0b..55a6397112 100644 --- a/src/panels/config/zha/zha-group-page.ts +++ b/src/panels/config/zha/zha-group-page.ts @@ -1,53 +1,61 @@ +import "@material/mwc-button"; +import "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-spinner/paper-spinner"; import { - property, - LitElement, - html, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, } from "lit-element"; - import memoizeOne from "memoize-one"; - -import "../../../layouts/hass-subpage"; -import "../../../layouts/hass-error-screen"; -import "../ha-config-section"; -import { HomeAssistant } from "../../../types"; +import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; +import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; import { + addMembersToGroup, + fetchGroup, + fetchGroupableDevices, + removeGroups, + removeMembersFromGroup, ZHADevice, ZHAGroup, - fetchGroup, - removeGroups, - fetchGroupableDevices, - addMembersToGroup, - removeMembersFromGroup, } from "../../../data/zha"; +import "../../../layouts/hass-error-screen"; +import "../../../layouts/hass-subpage"; +import { HomeAssistant } from "../../../types"; +import "../ha-config-section"; import { formatAsPaddedHex } from "./functions"; import "./zha-device-card"; import "./zha-devices-data-table"; -import { navigate } from "../../../common/navigate"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "@polymer/paper-spinner/paper-spinner"; -import "@material/mwc-button"; -import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; -import { HASSDomEvent } from "../../../common/dom/fire_event"; @customElement("zha-group-page") export class ZHAGroupPage extends LitElement { @property() public hass!: HomeAssistant; + @property() public group?: ZHAGroup; + @property() public groupId!: number; + @property() public narrow!: boolean; + @property() public isWide!: boolean; + @property() public devices: ZHADevice[] = []; - @property() private _processingAdd: boolean = false; - @property() private _processingRemove: boolean = false; + + @property() private _processingAdd = false; + + @property() private _processingRemove = false; + @property() private _filteredDevices: ZHADevice[] = []; + @property() private _selectedDevicesToAdd: string[] = []; + @property() private _selectedDevicesToRemove: string[] = []; - private _firstUpdatedCalled: boolean = false; + private _firstUpdatedCalled = false; private _members = memoizeOne( (group: ZHAGroup): ZHADevice[] => group.members @@ -152,7 +160,7 @@ export class ZHAGroupPage extends LitElement {
    @@ -186,7 +194,7 @@ export class ZHAGroupPage extends LitElement {
    diff --git a/src/panels/config/zha/zha-groups-dashboard.ts b/src/panels/config/zha/zha-groups-dashboard.ts index cee06458ca..974fb1da96 100644 --- a/src/panels/config/zha/zha-groups-dashboard.ts +++ b/src/panels/config/zha/zha-groups-dashboard.ts @@ -1,34 +1,38 @@ -import "./zha-groups-data-table"; - -import { - LitElement, - html, - TemplateResult, - property, - customElement, - CSSResult, - css, - PropertyValues, -} from "lit-element"; -import { HomeAssistant } from "../../../types"; -import { ZHAGroup, fetchGroups, removeGroups } from "../../../data/zha"; -import { sortZHAGroups } from "./functions"; -import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; import "@material/mwc-button"; -import "@polymer/paper-spinner/paper-spinner"; import "@polymer/paper-icon-button/paper-icon-button"; -import { navigate } from "../../../common/navigate"; -import "../../../layouts/hass-subpage"; +import "@polymer/paper-spinner/paper-spinner"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import { HASSDomEvent } from "../../../common/dom/fire_event"; +import { navigate } from "../../../common/navigate"; +import { SelectionChangedEvent } from "../../../components/data-table/ha-data-table"; +import { fetchGroups, removeGroups, ZHAGroup } from "../../../data/zha"; +import "../../../layouts/hass-subpage"; +import { HomeAssistant } from "../../../types"; +import { sortZHAGroups } from "./functions"; +import "./zha-groups-data-table"; @customElement("zha-groups-dashboard") export class ZHAGroupsDashboard extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property() public _groups?: ZHAGroup[]; - @property() private _processingRemove: boolean = false; + + @property() private _processingRemove = false; + @property() private _selectedGroupsToRemove: number[] = []; - private _firstUpdatedCalled: boolean = false; + + private _firstUpdatedCalled = false; public connectedCallback(): void { super.connectedCallback(); @@ -80,7 +84,7 @@ export class ZHAGroupsDashboard extends LitElement {
    diff --git a/src/panels/config/zha/zha-groups-data-table.ts b/src/panels/config/zha/zha-groups-data-table.ts index d1cc0a03d5..ead1a9f20a 100644 --- a/src/panels/config/zha/zha-groups-data-table.ts +++ b/src/panels/config/zha/zha-groups-data-table.ts @@ -1,26 +1,22 @@ -import "../../../components/data-table/ha-data-table"; -import "../../../components/entity/ha-state-icon"; - -import memoizeOne from "memoize-one"; - import { - LitElement, - html, - TemplateResult, - property, customElement, + html, + LitElement, + property, query, + TemplateResult, } from "lit-element"; -import { HomeAssistant } from "../../../types"; -// tslint:disable-next-line -import { +import memoizeOne from "memoize-one"; +import { navigate } from "../../../common/navigate"; +import "../../../components/data-table/ha-data-table"; +import type { DataTableColumnContainer, HaDataTable, } from "../../../components/data-table/ha-data-table"; -// tslint:disable-next-line -import { ZHAGroup, ZHADevice } from "../../../data/zha"; +import "../../../components/entity/ha-state-icon"; +import type { ZHADevice, ZHAGroup } from "../../../data/zha"; +import type { HomeAssistant } from "../../../types"; import { formatAsPaddedHex } from "./functions"; -import { navigate } from "../../../common/navigate"; export interface GroupRowData extends ZHAGroup { group?: GroupRowData; @@ -30,9 +26,13 @@ export interface GroupRowData extends ZHAGroup { @customElement("zha-groups-data-table") export class ZHAGroupsDataTable extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow = false; + @property() public groups: ZHAGroup[] = []; + @property() public selectable = false; + @query("ha-data-table") private _dataTable!: HaDataTable; private _groups = memoizeOne((groups: ZHAGroup[]) => { @@ -83,9 +83,7 @@ export class ZHAGroupsDataTable extends LitElement { type: "numeric", width: "15%", template: (groupId: number) => { - return html` - ${formatAsPaddedHex(groupId)} - `; + return html` ${formatAsPaddedHex(groupId)} `; }, sortable: true, }, @@ -94,9 +92,7 @@ export class ZHAGroupsDataTable extends LitElement { type: "numeric", width: "15%", template: (members: ZHADevice[]) => { - return html` - ${members.length} - `; + return html` ${members.length} `; }, sortable: true, }, diff --git a/src/panels/config/zha/zha-node.ts b/src/panels/config/zha/zha-node.ts index d7b93438d7..fa9e3382b8 100644 --- a/src/panels/config/zha/zha-node.ts +++ b/src/panels/config/zha/zha-node.ts @@ -1,10 +1,4 @@ -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../ha-config-section"; -import "./zha-device-card"; import "@polymer/paper-icon-button/paper-icon-button"; - import { css, CSSResult, @@ -14,18 +8,25 @@ import { property, TemplateResult, } from "lit-element"; - +import { navigate } from "../../../common/navigate"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-service-description"; import { ZHADevice } from "../../../data/zha"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; -import { navigate } from "../../../common/navigate"; +import "../ha-config-section"; +import "./zha-device-card"; @customElement("zha-node") export class ZHANode extends LitElement { @property() public hass?: HomeAssistant; + @property() public isWide?: boolean; + @property() public device?: ZHADevice; - @property() private _showHelp: boolean = false; + + @property() private _showHelp = false; protected render(): TemplateResult { return html` diff --git a/src/panels/config/zone/dialog-zone-detail.ts b/src/panels/config/zone/dialog-zone-detail.ts index b216e6cfe8..71096cc4a4 100644 --- a/src/panels/config/zone/dialog-zone-detail.ts +++ b/src/panels/config/zone/dialog-zone-detail.ts @@ -1,41 +1,47 @@ +import "@material/mwc-button"; +import "@polymer/paper-input/paper-input"; import { - LitElement, - html, css, CSSResult, - TemplateResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; - -import "@polymer/paper-input/paper-input"; -import "@material/mwc-button"; - -import "../../../components/map/ha-location-editor"; -import "../../../components/ha-switch"; - -import { ZoneDetailDialogParams } from "./show-dialog-zone-detail"; -import { HomeAssistant } from "../../../types"; -import { - ZoneMutableParams, - passiveRadiusColor, - defaultRadiusColor, - getZoneEditorInitData, -} from "../../../data/zone"; import { addDistanceToCoord } from "../../../common/location/add_distance_to_coord"; import { createCloseHeading } from "../../../components/ha-dialog"; +import "../../../components/ha-switch"; +import "../../../components/map/ha-location-editor"; +import { + defaultRadiusColor, + getZoneEditorInitData, + passiveRadiusColor, + ZoneMutableParams, +} from "../../../data/zone"; import { haStyleDialog } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; +import { ZoneDetailDialogParams } from "./show-dialog-zone-detail"; class DialogZoneDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _name!: string; + @property() private _icon!: string; + @property() private _latitude!: number; + @property() private _longitude!: number; + @property() private _passive!: boolean; + @property() private _radius!: number; + @property() private _error?: string; + @property() private _params?: ZoneDetailDialogParams; - @property() private _submitting: boolean = false; + + @property() private _submitting = false; public async showDialog(params: ZoneDetailDialogParams): Promise { this._params = params; @@ -96,11 +102,7 @@ class DialogZoneDetail extends LitElement { )} >
    - ${this._error - ? html` -
    ${this._error}
    - ` - : ""} + ${this._error ? html`
    ${this._error}
    ` : ""}
    - `; + return html` `; } const hass = this.hass; const listBox = @@ -406,7 +410,7 @@ export class HaConfigZone extends SubscribeMixin(LitElement) { private async _updateEntry( entry: Zone, values: Partial, - fitMap: boolean = false + fitMap = false ) { const updated = await updateZone(this.hass!, entry!.id, values); this._storageItems = this._storageItems!.map((ent) => diff --git a/src/panels/config/zwave/ha-config-zwave.js b/src/panels/config/zwave/ha-config-zwave.js index cb0a6639eb..16f0522d37 100644 --- a/src/panels/config/zwave/ha-config-zwave.js +++ b/src/panels/config/zwave/ha-config-zwave.js @@ -6,31 +6,29 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { computeStateDomain } from "../../../common/entity/compute_state_domain"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { sortStatesByName } from "../../../common/entity/states_sort_by_name"; import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-menu-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-paper-icon-button-arrow-prev"; -import "../../../layouts/ha-app-layout"; -import "../../../resources/ha-style"; import "../../../components/ha-card"; - +import "../../../components/ha-menu-button"; +import "../../../components/ha-paper-icon-button-arrow-prev"; +import "../../../components/ha-service-description"; +import "../../../layouts/ha-app-layout"; +import { EventsMixin } from "../../../mixins/events-mixin"; +import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../../../resources/ha-style"; import "../ha-config-section"; import "../ha-form-style"; import "./zwave-groups"; import "./zwave-log"; import "./zwave-network"; import "./zwave-node-config"; +import "./zwave-node-protection"; import "./zwave-usercodes"; import "./zwave-values"; -import "./zwave-node-protection"; - -import { sortStatesByName } from "../../../common/entity/states_sort_by_name"; -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { computeStateDomain } from "../../../common/entity/compute_state_domain"; -import { EventsMixin } from "../../../mixins/events-mixin"; -import LocalizeMixin from "../../../mixins/localize-mixin"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/config/zwave/zwave-groups.js b/src/panels/config/zwave/zwave-groups.js index 5b67a07f3c..165cfbbcfd 100644 --- a/src/panels/config/zwave/zwave-groups.js +++ b/src/panels/config/zwave/zwave-groups.js @@ -2,13 +2,12 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import { computeStateName } from "../../../common/entity/compute_state_name"; import "../../../components/buttons/ha-call-service-button"; import "../../../components/ha-card"; -import { computeStateName } from "../../../common/entity/compute_state_name"; - class ZwaveGroups extends PolymerElement { static get template() { return html` diff --git a/src/panels/config/zwave/zwave-log-dialog.js b/src/panels/config/zwave/zwave-log-dialog.js index c85617702e..8f2c271c62 100644 --- a/src/panels/config/zwave/zwave-log-dialog.js +++ b/src/panels/config/zwave/zwave-log-dialog.js @@ -1,11 +1,10 @@ import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../components/dialog/ha-paper-dialog"; -import "../../../resources/ha-style"; - import { EventsMixin } from "../../../mixins/events-mixin"; +import "../../../resources/ha-style"; class ZwaveLogDialog extends EventsMixin(PolymerElement) { static get template() { diff --git a/src/panels/config/zwave/zwave-log.js b/src/panels/config/zwave/zwave-log.js index af91e490fc..b933bdd7ee 100755 --- a/src/panels/config/zwave/zwave-log.js +++ b/src/panels/config/zwave/zwave-log.js @@ -2,13 +2,13 @@ import "@material/mwc-button"; import "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; -import LocalizeMixin from "../../../mixins/localize-mixin"; -import { EventsMixin } from "../../../mixins/events-mixin"; import isPwa from "../../../common/config/is_pwa"; - -import "../ha-config-section"; import "../../../components/ha-card"; +import { EventsMixin } from "../../../mixins/events-mixin"; +import LocalizeMixin from "../../../mixins/localize-mixin"; +import "../ha-config-section"; let registeredDialog = false; diff --git a/src/panels/config/zwave/zwave-network.ts b/src/panels/config/zwave/zwave-network.ts index 05dc9e73ab..187e22d742 100644 --- a/src/panels/config/zwave/zwave-network.ts +++ b/src/panels/config/zwave/zwave-network.ts @@ -1,6 +1,6 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-spinner/paper-spinner"; - +import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, CSSResult, @@ -10,32 +10,33 @@ import { property, TemplateResult, } from "lit-element"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; - -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; +import "../../../components/buttons/ha-call-api-button"; +import "../../../components/buttons/ha-call-service-button"; +import "../../../components/ha-card"; +import "../../../components/ha-icon"; +import "../../../components/ha-service-description"; import { fetchNetworkStatus, ZWaveNetworkStatus, - ZWAVE_NETWORK_STATE_STOPPED, - ZWAVE_NETWORK_STATE_STARTED, ZWAVE_NETWORK_STATE_AWAKED, ZWAVE_NETWORK_STATE_READY, + ZWAVE_NETWORK_STATE_STARTED, + ZWAVE_NETWORK_STATE_STOPPED, } from "../../../data/zwave"; - -import "../../../components/buttons/ha-call-api-button"; -import "../../../components/buttons/ha-call-service-button"; -import "../../../components/ha-service-description"; -import "../../../components/ha-card"; -import "../../../components/ha-icon"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; import "../ha-config-section"; @customElement("zwave-network") export class ZwaveNetwork extends LitElement { @property() public hass!: HomeAssistant; + @property() public isWide!: boolean; + @property() private _showHelp = false; + @property() private _networkStatus?: ZWaveNetworkStatus; + @property() private _unsubs: Array> = []; public disconnectedCallback(): void { @@ -133,9 +134,7 @@ export class ZwaveNetwork extends LitElement { ${this._generateServiceButton("heal_network")} ${this._generateServiceButton("test_network")} ` - : html` - ${this._generateServiceButton("start_network")} - `} + : html` ${this._generateServiceButton("start_network")} `}
    ${this._networkStatus.state >= ZWAVE_NETWORK_STATE_AWAKED ? html` diff --git a/src/panels/config/zwave/zwave-node-config.ts b/src/panels/config/zwave/zwave-node-config.ts index 9b38099a2c..b50ef6f2c7 100644 --- a/src/panels/config/zwave/zwave-node-config.ts +++ b/src/panels/config/zwave/zwave-node-config.ts @@ -2,7 +2,6 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, @@ -10,31 +9,36 @@ import { html, LitElement, property, - TemplateResult, PropertyValues, + TemplateResult, } from "lit-element"; - -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; - import "../../../components/buttons/ha-call-service-button"; import "../../../components/ha-card"; import { - ZWaveConfigItem, - ZWaveNode, - ZWaveConfigServiceData, fetchNodeConfig, + ZWaveConfigItem, + ZWaveConfigServiceData, + ZWaveNode, } from "../../../data/zwave"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; @customElement("zwave-node-config") export class ZwaveNodeConfig extends LitElement { @property() public hass!: HomeAssistant; + @property() public nodes: ZWaveNode[] = []; + @property() public config: ZWaveConfigItem[] = []; - @property() public selectedNode: number = -1; + + @property() public selectedNode = -1; + @property() private _configItem?: ZWaveConfigItem; - @property() private _wakeupInput: number = -1; - @property() private _selectedConfigParameter: number = -1; + + @property() private _wakeupInput = -1; + + @property() private _selectedConfigParameter = -1; + @property() private _selectedConfigValue: number | string = -1; protected render(): TemplateResult { @@ -286,11 +290,8 @@ export class ZwaveNodeConfig extends LitElement { return; } this._configItem = undefined; - this._wakeupInput = this.nodes[this.selectedNode].attributes.hasOwnProperty( - "wake_up_interval" - ) - ? this.nodes[this.selectedNode].attributes.wake_up_interval! - : -1; + this._wakeupInput = + this.nodes[this.selectedNode].attributes.wake_up_interval || -1; } private _onWakeupIntervalChanged(value: ChangeEvent): void { diff --git a/src/panels/config/zwave/zwave-node-protection.js b/src/panels/config/zwave/zwave-node-protection.js index 4bc5eb452d..c980187c5c 100644 --- a/src/panels/config/zwave/zwave-node-protection.js +++ b/src/panels/config/zwave/zwave-node-protection.js @@ -3,8 +3,8 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../components/buttons/ha-call-api-button"; import "../../../components/ha-card"; diff --git a/src/panels/config/zwave/zwave-usercodes.js b/src/panels/config/zwave/zwave-usercodes.js index accda0f215..2ab33eba5d 100644 --- a/src/panels/config/zwave/zwave-usercodes.js +++ b/src/panels/config/zwave/zwave-usercodes.js @@ -3,8 +3,8 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../../components/buttons/ha-call-service-button"; import "../../../components/ha-card"; diff --git a/src/panels/config/zwave/zwave-values.ts b/src/panels/config/zwave/zwave-values.ts index a06d933ded..20b5eeec35 100644 --- a/src/panels/config/zwave/zwave-values.ts +++ b/src/panels/config/zwave/zwave-values.ts @@ -1,7 +1,6 @@ import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - import { css, CSSResult, @@ -11,20 +10,19 @@ import { property, TemplateResult, } from "lit-element"; - -import { haStyle } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; - import "../../../components/buttons/ha-call-service-button"; import "../../../components/ha-card"; - import { ZWaveValue } from "../../../data/zwave"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; @customElement("zwave-values") export class ZwaveValues extends LitElement { @property() public hass!: HomeAssistant; + @property() public values: ZWaveValue[] = []; - @property() private _selectedValue: number = -1; + + @property() private _selectedValue = -1; protected render(): TemplateResult { return html` diff --git a/src/panels/custom/ha-panel-custom.ts b/src/panels/custom/ha-panel-custom.ts index fc4d302073..6de6709a60 100644 --- a/src/panels/custom/ha-panel-custom.ts +++ b/src/panels/custom/ha-panel-custom.ts @@ -1,10 +1,10 @@ import { property, PropertyValues, UpdatingElement } from "lit-element"; -import { loadCustomPanel } from "../../util/custom-panel/load-custom-panel"; -import { createCustomPanelElement } from "../../util/custom-panel/create-custom-panel-element"; -import { setCustomPanelProperties } from "../../util/custom-panel/set-custom-panel-properties"; -import { HomeAssistant, Route } from "../../types"; -import { CustomPanelInfo } from "../../data/panel_custom"; import { navigate } from "../../common/navigate"; +import { CustomPanelInfo } from "../../data/panel_custom"; +import { HomeAssistant, Route } from "../../types"; +import { createCustomPanelElement } from "../../util/custom-panel/create-custom-panel-element"; +import { loadCustomPanel } from "../../util/custom-panel/load-custom-panel"; +import { setCustomPanelProperties } from "../../util/custom-panel/set-custom-panel-properties"; declare global { interface Window { @@ -14,9 +14,13 @@ declare global { export class HaPanelCustom extends UpdatingElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public route!: Route; + @property() public panel!: CustomPanelInfo; + private _setProperties?: (props: {}) => void | undefined; // Since navigate fires events on `window`, we need to expose this as a function diff --git a/src/panels/developer-tools/developer-tools-router.ts b/src/panels/developer-tools/developer-tools-router.ts index 7af7705ac1..ecb4caf2ad 100644 --- a/src/panels/developer-tools/developer-tools-router.ts +++ b/src/panels/developer-tools/developer-tools-router.ts @@ -1,11 +1,12 @@ -import { HassRouterPage, RouterOptions } from "../../layouts/hass-router-page"; -import { customElement, property } from "lit-element"; import { PolymerElement } from "@polymer/polymer"; +import { customElement, property } from "lit-element"; +import { HassRouterPage, RouterOptions } from "../../layouts/hass-router-page"; import { HomeAssistant } from "../../types"; @customElement("developer-tools-router") class DeveloperToolsRouter extends HassRouterPage { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; protected routerOptions: RouterOptions = { diff --git a/src/panels/developer-tools/event/developer-tools-event.js b/src/panels/developer-tools/event/developer-tools-event.js index e2ea852a8e..b861cb77e9 100644 --- a/src/panels/developer-tools/event/developer-tools-event.js +++ b/src/panels/developer-tools/event/developer-tools-event.js @@ -1,18 +1,17 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { safeLoad } from "js-yaml"; - import "../../../components/ha-code-editor"; -import "../../../resources/ha-style"; -import "./events-list"; -import "./event-subscribe-card"; +import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; -import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; +import "../../../resources/ha-style"; +import "./event-subscribe-card"; +import "./events-list"; const ERROR_SENTINEL = {}; /* @@ -165,7 +164,7 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) { return; } this.hass.callApi("POST", "events/" + this.eventType, this.parsedJSON).then( - function() { + function () { this.fire("hass-notification", { message: this.hass.localize( "ui.panel.developer-tools.tabs.events.notification_event_fired", diff --git a/src/panels/developer-tools/event/event-subscribe-card.ts b/src/panels/developer-tools/event/event-subscribe-card.ts index 4816672d59..7e64b3ba34 100644 --- a/src/panels/developer-tools/event/event-subscribe-card.ts +++ b/src/panels/developer-tools/event/event-subscribe-card.ts @@ -1,19 +1,19 @@ -import { - LitElement, - customElement, - TemplateResult, - html, - property, - CSSResult, - css, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; import { HassEvent } from "home-assistant-js-websocket"; -import { HomeAssistant } from "../../../types"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import "../../../components/ha-card"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { formatTime } from "../../../common/datetime/format_time"; +import "../../../components/ha-card"; +import { PolymerChangedEvent } from "../../../polymer-types"; +import { HomeAssistant } from "../../../types"; @customElement("event-subscribe-card") class EventSubscribeCard extends LitElement { diff --git a/src/panels/developer-tools/event/events-list.js b/src/panels/developer-tools/event/events-list.js index b3f5e4e0c3..86cb30bee4 100644 --- a/src/panels/developer-tools/event/events-list.js +++ b/src/panels/developer-tools/event/events-list.js @@ -1,6 +1,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { compare } from "../../../common/string/compare"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; @@ -58,7 +58,7 @@ class EventsList extends EventsMixin(LocalizeMixin(PolymerElement)) { connectedCallback() { super.connectedCallback(); this.hass.callApi("GET", "events").then( - function(events) { + function (events) { this.events = events.sort((e1, e2) => compare(e1.event, e2.event)); }.bind(this) ); diff --git a/src/panels/developer-tools/ha-panel-developer-tools.ts b/src/panels/developer-tools/ha-panel-developer-tools.ts index 41f4c6c1da..c0f9adbc18 100644 --- a/src/panels/developer-tools/ha-panel-developer-tools.ts +++ b/src/panels/developer-tools/ha-panel-developer-tools.ts @@ -1,33 +1,32 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - customElement, - property, -} from "lit-element"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tabs"; - -import "../../components/ha-menu-button"; -import "./developer-tools-router"; - +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { isComponentLoaded } from "../../common/config/is_component_loaded"; import scrollToTarget from "../../common/dom/scroll-to-target"; - +import { navigate } from "../../common/navigate"; +import "../../components/ha-menu-button"; import { haStyle } from "../../resources/styles"; import { HomeAssistant, Route } from "../../types"; -import { navigate } from "../../common/navigate"; -import { isComponentLoaded } from "../../common/config/is_component_loaded"; +import "./developer-tools-router"; @customElement("ha-panel-developer-tools") class PanelDeveloperTools extends LitElement { @property() public hass!: HomeAssistant; + @property() public route!: Route; + @property() public narrow!: boolean; protected render(): TemplateResult { diff --git a/src/panels/developer-tools/info/developer-tools-info.ts b/src/panels/developer-tools/info/developer-tools-info.ts index 2576fda229..4bebb76103 100644 --- a/src/panels/developer-tools/info/developer-tools-info.ts +++ b/src/panels/developer-tools/info/developer-tools-info.ts @@ -1,17 +1,15 @@ import { - LitElement, - html, - CSSResult, css, - TemplateResult, + CSSResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../types"; import { haStyle } from "../../../resources/styles"; - -import "./system-health-card"; +import { HomeAssistant } from "../../../types"; import "./integrations-card"; +import "./system-health-card"; const JS_TYPE = __BUILD__; const JS_VERSION = __VERSION__; diff --git a/src/panels/developer-tools/info/integrations-card.ts b/src/panels/developer-tools/info/integrations-card.ts index 5fc5800735..14b9a5914e 100644 --- a/src/panels/developer-tools/info/integrations-card.ts +++ b/src/panels/developer-tools/info/integrations-card.ts @@ -1,18 +1,18 @@ import { + css, + CSSResult, + customElement, + html, LitElement, property, TemplateResult, - html, - customElement, - CSSResult, - css, } from "lit-element"; -import { HomeAssistant } from "../../../types"; import memoizeOne from "memoize-one"; import { integrationDocsUrl, integrationIssuesUrl, } from "../../../data/integration"; +import { HomeAssistant } from "../../../types"; @customElement("integrations-card") class IntegrationsCard extends LitElement { diff --git a/src/panels/developer-tools/info/system-health-card.ts b/src/panels/developer-tools/info/system-health-card.ts index 92bef82cf6..d595b494bc 100644 --- a/src/panels/developer-tools/info/system-health-card.ts +++ b/src/panels/developer-tools/info/system-health-card.ts @@ -1,19 +1,18 @@ -import { - LitElement, - html, - CSSResult, - css, - TemplateResult, - property, -} from "lit-element"; import "@polymer/paper-spinner/paper-spinner"; -import "../../../components/ha-card"; - -import { HomeAssistant } from "../../../types"; import { - SystemHealthInfo, + css, + CSSResult, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import "../../../components/ha-card"; +import { fetchSystemHealthInfo, + SystemHealthInfo, } from "../../../data/system_health"; +import { HomeAssistant } from "../../../types"; const sortKeys = (a: string, b: string) => { if (a === "homeassistant") { @@ -33,6 +32,7 @@ const sortKeys = (a: string, b: string) => { class SystemHealthCard extends LitElement { @property() public hass!: HomeAssistant; + @property() private _info?: SystemHealthInfo; protected render(): TemplateResult { @@ -64,9 +64,7 @@ class SystemHealthCard extends LitElement { } if (domain !== "homeassistant") { sections.push( - html` -

    ${this.hass.localize(`domain.${domain}`) || domain}

    - ` + html`

    ${this.hass.localize(`domain.${domain}`) || domain}

    ` ); } sections.push(html` diff --git a/src/panels/developer-tools/logs/developer-tools-logs.ts b/src/panels/developer-tools/logs/developer-tools-logs.ts index fdb8fbb272..5a027e3e0f 100644 --- a/src/panels/developer-tools/logs/developer-tools-logs.ts +++ b/src/panels/developer-tools/logs/developer-tools-logs.ts @@ -1,21 +1,18 @@ import { - LitElement, - html, - CSSResult, css, - TemplateResult, + CSSResult, + customElement, + html, + LitElement, property, query, - customElement, + TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../types"; import { haStyle } from "../../../resources/styles"; - -import "../logs/system-log-card"; -import "../logs/error-log-card"; -// tslint:disable-next-line -import { SystemLogCard } from "../logs/system-log-card"; +import { HomeAssistant } from "../../../types"; +import "./error-log-card"; +import "./system-log-card"; +import type { SystemLogCard } from "./system-log-card"; @customElement("developer-tools-logs") export class HaPanelDevLogs extends LitElement { diff --git a/src/panels/developer-tools/logs/dialog-system-log-detail.ts b/src/panels/developer-tools/logs/dialog-system-log-detail.ts index b1e48d19a5..c9b54b6943 100644 --- a/src/panels/developer-tools/logs/dialog-system-log-detail.ts +++ b/src/panels/developer-tools/logs/dialog-system-log-detail.ts @@ -1,29 +1,28 @@ +import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { - LitElement, - html, css, CSSResult, - TemplateResult, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; - import "../../../components/dialog/ha-paper-dialog"; - -import { SystemLogDetailDialogParams } from "./show-dialog-system-log-detail"; +import { + domainToName, + integrationDocsUrl, + integrationIssuesUrl, +} from "../../../data/integration"; +import { getLoggedErrorIntegration } from "../../../data/system_log"; import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; -import { - integrationDocsUrl, - integrationIssuesUrl, - domainToName, -} from "../../../data/integration"; +import { SystemLogDetailDialogParams } from "./show-dialog-system-log-detail"; import { formatSystemLogTime } from "./util"; -import { getLoggedErrorIntegration } from "../../../data/system_log"; class DialogSystemLogDetail extends LitElement { @property() public hass!: HomeAssistant; + @property() private _params?: SystemLogDetailDialogParams; public async showDialog(params: SystemLogDetailDialogParams): Promise { @@ -91,20 +90,11 @@ class DialogSystemLogDetail extends LitElement { ${item.message.length > 1 ? html`
      - ${item.message.map( - (msg) => - html` -
    • ${msg}
    • - ` - )} + ${item.message.map((msg) => html`
    • ${msg}
    • `)}
    ` : item.message[0]} - ${item.exception - ? html` -
    ${item.exception}
    - ` - : html``} + ${item.exception ? html`
    ${item.exception}
    ` : html``} `; diff --git a/src/panels/developer-tools/logs/error-log-card.ts b/src/panels/developer-tools/logs/error-log-card.ts index fcb7bf476a..9975997c13 100644 --- a/src/panels/developer-tools/logs/error-log-card.ts +++ b/src/panels/developer-tools/logs/error-log-card.ts @@ -1,19 +1,19 @@ -import { - LitElement, - html, - CSSResult, - css, - TemplateResult, - property, -} from "lit-element"; -import "@polymer/paper-icon-button/paper-icon-button"; import "@material/mwc-button"; - -import { HomeAssistant } from "../../../types"; +import "@polymer/paper-icon-button/paper-icon-button"; +import { + css, + CSSResult, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fetchErrorLog } from "../../../data/error_log"; +import { HomeAssistant } from "../../../types"; class ErrorLogCard extends LitElement { @property() public hass!: HomeAssistant; + @property() private _errorLog?: string; protected render(): TemplateResult { diff --git a/src/panels/developer-tools/logs/system-log-card.ts b/src/panels/developer-tools/logs/system-log-card.ts index 72d59cdbd1..cf0b9f0c21 100644 --- a/src/panels/developer-tools/logs/system-log-card.ts +++ b/src/panels/developer-tools/logs/system-log-card.ts @@ -1,33 +1,35 @@ -import { - LitElement, - html, - CSSResult, - css, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-icon-button/paper-icon-button"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-spinner/paper-spinner"; -import "../../../components/ha-card"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/buttons/ha-call-service-button"; import "../../../components/buttons/ha-progress-button"; -import { HomeAssistant } from "../../../types"; +import "../../../components/ha-card"; +import { domainToName } from "../../../data/integration"; import { - LoggedError, fetchSystemLog, getLoggedErrorIntegration, + LoggedError, } from "../../../data/system_log"; +import { HomeAssistant } from "../../../types"; import { showSystemLogDetailDialog } from "./show-dialog-system-log-detail"; import { formatSystemLogTime } from "./util"; -import { domainToName } from "../../../data/integration"; @customElement("system-log-card") export class SystemLogCard extends LitElement { @property() public hass!: HomeAssistant; + public loaded = false; + @property() private _items?: LoggedError[]; public async fetchData(): Promise { diff --git a/src/panels/developer-tools/logs/util.ts b/src/panels/developer-tools/logs/util.ts index 53912f5f91..ae795d9ffb 100644 --- a/src/panels/developer-tools/logs/util.ts +++ b/src/panels/developer-tools/logs/util.ts @@ -1,5 +1,4 @@ import { formatDateTimeWithSeconds } from "../../../common/datetime/format_date_time"; - import { formatTimeWithSeconds } from "../../../common/datetime/format_time"; export const formatSystemLogTime = (date, language: string) => { diff --git a/src/panels/developer-tools/mqtt/developer-tools-mqtt.ts b/src/panels/developer-tools/mqtt/developer-tools-mqtt.ts index e527f4d0dc..5ed1c38b88 100644 --- a/src/panels/developer-tools/mqtt/developer-tools-mqtt.ts +++ b/src/panels/developer-tools/mqtt/developer-tools-mqtt.ts @@ -1,20 +1,18 @@ -import { - LitElement, - customElement, - TemplateResult, - html, - property, - CSSResultArray, - css, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; - -import { HomeAssistant } from "../../../types"; - -import { haStyle } from "../../../resources/styles"; +import { + css, + CSSResultArray, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import "../../../components/ha-card"; import "../../../components/ha-code-editor"; +import { haStyle } from "../../../resources/styles"; +import { HomeAssistant } from "../../../types"; import "./mqtt-subscribe-card"; @customElement("developer-tools-mqtt") @@ -25,7 +23,7 @@ class HaPanelDevMqtt extends LitElement { @property() private payload = ""; - private inited: boolean = false; + private inited = false; protected firstUpdated() { if (localStorage && localStorage["panel-dev-mqtt-topic"]) { diff --git a/src/panels/developer-tools/mqtt/mqtt-subscribe-card.ts b/src/panels/developer-tools/mqtt/mqtt-subscribe-card.ts index 67d128ff7a..0c65086c02 100644 --- a/src/panels/developer-tools/mqtt/mqtt-subscribe-card.ts +++ b/src/panels/developer-tools/mqtt/mqtt-subscribe-card.ts @@ -1,19 +1,18 @@ -import { - LitElement, - customElement, - TemplateResult, - html, - property, - CSSResult, - css, -} from "lit-element"; import "@material/mwc-button"; import "@polymer/paper-input/paper-input"; -import { HomeAssistant } from "../../../types"; -import "../../../components/ha-card"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { formatTime } from "../../../common/datetime/format_time"; - -import { subscribeMQTTTopic, MQTTMessage } from "../../../data/mqtt"; +import "../../../components/ha-card"; +import { MQTTMessage, subscribeMQTTTopic } from "../../../data/mqtt"; +import { HomeAssistant } from "../../../types"; @customElement("mqtt-subscribe-card") class MqttSubscribeCard extends LitElement { diff --git a/src/panels/developer-tools/service/developer-tools-service.js b/src/panels/developer-tools/service/developer-tools-service.js index f4a057f910..c34299a020 100644 --- a/src/panels/developer-tools/service/developer-tools-service.js +++ b/src/panels/developer-tools/service/developer-tools-service.js @@ -1,17 +1,16 @@ import "@material/mwc-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { safeDump, safeLoad } from "js-yaml"; - -import { ENTITY_COMPONENT_DOMAINS } from "../../../data/entity"; import "../../../components/entity/ha-entity-picker"; import "../../../components/ha-code-editor"; import "../../../components/ha-service-picker"; +import { ENTITY_COMPONENT_DOMAINS } from "../../../data/entity"; +import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; +import LocalizeMixin from "../../../mixins/localize-mixin"; import "../../../resources/ha-style"; import "../../../util/app-localstorage-document"; -import LocalizeMixin from "../../../mixins/localize-mixin"; -import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; const ERROR_SENTINEL = {}; /* @@ -241,7 +240,7 @@ class HaPanelDevService extends LocalizeMixin(PolymerElement) { if (!(service in serviceDomains[domain])) return []; const fields = serviceDomains[domain][service].fields; - return Object.keys(fields).map(function(field) { + return Object.keys(fields).map(function (field) { return { key: field, ...fields[field] }; }); } diff --git a/src/panels/developer-tools/state/developer-tools-state.js b/src/panels/developer-tools/state/developer-tools-state.js index e25d156cc7..6472cbe813 100644 --- a/src/panels/developer-tools/state/developer-tools-state.js +++ b/src/panels/developer-tools/state/developer-tools-state.js @@ -2,16 +2,15 @@ import "@material/mwc-button"; import "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { safeDump, safeLoad } from "js-yaml"; - import "../../../components/entity/ha-entity-picker"; import "../../../components/ha-code-editor"; -import "../../../resources/ha-style"; +import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import { EventsMixin } from "../../../mixins/events-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; -import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; +import "../../../resources/ha-style"; const ERROR_SENTINEL = {}; /* @@ -276,10 +275,10 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) { computeEntities(hass, _entityFilter, _stateFilter, _attributeFilter) { return Object.keys(hass.states) - .map(function(key) { + .map(function (key) { return hass.states[key]; }) - .filter(function(value) { + .filter(function (value) { if (!value.entity_id.includes(_entityFilter.toLowerCase())) { return false; } @@ -318,9 +317,7 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) { if ( attributeValue !== null && - JSON.stringify(attributeValue) - .toLowerCase() - .includes(valueFilter) + JSON.stringify(attributeValue).toLowerCase().includes(valueFilter) ) { return true; } @@ -332,7 +329,7 @@ class HaPanelDevState extends EventsMixin(LocalizeMixin(PolymerElement)) { return true; }) - .sort(function(entityA, entityB) { + .sort(function (entityA, entityB) { if (entityA.entity_id < entityB.entity_id) { return -1; } diff --git a/src/panels/developer-tools/template/developer-tools-template.js b/src/panels/developer-tools/template/developer-tools-template.js index f4804d665d..2475a7b256 100644 --- a/src/panels/developer-tools/template/developer-tools-template.js +++ b/src/panels/developer-tools/template/developer-tools-template.js @@ -2,10 +2,10 @@ import "@polymer/paper-spinner/paper-spinner"; import { timeOut } from "@polymer/polymer/lib/utils/async"; import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; -import LocalizeMixin from "../../../mixins/localize-mixin"; import "../../../components/ha-code-editor"; - +import LocalizeMixin from "../../../mixins/localize-mixin"; import "../../../resources/ha-style"; class HaPanelDevTemplate extends LocalizeMixin(PolymerElement) { @@ -183,11 +183,11 @@ For loop example: this.rendering = true; this.hass.callApi("POST", "template", { template: this.template }).then( - function(processed) { + function (processed) { this.processed = processed; this.rendering = false; }.bind(this), - function(error) { + function (error) { this.processed = (error && error.body && error.body.message) || this.hass.localize( diff --git a/src/panels/history/ha-panel-history.js b/src/panels/history/ha-panel-history.js index 432f24d247..3538059837 100644 --- a/src/panels/history/ha-panel-history.js +++ b/src/panels/history/ha-panel-history.js @@ -7,19 +7,18 @@ import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@vaadin/vaadin-date-picker/theme/material/vaadin-date-picker"; - +import { formatDate } from "../../common/datetime/format_date"; +import { computeRTL } from "../../common/util/compute_rtl"; import "../../components/ha-menu-button"; import "../../components/state-history-charts"; import "../../data/ha-state-history-data"; +import LocalizeMixin from "../../mixins/localize-mixin"; import "../../resources/ha-date-picker-style"; import "../../resources/ha-style"; -import { formatDate } from "../../common/datetime/format_date"; -import LocalizeMixin from "../../mixins/localize-mixin"; -import { computeRTL } from "../../common/util/compute_rtl"; - /* * @appliesMixin LocalizeMixin */ @@ -149,7 +148,7 @@ class HaPanelHistory extends LocalizeMixin(PolymerElement) { // ISO8601 formatted date string _currentDate: { type: String, - value: function() { + value: function () { var value = new Date(); var today = new Date( Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()) diff --git a/src/panels/iframe/ha-panel-iframe.js b/src/panels/iframe/ha-panel-iframe.js index 787ef88cbd..ea7826dfc3 100644 --- a/src/panels/iframe/ha-panel-iframe.js +++ b/src/panels/iframe/ha-panel-iframe.js @@ -1,7 +1,7 @@ import "@polymer/app-layout/app-toolbar/app-toolbar"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../components/ha-menu-button"; import "../../resources/ha-style"; diff --git a/src/panels/logbook/ha-logbook-data.js b/src/panels/logbook/ha-logbook-data.js index 12a1969f4f..461fea1f60 100644 --- a/src/panels/logbook/ha-logbook-data.js +++ b/src/panels/logbook/ha-logbook-data.js @@ -1,3 +1,4 @@ +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; const DATA_CACHE = {}; @@ -78,8 +79,8 @@ class HaLogbookData extends PolymerElement { } if (entityId !== ALL_ENTITIES && DATA_CACHE[period][date][ALL_ENTITIES]) { - return DATA_CACHE[period][date][ALL_ENTITIES].then(function(entities) { - return entities.filter(function(entity) { + return DATA_CACHE[period][date][ALL_ENTITIES].then(function (entities) { + return entities.filter(function (entity) { return entity.entity_id === entityId; }); }); @@ -100,11 +101,11 @@ class HaLogbookData extends PolymerElement { } return this.hass.callApi("GET", url).then( - function(logbookEntries) { + function (logbookEntries) { logbookEntries.reverse(); return logbookEntries; }, - function() { + function () { return null; } ); diff --git a/src/panels/logbook/ha-logbook.ts b/src/panels/logbook/ha-logbook.ts index ef6a841ca6..ded1e6a288 100644 --- a/src/panels/logbook/ha-logbook.ts +++ b/src/panels/logbook/ha-logbook.ts @@ -1,26 +1,28 @@ -import "../../components/ha-icon"; -import { formatTimeWithSeconds } from "../../common/datetime/format_time"; +import { + css, + CSSResult, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { scroll } from "lit-virtualizer"; import { formatDate } from "../../common/datetime/format_date"; +import { formatTimeWithSeconds } from "../../common/datetime/format_time"; +import { fireEvent } from "../../common/dom/fire_event"; import { domainIcon } from "../../common/entity/domain_icon"; import { stateIcon } from "../../common/entity/state_icon"; import { computeRTL } from "../../common/util/compute_rtl"; -import { - LitElement, - html, - property, - TemplateResult, - CSSResult, - css, - PropertyValues, -} from "lit-element"; -import { HomeAssistant } from "../../types"; -import { fireEvent } from "../../common/dom/fire_event"; -import { scroll } from "lit-virtualizer"; +import "../../components/ha-icon"; import { LogbookEntry } from "../../data/logbook"; +import { HomeAssistant } from "../../types"; class HaLogbook extends LitElement { @property() public hass!: HomeAssistant; + @property() public entries: LogbookEntry[] = []; + @property({ attribute: "rtl", type: Boolean, reflect: true }) // @ts-ignore private _rtl = false; @@ -88,9 +90,7 @@ class HaLogbook extends LitElement { >
    ${!item.entity_id - ? html` - ${item.name} - ` + ? html` ${item.name} ` : html` { const el = document.createElement("hui-error-badge"); diff --git a/src/panels/lovelace/badges/hui-state-label-badge.ts b/src/panels/lovelace/badges/hui-state-label-badge.ts index 1535a68963..501e9cd185 100644 --- a/src/panels/lovelace/badges/hui-state-label-badge.ts +++ b/src/panels/lovelace/badges/hui-state-label-badge.ts @@ -1,28 +1,27 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - customElement, property, - CSSResult, - css, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - import "../../../components/entity/ha-state-label-badge"; -import "../components/hui-warning-element"; - -import { LovelaceBadge } from "../types"; -import { HomeAssistant } from "../../../types"; -import { StateLabelBadgeConfig } from "./types"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import "../components/hui-warning-element"; +import { LovelaceBadge } from "../types"; +import { StateLabelBadgeConfig } from "./types"; @customElement("hui-state-label-badge") export class HuiStateLabelBadge extends LitElement implements LovelaceBadge { @property() public hass?: HomeAssistant; + @property() protected _config?: StateLabelBadgeConfig; public setConfig(config: StateLabelBadgeConfig): void { diff --git a/src/panels/lovelace/badges/types.ts b/src/panels/lovelace/badges/types.ts index 7b28dae4fb..4868a4bda0 100644 --- a/src/panels/lovelace/badges/types.ts +++ b/src/panels/lovelace/badges/types.ts @@ -1,4 +1,4 @@ -import { LovelaceBadgeConfig, ActionConfig } from "../../../data/lovelace"; +import { ActionConfig, LovelaceBadgeConfig } from "../../../data/lovelace"; import { EntityFilterEntityConfig } from "../entity-rows/types"; export interface EntityFilterBadgeConfig extends LovelaceBadgeConfig { diff --git a/src/panels/lovelace/cards/hui-alarm-panel-card.ts b/src/panels/lovelace/cards/hui-alarm-panel-card.ts index a58a20ccdf..230b86700c 100644 --- a/src/panels/lovelace/cards/hui-alarm-panel-card.ts +++ b/src/panels/lovelace/cards/hui-alarm-panel-card.ts @@ -1,31 +1,30 @@ +import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import { + css, + CSSResult, + customElement, html, LitElement, - PropertyValues, - TemplateResult, - CSSResult, - css, property, - customElement, + PropertyValues, query, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; - +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { fireEvent } from "../../../common/dom/fire_event"; import "../../../components/ha-card"; import "../../../components/ha-label-badge"; -import "../components/hui-warning"; - -import { LovelaceCard } from "../types"; -import { HomeAssistant } from "../../../types"; import { callAlarmAction, FORMAT_NUMBER, } from "../../../data/alarm_control_panel"; -import { AlarmPanelCardConfig } from "./types"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import type { HomeAssistant } from "../../../types"; import { findEntities } from "../common/find-entites"; -import { fireEvent } from "../../../common/dom/fire_event"; +import "../components/hui-warning"; +import type { LovelaceCard } from "../types"; +import { AlarmPanelCardConfig } from "./types"; const ICONS = { armed_away: "hass:shield-lock", @@ -165,8 +164,8 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard { return html` ${BUTTONS.map((value) => { return value === "" - ? html` - - ` + ? html` ` : html` ${this._config.name || - (stateObj ? computeStateName(stateObj) : "")} + (stateObj ? computeStateName(stateObj) : "")} ` : ""} diff --git a/src/panels/lovelace/cards/hui-conditional-card.ts b/src/panels/lovelace/cards/hui-conditional-card.ts index 1cca6391fc..4c445e1d7b 100644 --- a/src/panels/lovelace/cards/hui-conditional-card.ts +++ b/src/panels/lovelace/cards/hui-conditional-card.ts @@ -1,11 +1,10 @@ import { customElement } from "lit-element"; - +import { LovelaceCardConfig } from "../../../data/lovelace"; +import { computeCardSize } from "../common/compute-card-size"; import { HuiConditionalBase } from "../components/hui-conditional-base"; import { createCardElement } from "../create-element/create-card-element"; import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { computeCardSize } from "../common/compute-card-size"; import { ConditionalCardConfig } from "./types"; -import { LovelaceCardConfig } from "../../../data/lovelace"; @customElement("hui-conditional-card") class HuiConditionalCard extends HuiConditionalBase implements LovelaceCard { diff --git a/src/panels/lovelace/cards/hui-empty-state-card.ts b/src/panels/lovelace/cards/hui-empty-state-card.ts index 2119c1f8f4..8118ffc1dd 100644 --- a/src/panels/lovelace/cards/hui-empty-state-card.ts +++ b/src/panels/lovelace/cards/hui-empty-state-card.ts @@ -1,17 +1,15 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - CSSResult, - css, - customElement, property, + TemplateResult, } from "lit-element"; - import "../../../components/ha-card"; - -import { LovelaceCard } from "../types"; import { HomeAssistant } from "../../../types"; +import { LovelaceCard } from "../types"; import { EmptyStateCardConfig } from "./types"; @customElement("hui-empty-state-card") @@ -23,7 +21,7 @@ export class HuiEmptyStateCard extends LitElement implements LovelaceCard { } public setConfig(_config: EmptyStateCardConfig): void { - // tslint:disable-next-line + // eslint-disable-next-line } protected render(): TemplateResult { diff --git a/src/panels/lovelace/cards/hui-entities-card.ts b/src/panels/lovelace/cards/hui-entities-card.ts index 7ea30e2ffd..dd01b242a9 100644 --- a/src/panels/lovelace/cards/hui-entities-card.ts +++ b/src/panels/lovelace/cards/hui-entities-card.ts @@ -1,33 +1,31 @@ import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; - +import { DOMAINS_TOGGLE } from "../../../common/const"; +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { computeDomain } from "../../../common/entity/compute_domain"; import "../../../components/ha-card"; -import "../components/hui-entities-toggle"; - import { HomeAssistant } from "../../../types"; +import { findEntities } from "../common/find-entites"; +import { processConfigEntities } from "../common/process-config-entities"; +import "../components/hui-entities-toggle"; +import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; +import { createRowElement } from "../create-element/create-row-element"; import { LovelaceRow } from "../entity-rows/types"; +import { LovelaceHeaderFooterConfig } from "../header-footer/types"; import { LovelaceCard, LovelaceCardEditor, LovelaceHeaderFooter, } from "../types"; -import { processConfigEntities } from "../common/process-config-entities"; -import { createRowElement } from "../create-element/create-row-element"; import { EntitiesCardConfig, EntitiesCardEntityConfig } from "./types"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; -import { LovelaceHeaderFooterConfig } from "../header-footer/types"; -import { DOMAINS_TOGGLE } from "../../../common/const"; -import { computeDomain } from "../../../common/entity/compute_domain"; -import { findEntities } from "../common/find-entites"; @customElement("hui-entities-card") class HuiEntitiesCard extends LitElement implements LovelaceCard { @@ -60,6 +58,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard { private _hass?: HomeAssistant; private _configEntities?: EntitiesCardEntityConfig[]; + private _showHeaderToggle?: boolean; set hass(hass: HomeAssistant) { @@ -254,9 +253,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard { if (this._hass) { element.hass = this._hass; } - return html` - - `; + return html` `; } private renderEntity(entityConf: EntitiesCardEntityConfig): TemplateResult { @@ -272,9 +269,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard { element.hass = this._hass; } - return html` -
    ${element}
    - `; + return html`
    ${element}
    `; } } diff --git a/src/panels/lovelace/cards/hui-entity-button-card.ts b/src/panels/lovelace/cards/hui-entity-button-card.ts index e062d189a2..7955ccf040 100644 --- a/src/panels/lovelace/cards/hui-entity-button-card.ts +++ b/src/panels/lovelace/cards/hui-entity-button-card.ts @@ -1,5 +1,4 @@ import { customElement } from "lit-element"; - import { HuiButtonCard } from "./hui-button-card"; @customElement("hui-entity-button-card") diff --git a/src/panels/lovelace/cards/hui-entity-card.ts b/src/panels/lovelace/cards/hui-entity-card.ts index a1245e185b..e161b87bdf 100644 --- a/src/panels/lovelace/cards/hui-entity-card.ts +++ b/src/panels/lovelace/cards/hui-entity-card.ts @@ -1,37 +1,34 @@ import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; - import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; import { stateIcon } from "../../../common/entity/state_icon"; - +import { isValidEntityId } from "../../../common/entity/valid_entity_id"; import "../../../components/ha-card"; import "../../../components/ha-icon"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { findEntities } from "../common/find-entites"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-warning"; - +import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; import { LovelaceCard, LovelaceCardEditor, LovelaceHeaderFooter, } from "../types"; -import { HomeAssistant } from "../../../types"; -import { fireEvent } from "../../../common/dom/fire_event"; -import { EntityCardConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { isValidEntityId } from "../../../common/entity/valid_entity_id"; -import { findEntities } from "../common/find-entites"; -import { createHeaderFooterElement } from "../create-element/create-header-footer-element"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; import { HuiErrorCard } from "./hui-error-card"; +import { EntityCardConfig } from "./types"; @customElement("hui-entity-card") export class HuiEntityCard extends LitElement implements LovelaceCard { @@ -63,7 +60,9 @@ export class HuiEntityCard extends LitElement implements LovelaceCard { } @property() public hass?: HomeAssistant; + @property() private _config?: EntityCardConfig; + private _footerElement?: HuiErrorCard | LovelaceHeaderFooter; public setConfig(config: EntityCardConfig): void { @@ -140,9 +139,9 @@ export class HuiEntityCard extends LitElement implements LovelaceCard { ? html` ${this._config.unit || - (this._config.attribute - ? "" - : stateObj.attributes.unit_of_measurement)} ` : ""} diff --git a/src/panels/lovelace/cards/hui-entity-filter-card.ts b/src/panels/lovelace/cards/hui-entity-filter-card.ts index 53fbe8bd49..16e141e058 100644 --- a/src/panels/lovelace/cards/hui-entity-filter-card.ts +++ b/src/panels/lovelace/cards/hui-entity-filter-card.ts @@ -1,20 +1,27 @@ -import { createCardElement } from "../create-element/create-card-element"; -import { processConfigEntities } from "../common/process-config-entities"; -import { LovelaceCard } from "../types"; import { LovelaceCardConfig } from "../../../data/lovelace"; -import { EntityFilterEntityConfig } from "../entity-rows/types"; import { HomeAssistant } from "../../../types"; -import { EntityFilterCardConfig } from "./types"; import { evaluateFilter } from "../common/evaluate-filter"; +import { processConfigEntities } from "../common/process-config-entities"; +import { createCardElement } from "../create-element/create-card-element"; +import { EntityFilterEntityConfig } from "../entity-rows/types"; +import { LovelaceCard } from "../types"; +import { EntityFilterCardConfig } from "./types"; class EntityFilterCard extends HTMLElement implements LovelaceCard { public isPanel?: boolean; + private _editMode = false; + private _element?: LovelaceCard; + private _config?: EntityFilterCardConfig; + private _configEntities?: EntityFilterEntityConfig[]; + private _baseCardConfig?: LovelaceCardConfig; + private _hass?: HomeAssistant; + private _oldEntities?: EntityFilterEntityConfig[]; public getCardSize(): number { diff --git a/src/panels/lovelace/cards/hui-error-card.ts b/src/panels/lovelace/cards/hui-error-card.ts index 088703a930..e66da1aa88 100644 --- a/src/panels/lovelace/cards/hui-error-card.ts +++ b/src/panels/lovelace/cards/hui-error-card.ts @@ -1,16 +1,15 @@ +import { safeDump } from "js-yaml"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import { safeDump } from "js-yaml"; - -import { LovelaceCard } from "../types"; import { HomeAssistant } from "../../../types"; +import { LovelaceCard } from "../types"; import { ErrorCardConfig } from "./types"; export const createErrorCardElement = (config: ErrorCardConfig) => { @@ -47,9 +46,7 @@ export class HuiErrorCard extends LitElement implements LovelaceCard { return html` ${this._config.error} ${this._config.origConfig - ? html` -
    ${safeDump(this._config.origConfig)}
    - ` + ? html`
    ${safeDump(this._config.origConfig)}
    ` : ""} `; } diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index 74a4ba1100..c2e24d6d00 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -1,29 +1,26 @@ +import { HassEntity } from "home-assistant-js-websocket/dist/types"; import { - html, - LitElement, - PropertyValues, - TemplateResult, css, CSSResult, - property, customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; import { styleMap } from "lit-html/directives/style-map"; - -import "../../../components/ha-card"; -import "../components/hui-warning"; - -import { isValidEntityId } from "../../../common/entity/valid_entity_id"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { computeStateName } from "../../../common/entity/compute_state_name"; - -import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { isValidEntityId } from "../../../common/entity/valid_entity_id"; +import "../../../components/ha-card"; +import { HomeAssistant } from "../../../types"; +import { findEntities } from "../common/find-entites"; import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning"; import { LovelaceCard, LovelaceCardEditor } from "../types"; import { GaugeCardConfig } from "./types"; -import { findEntities } from "../common/find-entites"; -import { HassEntity } from "home-assistant-js-websocket/dist/types"; export const severityMap = { red: "var(--label-badge-red)", @@ -67,6 +64,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { @property() public hass?: HomeAssistant; @property() private _baseUnit = "50px"; + @property() private _config?: GaugeCardConfig; private _updated?: boolean; @@ -146,8 +144,8 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
    ${stateObj.state} ${this._config.unit || - stateObj.attributes.unit_of_measurement || - ""} + stateObj.attributes.unit_of_measurement || + ""}
    ${this._config.name || computeStateName(stateObj)} @@ -164,6 +162,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { protected firstUpdated(): void { this._updated = true; this._setBaseUnit(); + // eslint-disable-next-line wc/no-self-class this.classList.add("init"); } diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index f49fd30f58..8d4041e5d0 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -1,37 +1,34 @@ import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import { ifDefined } from "lit-html/directives/if-defined"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import relativeTime from "../../../common/datetime/relative_time"; - +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateDisplay } from "../../../common/entity/compute_state_display"; +import { computeStateName } from "../../../common/entity/compute_state_name"; import "../../../components/entity/state-badge"; import "../../../components/ha-card"; import "../../../components/ha-icon"; -import "../components/hui-warning-element"; - -import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { processConfigEntities } from "../common/process-config-entities"; -import { GlanceCardConfig, GlanceConfigEntity } from "./types"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; -import { handleAction } from "../common/handle-action"; -import { computeDomain } from "../../../common/entity/compute_domain"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { findEntities } from "../common/find-entites"; +import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { processConfigEntities } from "../common/process-config-entities"; +import "../components/hui-warning-element"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { GlanceCardConfig, GlanceConfigEntity } from "./types"; @customElement("hui-glance-card") export class HuiGlanceCard extends LitElement implements LovelaceCard { @@ -254,7 +251,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { .overrideImage=${entityConf.image} .stateColor=${(entityConf.state_color === false || entityConf.state_color) ?? - this._config!.state_color} + this._config!.state_color} > ` : ""} diff --git a/src/panels/lovelace/cards/hui-history-graph-card.ts b/src/panels/lovelace/cards/hui-history-graph-card.ts index c38bf1a98a..404df75173 100644 --- a/src/panels/lovelace/cards/hui-history-graph-card.ts +++ b/src/panels/lovelace/cards/hui-history-graph-card.ts @@ -1,26 +1,24 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; - import "../../../components/ha-card"; import "../../../components/state-history-charts"; +import { CacheConfig, getRecentWithCache } from "../../../data/cached-history"; import "../../../data/ha-state-history-data"; - -import { getRecentWithCache, CacheConfig } from "../../../data/cached-history"; -import { processConfigEntities } from "../common/process-config-entities"; import { HomeAssistant } from "../../../types"; -import { HistoryGraphCardConfig } from "./types"; -import { LovelaceCard } from "../types"; -import { EntityConfig } from "../entity-rows/types"; import { findEntities } from "../common/find-entites"; +import { processConfigEntities } from "../common/process-config-entities"; +import { EntityConfig } from "../entity-rows/types"; +import { LovelaceCard } from "../types"; +import { HistoryGraphCardConfig } from "./types"; @customElement("hui-history-graph-card") export class HuiHistoryGraphCard extends LitElement implements LovelaceCard { @@ -50,11 +48,17 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard { } @property() public hass?: HomeAssistant; + @property() private _stateHistory?: any; + @property() private _config?: HistoryGraphCardConfig; + private _configEntities?: EntityConfig[]; + private _names: { [key: string]: string } = {}; + private _cacheConfig?: CacheConfig; + private _interval?: number; public getCardSize(): number { diff --git a/src/panels/lovelace/cards/hui-horizontal-stack-card.ts b/src/panels/lovelace/cards/hui-horizontal-stack-card.ts index 93d46f3e2c..268644572e 100644 --- a/src/panels/lovelace/cards/hui-horizontal-stack-card.ts +++ b/src/panels/lovelace/cards/hui-horizontal-stack-card.ts @@ -1,5 +1,4 @@ -import { CSSResult, css } from "lit-element"; - +import { css, CSSResult } from "lit-element"; import { computeCardSize } from "../common/compute-card-size"; import { HuiStackCard } from "./hui-stack-card"; diff --git a/src/panels/lovelace/cards/hui-iframe-card.ts b/src/panels/lovelace/cards/hui-iframe-card.ts index cde2052130..3e464d76d4 100644 --- a/src/panels/lovelace/cards/hui-iframe-card.ts +++ b/src/panels/lovelace/cards/hui-iframe-card.ts @@ -1,19 +1,17 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "../../../components/ha-card"; - -import { LovelaceCard, LovelaceCardEditor } from "../types"; import { styleMap } from "lit-html/directives/style-map"; -import { IframeCardConfig } from "./types"; import parseAspectRatio from "../../../common/util/parse-aspect-ratio"; +import "../../../components/ha-card"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { IframeCardConfig } from "./types"; @customElement("hui-iframe-card") export class HuiIframeCard extends LitElement implements LovelaceCard { @@ -23,6 +21,7 @@ export class HuiIframeCard extends LitElement implements LovelaceCard { ); return document.createElement("hui-iframe-card-editor"); } + public static getStubConfig(): IframeCardConfig { return { type: "iframe", @@ -30,10 +29,13 @@ export class HuiIframeCard extends LitElement implements LovelaceCard { aspect_ratio: "50%", }; } + @property({ type: Boolean, reflect: true }) public isPanel = false; + @property({ type: Boolean, reflect: true }) public editMode = false; + @property() protected _config?: IframeCardConfig; public getCardSize(): number { diff --git a/src/panels/lovelace/cards/hui-light-card.ts b/src/panels/lovelace/cards/hui-light-card.ts index b48534ace1..d25f460255 100644 --- a/src/panels/lovelace/cards/hui-light-card.ts +++ b/src/panels/lovelace/cards/hui-light-card.ts @@ -1,38 +1,35 @@ +import "@polymer/paper-icon-button/paper-icon-button"; +import "@thomasloven/round-slider"; import { - html, - LitElement, - PropertyValues, - TemplateResult, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import { styleMap } from "lit-html/directives/style-map"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "@thomasloven/round-slider"; - -import { stateIcon } from "../../../common/entity/state_icon"; -import { computeStateName } from "../../../common/entity/compute_state_name"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; - -import "../../../components/ha-card"; -import "../components/hui-warning"; - import { fireEvent } from "../../../common/dom/fire_event"; -import { HomeAssistant, LightEntity } from "../../../types"; -import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { LightCardConfig } from "./types"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { stateIcon } from "../../../common/entity/state_icon"; import { supportsFeature } from "../../../common/entity/supports-feature"; -import { SUPPORT_BRIGHTNESS } from "../../../data/light"; -import { findEntities } from "../common/find-entites"; +import "../../../components/ha-card"; import { UNAVAILABLE_STATES } from "../../../data/entity"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; +import { SUPPORT_BRIGHTNESS } from "../../../data/light"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant, LightEntity } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { findEntities } from "../common/find-entites"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { LightCardConfig } from "./types"; @customElement("hui-light-card") export class HuiLightCard extends LitElement implements LovelaceCard { @@ -158,7 +155,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard { ? html`
    ${this.hass.localize(`state.default.${stateObj.state}`) || - stateObj.state} + stateObj.state}
    ` : html` diff --git a/src/panels/lovelace/cards/hui-map-card.ts b/src/panels/lovelace/cards/hui-map-card.ts index 445177e44b..cf9e230067 100644 --- a/src/panels/lovelace/cards/hui-map-card.ts +++ b/src/panels/lovelace/cards/hui-map-card.ts @@ -1,46 +1,43 @@ import "@polymer/paper-icon-button/paper-icon-button"; +import { HassEntity } from "home-assistant-js-websocket"; import { - Layer, - Marker, Circle, - Map, CircleMarker, - Polyline, LatLngTuple, + Layer, + Map, + Marker, + Polyline, } from "leaflet"; import { - LitElement, - TemplateResult, css, - html, - property, - PropertyValues, CSSResult, customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; -import "../../map/ha-entity-marker"; - +import { classMap } from "lit-html/directives/class-map"; import { - setupLeafletMap, createTileLayer, LeafletModuleType, + setupLeafletMap, } from "../../../common/dom/setup-leaflet-map"; +import { computeDomain } from "../../../common/entity/compute_domain"; import { computeStateDomain } from "../../../common/entity/compute_state_domain"; import { computeStateName } from "../../../common/entity/compute_state_name"; import { debounce } from "../../../common/util/debounce"; import parseAspectRatio from "../../../common/util/parse-aspect-ratio"; -import { computeDomain } from "../../../common/entity/compute_domain"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceCard } from "../types"; -import { EntityConfig } from "../entity-rows/types"; -import { processConfigEntities } from "../common/process-config-entities"; -import { MapCardConfig } from "./types"; -import { classMap } from "lit-html/directives/class-map"; -import { findEntities } from "../common/find-entites"; - -import { HassEntity } from "home-assistant-js-websocket"; import { fetchRecent } from "../../../data/history"; +import { HomeAssistant } from "../../../types"; +import "../../map/ha-entity-marker"; +import { findEntities } from "../common/find-entites"; +import { processConfigEntities } from "../common/process-config-entities"; +import { EntityConfig } from "../entity-rows/types"; +import { LovelaceCard } from "../types"; +import { MapCardConfig } from "./types"; @customElement("hui-map-card") class HuiMapCard extends LitElement implements LovelaceCard { @@ -73,21 +70,28 @@ class HuiMapCard extends LitElement implements LovelaceCard { @property({ type: Boolean, reflect: true }) public isPanel = false; + @property({ type: Boolean, reflect: true }) public editMode = false; @property() private _history?: HassEntity[][]; + private _date?: Date; @property() private _config?: MapCardConfig; + private _configEntities?: EntityConfig[]; - // tslint:disable-next-line + + // eslint-disable-next-line private Leaflet?: LeafletModuleType; + private _leafletMap?: Map; + // @ts-ignore private _resizeObserver?: ResizeObserver; + private _debouncedResizeListener = debounce( () => { if (!this._leafletMap) { @@ -98,12 +102,19 @@ class HuiMapCard extends LitElement implements LovelaceCard { 100, false ); + private _mapItems: Array = []; + private _mapZones: Array = []; + private _mapPaths: Array = []; + private _connected = false; + private _colorDict: { [key: string]: string } = {}; - private _colorIndex: number = 0; + + private _colorIndex = 0; + private _colors: string[] = [ "#0288D1", "#00AA00", diff --git a/src/panels/lovelace/cards/hui-markdown-card.ts b/src/panels/lovelace/cards/hui-markdown-card.ts index ec317d0ce4..a9d5a970c0 100644 --- a/src/panels/lovelace/cards/hui-markdown-card.ts +++ b/src/panels/lovelace/cards/hui-markdown-card.ts @@ -1,24 +1,22 @@ +import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; - +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import "../../../components/ha-card"; import "../../../components/ha-markdown"; - +import { subscribeRenderTemplate } from "../../../data/ws-templates"; import { HomeAssistant } from "../../../types"; import { LovelaceCard, LovelaceCardEditor } from "../types"; import { MarkdownCardConfig } from "./types"; -import { subscribeRenderTemplate } from "../../../data/ws-templates"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; @customElement("hui-markdown-card") export class HuiMarkdownCard extends LitElement implements LovelaceCard { @@ -38,8 +36,11 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard { } @property() private _config?: MarkdownCardConfig; + @property() private _content?: string = ""; + @property() private _unsubRenderTemplate?: Promise; + @property() private _hass?: HomeAssistant; public getCardSize(): number { diff --git a/src/panels/lovelace/cards/hui-media-control-card.ts b/src/panels/lovelace/cards/hui-media-control-card.ts index bf3c250dab..50811470fc 100644 --- a/src/panels/lovelace/cards/hui-media-control-card.ts +++ b/src/panels/lovelace/cards/hui-media-control-card.ts @@ -1,55 +1,51 @@ +import "@polymer/paper-icon-button/paper-icon-button"; +import type { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import "@polymer/paper-progress/paper-progress"; +import type { PaperProgressElement } from "@polymer/paper-progress/paper-progress"; import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, query, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import { styleMap } from "lit-html/directives/style-map"; import Vibrant from "node-vibrant"; import { Swatch } from "node-vibrant/lib/color"; -import "@polymer/paper-icon-button/paper-icon-button"; -import "@polymer/paper-progress/paper-progress"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperProgressElement } from "@polymer/paper-progress/paper-progress"; - -import { MediaControlCardConfig } from "./types"; -import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { HomeAssistant, MediaEntity } from "../../../types"; -import { debounce } from "../../../common/util/debounce"; -import { fireEvent } from "../../../common/dom/fire_event"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; -import { supportsFeature } from "../../../common/entity/supports-feature"; import { stateIcon } from "../../../common/entity/state_icon"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { contrast } from "../common/color/contrast"; -import { findEntities } from "../common/find-entites"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; -import { - SUPPORT_PAUSE, - SUPPORT_TURN_ON, - SUPPORT_PREVIOUS_TRACK, - SUPPORT_NEXT_TRACK, - SUPPORTS_PLAY, - SUPPORT_STOP, - SUPPORT_SEEK, - CONTRAST_RATIO, - getCurrentProgress, - computeMediaDescription, - SUPPORT_TURN_OFF, -} from "../../../data/media-player"; - +import { supportsFeature } from "../../../common/entity/supports-feature"; +import { debounce } from "../../../common/util/debounce"; import "../../../components/ha-card"; import "../../../components/ha-icon"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { + computeMediaDescription, + CONTRAST_RATIO, + getCurrentProgress, + SUPPORTS_PLAY, + SUPPORT_NEXT_TRACK, + SUPPORT_PAUSE, + SUPPORT_PREVIOUS_TRACK, + SUPPORT_SEEK, + SUPPORT_STOP, + SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, +} from "../../../data/media-player"; +import type { HomeAssistant, MediaEntity } from "../../../types"; +import { contrast } from "../common/color/contrast"; +import { findEntities } from "../common/find-entites"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-marquee"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperIconButtonElement } from "@polymer/paper-icon-button/paper-icon-button"; +import type { LovelaceCard, LovelaceCardEditor } from "../types"; +import { MediaControlCardConfig } from "./types"; function getContrastRatio( rgb1: [number, number, number], @@ -67,9 +63,9 @@ const DEBUG_COLOR = __DEV__ && false; const logColor = ( color: Swatch, - label: string = `${color.getHex()} - ${color.getPopulation()}` + label = `${color.getHex()} - ${color.getPopulation()}` ) => - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console console.log( `%c${label}`, `color: ${color.getBodyTextColor()}; background-color: ${color.getHex()}` @@ -144,15 +140,15 @@ const customGenerator = (colors: Swatch[]) => { } if (DEBUG_COLOR) { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console console.log(); - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console console.log( "%cPicked colors", `color: ${foregroundColor}; background-color: ${backgroundColor.hex}; font-weight: bold; padding: 16px;` ); colors.forEach((color) => logColor(color)); - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console console.log(); } @@ -192,15 +188,25 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { } @property() public hass?: HomeAssistant; + @property() private _config?: MediaControlCardConfig; + @property() private _foregroundColor?: string; + @property() private _backgroundColor?: string; - @property() private _narrow: boolean = false; - @property() private _veryNarrow: boolean = false; - @property() private _cardHeight: number = 0; + + @property() private _narrow = false; + + @property() private _veryNarrow = false; + + @property() private _cardHeight = 0; + @query("paper-progress") private _progressBar?: PaperProgressElement; - @property() private _marqueeActive: boolean = false; + + @property() private _marqueeActive = false; + private _progressInterval?: number; + private _resizeObserver?: ResizeObserver; public getCardSize(): number { @@ -341,7 +347,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
    ${this._config!.name || - computeStateName(this.hass!.states[this._config!.entity])} + computeStateName(this.hass!.states[this._config!.entity])}
    @@ -369,7 +375,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
    { - // tslint:disable-next-line:no-console + // eslint-disable-next-line no-console console.error("Error getting Image Colors", err); this._foregroundColor = undefined; this._backgroundColor = undefined; diff --git a/src/panels/lovelace/cards/hui-picture-card.ts b/src/panels/lovelace/cards/hui-picture-card.ts index 8807c146c4..f07f18fa5b 100644 --- a/src/panels/lovelace/cards/hui-picture-card.ts +++ b/src/panels/lovelace/cards/hui-picture-card.ts @@ -1,26 +1,24 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; -import { ifDefined } from "lit-html/directives/if-defined"; - -import "../../../components/ha-card"; - -import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { HomeAssistant } from "../../../types"; import { classMap } from "lit-html/directives/class-map"; -import { PictureCardConfig } from "./types"; +import { ifDefined } from "lit-html/directives/if-defined"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; +import "../../../components/ha-card"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { PictureCardConfig } from "./types"; @customElement("hui-picture-card") export class HuiPictureCard extends LitElement implements LovelaceCard { @@ -30,6 +28,7 @@ export class HuiPictureCard extends LitElement implements LovelaceCard { ); return document.createElement("hui-picture-card-editor"); } + public static getStubConfig(): PictureCardConfig { return { type: "picture", diff --git a/src/panels/lovelace/cards/hui-picture-elements-card.ts b/src/panels/lovelace/cards/hui-picture-elements-card.ts index 64491e73d6..a21722bf17 100644 --- a/src/panels/lovelace/cards/hui-picture-elements-card.ts +++ b/src/panels/lovelace/cards/hui-picture-elements-card.ts @@ -1,21 +1,20 @@ import { - html, - LitElement, - TemplateResult, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - -import { createStyledHuiElement } from "./picture-elements/create-styled-hui-element"; -import { LovelaceCard } from "../types"; -import { HomeAssistant } from "../../../types"; -import { LovelaceElementConfig, LovelaceElement } from "../elements/types"; -import { PictureElementsCardConfig } from "./types"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { HomeAssistant } from "../../../types"; import { findEntities } from "../common/find-entites"; +import { LovelaceElement, LovelaceElementConfig } from "../elements/types"; +import { LovelaceCard } from "../types"; +import { createStyledHuiElement } from "./picture-elements/create-styled-hui-element"; +import { PictureElementsCardConfig } from "./types"; @customElement("hui-picture-elements-card") class HuiPictureElementsCard extends LitElement implements LovelaceCard { diff --git a/src/panels/lovelace/cards/hui-picture-entity-card.ts b/src/panels/lovelace/cards/hui-picture-entity-card.ts index fbc17265e0..16d24baf33 100644 --- a/src/panels/lovelace/cards/hui-picture-entity-card.ts +++ b/src/panels/lovelace/cards/hui-picture-entity-card.ts @@ -1,35 +1,32 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import { ifDefined } from "lit-html/directives/if-defined"; - +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateDisplay } from "../../../common/entity/compute_state_display"; +import { computeStateName } from "../../../common/entity/compute_state_name"; import "../../../components/ha-card"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { findEntities } from "../common/find-entites"; +import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-image"; import "../components/hui-warning"; - -import { computeDomain } from "../../../common/entity/compute_domain"; -import { computeStateName } from "../../../common/entity/compute_state_name"; - -import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { HomeAssistant } from "../../../types"; import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; import { PictureEntityCardConfig } from "./types"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; -import { handleAction } from "../common/handle-action"; -import { findEntities } from "../common/find-entites"; @customElement("hui-picture-entity-card") class HuiPictureEntityCard extends LitElement implements LovelaceCard { @@ -145,13 +142,9 @@ class HuiPictureEntityCard extends LitElement implements LovelaceCard {
    `; } else if (this._config.show_name) { - footer = html` - - `; + footer = html` `; } else if (this._config.show_state) { - footer = html` - - `; + footer = html` `; } return html` diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.ts b/src/panels/lovelace/cards/hui-picture-glance-card.ts index 3bfa381dd8..5f2eac9b6f 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.ts +++ b/src/panels/lovelace/cards/hui-picture-glance-card.ts @@ -1,37 +1,35 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; import { ifDefined } from "lit-html/directives/if-defined"; - +import { DOMAINS_TOGGLE } from "../../../common/const"; +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateDisplay } from "../../../common/entity/compute_state_display"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { stateIcon } from "../../../common/entity/state_icon"; import "../../../components/ha-card"; import "../../../components/ha-icon"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { findEntities } from "../common/find-entites"; +import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import { processConfigEntities } from "../common/process-config-entities"; import "../components/hui-image"; import "../components/hui-warning-element"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { computeDomain } from "../../../common/entity/compute_domain"; -import { stateIcon } from "../../../common/entity/state_icon"; -import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { DOMAINS_TOGGLE } from "../../../common/const"; import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { HomeAssistant } from "../../../types"; -import { processConfigEntities } from "../common/process-config-entities"; import { PictureGlanceCardConfig, PictureGlanceEntityConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; -import { handleAction } from "../common/handle-action"; -import { findEntities } from "../common/find-entites"; const STATES_OFF = new Set(["closed", "locked", "not_home", "off"]); @@ -200,9 +198,7 @@ class HuiPictureGlanceCard extends LitElement implements LovelaceCard { >
    ${this._config.title - ? html` -
    ${this._config.title}
    - ` + ? html`
    ${this._config.title}
    ` : ""}
    ${this._entitiesDialog!.map((entityConf) => @@ -267,9 +263,7 @@ class HuiPictureGlanceCard extends LitElement implements LovelaceCard { `}" > ${this._config!.show_state !== true && entityConf.show_state !== true - ? html` -
    - ` + ? html`
    ` : html`
    ${entityConf.attribute diff --git a/src/panels/lovelace/cards/hui-plant-status-card.ts b/src/panels/lovelace/cards/hui-plant-status-card.ts index d1bcb57da8..1efc825119 100644 --- a/src/panels/lovelace/cards/hui-plant-status-card.ts +++ b/src/panels/lovelace/cards/hui-plant-status-card.ts @@ -1,28 +1,25 @@ +import { HassEntity } from "home-assistant-js-websocket"; import { - html, - LitElement, - TemplateResult, css, CSSResult, - property, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; -import { HassEntity } from "home-assistant-js-websocket"; - +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { fireEvent } from "../../../common/dom/fire_event"; +import { computeStateName } from "../../../common/entity/compute_state_name"; import "../../../components/ha-card"; import "../../../components/ha-icon"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; - -import { LovelaceCardEditor, LovelaceCard } from "../types"; import { HomeAssistant } from "../../../types"; -import { fireEvent } from "../../../common/dom/fire_event"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { PlantStatusCardConfig, PlantAttributeTarget } from "./types"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import { actionHandler } from "../common/directives/action-handler-directive"; import { findEntities } from "../common/find-entites"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { PlantAttributeTarget, PlantStatusCardConfig } from "./types"; const SENSORS = { moisture: "hass:water", diff --git a/src/panels/lovelace/cards/hui-safe-mode-card.ts b/src/panels/lovelace/cards/hui-safe-mode-card.ts index 7b7fa5b340..02e6e5c236 100644 --- a/src/panels/lovelace/cards/hui-safe-mode-card.ts +++ b/src/panels/lovelace/cards/hui-safe-mode-card.ts @@ -1,18 +1,17 @@ +import "@material/mwc-button"; import { - html, - LitElement, - TemplateResult, - customElement, css, CSSResult, + customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; - import "../../../components/ha-card"; -import "../../../panels/developer-tools/logs/error-log-card"; -import { LovelaceCard } from "../types"; import { HomeAssistant } from "../../../types"; +import "../../developer-tools/logs/error-log-card"; +import { LovelaceCard } from "../types"; @customElement("hui-safe-mode-card") export class HuiSafeModeCard extends LitElement implements LovelaceCard { diff --git a/src/panels/lovelace/cards/hui-sensor-card.ts b/src/panels/lovelace/cards/hui-sensor-card.ts index b3718308c4..f708e6bdac 100644 --- a/src/panels/lovelace/cards/hui-sensor-card.ts +++ b/src/panels/lovelace/cards/hui-sensor-card.ts @@ -1,12 +1,11 @@ -import { customElement } from "lit-element"; import { HassEntity } from "home-assistant-js-websocket/dist/types"; - -import { LovelaceCardEditor } from "../types"; +import { customElement } from "lit-element"; import { HomeAssistant } from "../../../types"; -import { SensorCardConfig, EntityCardConfig } from "./types"; -import { GraphHeaderFooterConfig } from "../header-footer/types"; import { findEntities } from "../common/find-entites"; +import { GraphHeaderFooterConfig } from "../header-footer/types"; +import { LovelaceCardEditor } from "../types"; import { HuiEntityCard } from "./hui-entity-card"; +import { EntityCardConfig, SensorCardConfig } from "./types"; @customElement("hui-sensor-card") class HuiSensorCard extends HuiEntityCard { diff --git a/src/panels/lovelace/cards/hui-shopping-list-card.ts b/src/panels/lovelace/cards/hui-shopping-list-card.ts index 5e57fa5abf..6abafeed3a 100644 --- a/src/panels/lovelace/cards/hui-shopping-list-card.ts +++ b/src/panels/lovelace/cards/hui-shopping-list-card.ts @@ -1,32 +1,30 @@ +import "@polymer/paper-checkbox/paper-checkbox"; +import { PaperInputElement } from "@polymer/paper-input/paper-input"; import { - html, - LitElement, - TemplateResult, css, CSSResult, - property, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; -import { repeat } from "lit-html/directives/repeat"; import { classMap } from "lit-html/directives/class-map"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; -import "@polymer/paper-checkbox/paper-checkbox"; - +import { repeat } from "lit-html/directives/repeat"; +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import "../../../components/ha-card"; import "../../../components/ha-icon"; - +import { + addItem, + clearItems, + fetchItems, + ShoppingListItem, + updateItem, +} from "../../../data/shopping-list"; import { HomeAssistant } from "../../../types"; import { LovelaceCard, LovelaceCardEditor } from "../types"; -import { - fetchItems, - updateItem, - ShoppingListItem, - clearItems, - addItem, -} from "../../../data/shopping-list"; -import { ShoppingListCardConfig, SensorCardConfig } from "./types"; -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; +import { SensorCardConfig, ShoppingListCardConfig } from "./types"; @customElement("hui-shopping-list-card") class HuiShoppingListCard extends LitElement implements LovelaceCard { diff --git a/src/panels/lovelace/cards/hui-stack-card.ts b/src/panels/lovelace/cards/hui-stack-card.ts index 1c6b1c4c12..85f155c26f 100644 --- a/src/panels/lovelace/cards/hui-stack-card.ts +++ b/src/panels/lovelace/cards/hui-stack-card.ts @@ -1,17 +1,16 @@ import { + css, + CSSResult, html, LitElement, - TemplateResult, - CSSResult, - css, property, PropertyValues, + TemplateResult, } from "lit-element"; - -import { createCardElement } from "../create-element/create-card-element"; -import { LovelaceCard, LovelaceCardEditor } from "../types"; import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; +import { createCardElement } from "../create-element/create-card-element"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; import { StackCardConfig } from "./types"; export abstract class HuiStackCard extends LitElement implements LovelaceCard { @@ -27,8 +26,11 @@ export abstract class HuiStackCard extends LitElement implements LovelaceCard { } @property() public hass?: HomeAssistant; + @property() public editMode?: boolean; + @property() protected _cards?: LovelaceCard[]; + @property() private _config?: StackCardConfig; public getCardSize(): number { @@ -68,9 +70,7 @@ export abstract class HuiStackCard extends LitElement implements LovelaceCard { return html` ${this._config.title - ? html` -
    ${this._config.title}
    - ` + ? html`
    ${this._config.title}
    ` : ""}
    ${this._cards}
    `; diff --git a/src/panels/lovelace/cards/hui-thermostat-card.ts b/src/panels/lovelace/cards/hui-thermostat-card.ts index ebd51de5f9..a625062ea4 100644 --- a/src/panels/lovelace/cards/hui-thermostat-card.ts +++ b/src/panels/lovelace/cards/hui-thermostat-card.ts @@ -1,40 +1,37 @@ -import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, - property, - css, - CSSResult, - svg, -} from "lit-element"; -import { classMap } from "lit-html/directives/class-map"; import "@polymer/paper-icon-button/paper-icon-button"; import "@thomasloven/round-slider"; - -import "../../../components/ha-card"; -import "../components/hui-warning"; - -import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; -import { computeStateName } from "../../../common/entity/compute_state_name"; - -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { HassEntity } from "home-assistant-js-websocket"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + svg, + TemplateResult, +} from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; import { UNIT_F } from "../../../common/const"; +import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import { fireEvent } from "../../../common/dom/fire_event"; -import { ThermostatCardConfig } from "./types"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import "../../../components/ha-card"; import { ClimateEntity, - HvacMode, - compareClimateHvacModes, CLIMATE_PRESET_NONE, + compareClimateHvacModes, + HvacMode, } from "../../../data/climate"; -import { HassEntity } from "home-assistant-js-websocket"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; import { findEntities } from "../common/find-entites"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { ThermostatCardConfig } from "./types"; const modeIcons: { [mode in HvacMode]: string } = { auto: "hass:calendar-repeat", @@ -74,7 +71,9 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard { } @property() public hass?: HomeAssistant; + @property() private _config?: ThermostatCardConfig; + @property() private _setTemp?: number | number[]; public getCardSize(): number { @@ -127,9 +126,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard { : stateObj.attributes.min_temp; const slider = UNAVAILABLE_STATES.includes(stateObj.state) - ? html` - - ` + ? html` ` : html`
    ${this.hass.localize(`state.weather.${stateObj.state}`) || - stateObj.state} + stateObj.state}
    ${(this._config && this._config.name) || computeStateName(stateObj)}
    @@ -316,7 +313,7 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard { private windBearingToText(degree: string): string { const degreenum = parseInt(degree, 10); if (isFinite(degreenum)) { - // tslint:disable-next-line: no-bitwise + // eslint-disable-next-line no-bitwise return cardinalDirections[(((degreenum + 11.25) / 22.5) | 0) % 16]; } return degree; @@ -325,9 +322,11 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard { private getWindBearing(bearing: string): string { if (bearing != null) { const cardinalDirection = this.windBearingToText(bearing); - return `(${this.hass!.localize( - `ui.card.weather.cardinal_direction.${cardinalDirection.toLowerCase()}` - ) || cardinalDirection})`; + return `(${ + this.hass!.localize( + `ui.card.weather.cardinal_direction.${cardinalDirection.toLowerCase()}` + ) || cardinalDirection + })`; } return ``; } diff --git a/src/panels/lovelace/cards/picture-elements/create-styled-hui-element.ts b/src/panels/lovelace/cards/picture-elements/create-styled-hui-element.ts index 97afade546..181412bc98 100644 --- a/src/panels/lovelace/cards/picture-elements/create-styled-hui-element.ts +++ b/src/panels/lovelace/cards/picture-elements/create-styled-hui-element.ts @@ -1,5 +1,5 @@ -import { LovelaceElement, LovelaceElementConfig } from "../../elements/types"; import { createHuiElement } from "../../create-element/create-hui-element"; +import { LovelaceElement, LovelaceElementConfig } from "../../elements/types"; export function createStyledHuiElement( elementConfig: LovelaceElementConfig diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index 77f910c082..8fb6bfeb7e 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -1,8 +1,8 @@ -import { LovelaceCardConfig, ActionConfig } from "../../../data/lovelace"; +import { ActionConfig, LovelaceCardConfig } from "../../../data/lovelace"; import { Condition } from "../common/validate-condition"; -import { EntityConfig, EntityFilterEntityConfig } from "../entity-rows/types"; -import { LovelaceElementConfig } from "../elements/types"; import { HuiImage } from "../components/hui-image"; +import { LovelaceElementConfig } from "../elements/types"; +import { EntityConfig, EntityFilterEntityConfig } from "../entity-rows/types"; import { LovelaceHeaderFooterConfig } from "../header-footer/types"; export interface AlarmPanelCardConfig extends LovelaceCardConfig { diff --git a/src/panels/lovelace/common/color/luminanace.ts b/src/panels/lovelace/common/color/luminanace.ts index 8ebf11195f..d2fdb0bd3a 100644 --- a/src/panels/lovelace/common/color/luminanace.ts +++ b/src/panels/lovelace/common/color/luminanace.ts @@ -1,7 +1,7 @@ export const luminanace = (r: number, g: number, b: number): number => { const a = [r, g, b].map((v) => { v /= 255; - return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); + return v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4; }); return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722; }; diff --git a/src/panels/lovelace/common/compute-tooltip.ts b/src/panels/lovelace/common/compute-tooltip.ts index b5d7ed9955..d6dc844a07 100644 --- a/src/panels/lovelace/common/compute-tooltip.ts +++ b/src/panels/lovelace/common/compute-tooltip.ts @@ -1,6 +1,6 @@ import { computeStateName } from "../../../common/entity/compute_state_name"; -import { HomeAssistant } from "../../../types"; import { ActionConfig } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; interface Config { entity?: string; @@ -10,43 +10,6 @@ interface Config { double_tap_action?: ActionConfig; } -export const computeTooltip = (hass: HomeAssistant, config: Config): string => { - if (config.title === null) { - return ""; - } - - if (config.title) { - return config.title; - } - - let stateName = ""; - let tooltip = ""; - - if (config.entity) { - stateName = - config.entity in hass.states - ? computeStateName(hass.states[config.entity]) - : config.entity; - } - - if (!config.tap_action && !config.hold_action) { - return stateName; - } - - const tapTooltip = config.tap_action - ? computeActionTooltip(hass, stateName, config.tap_action, false) - : ""; - const holdTooltip = config.hold_action - ? computeActionTooltip(hass, stateName, config.hold_action, true) - : ""; - - const newline = tapTooltip && holdTooltip ? "\n" : ""; - - tooltip = tapTooltip + newline + holdTooltip; - - return tooltip; -}; - function computeActionTooltip( hass: HomeAssistant, state: string, @@ -102,3 +65,40 @@ function computeActionTooltip( return tooltip; } + +export const computeTooltip = (hass: HomeAssistant, config: Config): string => { + if (config.title === null) { + return ""; + } + + if (config.title) { + return config.title; + } + + let stateName = ""; + let tooltip = ""; + + if (config.entity) { + stateName = + config.entity in hass.states + ? computeStateName(hass.states[config.entity]) + : config.entity; + } + + if (!config.tap_action && !config.hold_action) { + return stateName; + } + + const tapTooltip = config.tap_action + ? computeActionTooltip(hass, stateName, config.tap_action, false) + : ""; + const holdTooltip = config.hold_action + ? computeActionTooltip(hass, stateName, config.hold_action, true) + : ""; + + const newline = tapTooltip && holdTooltip ? "\n" : ""; + + tooltip = tapTooltip + newline + holdTooltip; + + return tooltip; +}; diff --git a/src/panels/lovelace/common/compute-unused-entities.ts b/src/panels/lovelace/common/compute-unused-entities.ts index 2dbcc6905e..a675923541 100755 --- a/src/panels/lovelace/common/compute-unused-entities.ts +++ b/src/panels/lovelace/common/compute-unused-entities.ts @@ -1,4 +1,4 @@ -import { LovelaceConfig, ActionConfig } from "../../../data/lovelace"; +import { ActionConfig, LovelaceConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; export const EXCLUDED_DOMAINS = ["zone", "persistent_notification"]; @@ -67,15 +67,6 @@ export const computeUsedEntities = (config: LovelaceConfig): Set => { return entities; }; -export const computeUnusedEntities = ( - hass: HomeAssistant, - config: LovelaceConfig -): Set => { - const usedEntities = computeUsedEntities(config); - const unusedEntities = calcUnusedEntities(hass, usedEntities); - return unusedEntities; -}; - export const calcUnusedEntities = ( hass: HomeAssistant, usedEntities: Set @@ -93,3 +84,12 @@ export const calcUnusedEntities = ( return unusedEntities; }; + +export const computeUnusedEntities = ( + hass: HomeAssistant, + config: LovelaceConfig +): Set => { + const usedEntities = computeUsedEntities(config); + const unusedEntities = calcUnusedEntities(hass, usedEntities); + return unusedEntities; +}; diff --git a/src/panels/lovelace/common/directives/action-handler-directive.ts b/src/panels/lovelace/common/directives/action-handler-directive.ts index 9ff99f7987..083b69568a 100644 --- a/src/panels/lovelace/common/directives/action-handler-directive.ts +++ b/src/panels/lovelace/common/directives/action-handler-directive.ts @@ -1,12 +1,11 @@ -import { directive, PropertyPart } from "lit-html"; import "@material/mwc-ripple"; -// tslint:disable-next-line -import { Ripple } from "@material/mwc-ripple"; -import { - ActionHandlerOptions, - ActionHandlerDetail, -} from "../../../../data/lovelace"; +import type { Ripple } from "@material/mwc-ripple"; +import { directive, PropertyPart } from "lit-html"; import { fireEvent } from "../../../../common/dom/fire_event"; +import { + ActionHandlerDetail, + ActionHandlerOptions, +} from "../../../../data/lovelace"; const isTouch = "ontouchstart" in window || @@ -29,9 +28,13 @@ declare global { class ActionHandler extends HTMLElement implements ActionHandler { public holdTime = 500; + public ripple: Ripple; + protected timer?: number; + protected held = false; + private dblClickTimeout?: number; constructor() { @@ -110,13 +113,6 @@ class ActionHandler extends HTMLElement implements ActionHandler { }, this.holdTime); }; - const handleEnter = (ev: KeyboardEvent) => { - if (ev.keyCode !== 13) { - return; - } - end(ev); - }; - const end = (ev: Event) => { // Prevent mouse event if touch event ev.preventDefault(); @@ -150,6 +146,13 @@ class ActionHandler extends HTMLElement implements ActionHandler { } }; + const handleEnter = (ev: KeyboardEvent) => { + if (ev.keyCode !== 13) { + return; + } + end(ev); + }; + element.addEventListener("touchstart", start, { passive: true }); element.addEventListener("touchend", end); element.addEventListener("touchcancel", end); diff --git a/src/panels/lovelace/common/entity/toggle-entity.ts b/src/panels/lovelace/common/entity/toggle-entity.ts index 8470cfb6dd..c2c406da31 100644 --- a/src/panels/lovelace/common/entity/toggle-entity.ts +++ b/src/panels/lovelace/common/entity/toggle-entity.ts @@ -1,6 +1,7 @@ import { STATES_OFF } from "../../../../common/const"; -import { turnOnOffEntity } from "./turn-on-off-entity"; import { HomeAssistant, ServiceCallResponse } from "../../../../types"; +import { turnOnOffEntity } from "./turn-on-off-entity"; + export const toggleEntity = ( hass: HomeAssistant, entityId: string diff --git a/src/panels/lovelace/common/entity/turn-on-off-entities.ts b/src/panels/lovelace/common/entity/turn-on-off-entities.ts index 1ad24203b2..fadbf9da38 100644 --- a/src/panels/lovelace/common/entity/turn-on-off-entities.ts +++ b/src/panels/lovelace/common/entity/turn-on-off-entities.ts @@ -1,5 +1,5 @@ -import { computeDomain } from "../../../../common/entity/compute_domain"; import { STATES_OFF } from "../../../../common/const"; +import { computeDomain } from "../../../../common/entity/compute_domain"; import { HomeAssistant } from "../../../../types"; export const turnOnOffEntities = ( diff --git a/src/panels/lovelace/common/find-entites.ts b/src/panels/lovelace/common/find-entites.ts index c6eca98d39..533274a8fb 100644 --- a/src/panels/lovelace/common/find-entites.ts +++ b/src/panels/lovelace/common/find-entites.ts @@ -1,6 +1,6 @@ -import { HomeAssistant } from "../../../types"; -import { computeDomain } from "../../../common/entity/compute_domain"; import { HassEntity } from "home-assistant-js-websocket"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import { HomeAssistant } from "../../../types"; const arrayFilter = ( array: any[], @@ -39,8 +39,6 @@ export const findEntities = ( includeDomains?: string[], entityFilter?: (stateObj: HassEntity) => boolean ) => { - let entityIds: string[]; - const conditions: Array<(value: string) => boolean> = []; if (includeDomains?.length) { @@ -53,7 +51,7 @@ export const findEntities = ( ); } - entityIds = arrayFilter(entities, conditions, maxEntities); + const entityIds = arrayFilter(entities, conditions, maxEntities); if (entityIds.length < maxEntities && entitiesFallback.length) { const fallbackEntityIds = findEntities( diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index fb33e183fd..a5aafbadeb 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -1,48 +1,46 @@ -import { HomeAssistant, GroupEntity } from "../../../types"; import { - LovelaceConfig, - LovelaceCardConfig, - LovelaceViewConfig, -} from "../../../data/lovelace"; -import { - HassEntity, - HassEntities, HassConfig, + HassEntities, + HassEntity, } from "home-assistant-js-websocket"; - -import { extractViews } from "../../../common/entity/extract_views"; -import { getViewEntities } from "../../../common/entity/get_view_entities"; -import { computeStateName } from "../../../common/entity/compute_state_name"; -import { splitByGroups } from "../../../common/entity/split_by_groups"; +import { computeDomain } from "../../../common/entity/compute_domain"; import { computeObjectId } from "../../../common/entity/compute_object_id"; import { computeStateDomain } from "../../../common/entity/compute_state_domain"; -import { computeDomain } from "../../../common/entity/compute_domain"; - -import { LovelaceRowConfig, WeblinkConfig } from "../entity-rows/types"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { extractViews } from "../../../common/entity/extract_views"; +import { getViewEntities } from "../../../common/entity/get_view_entities"; +import { splitByGroups } from "../../../common/entity/split_by_groups"; +import { compare } from "../../../common/string/compare"; import { LocalizeFunc } from "../../../common/translations/localize"; -import { - EntitiesCardConfig, - AlarmPanelCardConfig, - PictureEntityCardConfig, - ThermostatCardConfig, - LightCardConfig, -} from "../cards/types"; -import { - subscribeAreaRegistry, - AreaRegistryEntry, -} from "../../../data/area_registry"; import { subscribeOne } from "../../../common/util/subscribe-one"; import { - subscribeDeviceRegistry, + AreaRegistryEntry, + subscribeAreaRegistry, +} from "../../../data/area_registry"; +import { DeviceRegistryEntry, + subscribeDeviceRegistry, } from "../../../data/device_registry"; import { - subscribeEntityRegistry, EntityRegistryEntry, + subscribeEntityRegistry, } from "../../../data/entity_registry"; -import { processEditorEntities } from "../editor/process-editor-entities"; +import { + LovelaceCardConfig, + LovelaceConfig, + LovelaceViewConfig, +} from "../../../data/lovelace"; import { SENSOR_DEVICE_CLASS_BATTERY } from "../../../data/sensor"; -import { compare } from "../../../common/string/compare"; +import { GroupEntity, HomeAssistant } from "../../../types"; +import { + AlarmPanelCardConfig, + EntitiesCardConfig, + LightCardConfig, + PictureEntityCardConfig, + ThermostatCardConfig, +} from "../cards/types"; +import { processEditorEntities } from "../editor/process-editor-entities"; +import { LovelaceRowConfig, WeblinkConfig } from "../entity-rows/types"; const DEFAULT_VIEW_ENTITY_ID = "group.default_view"; const DOMAINS_BADGES = [ @@ -193,6 +191,7 @@ export const computeCards = ( const entityConf = titlePrefix && stateObj && + // eslint-disable-next-line no-cond-assign (name = computeStateName(stateObj)).startsWith(titlePrefix) ? { entity: entityId, @@ -229,61 +228,6 @@ const computeDefaultViewStates = (entities: HassEntities): HassEntities => { return states; }; -export const generateDefaultViewConfig = ( - areaEntries: AreaRegistryEntry[], - deviceEntries: DeviceRegistryEntry[], - entityEntries: EntityRegistryEntry[], - entities: HassEntities, - localize: LocalizeFunc -): LovelaceViewConfig => { - const states = computeDefaultViewStates(entities); - const path = "default_view"; - const title = "Home"; - const icon = undefined; - - // In the case of a default view, we want to use the group order attribute - const groupOrders = {}; - Object.keys(states).forEach((entityId) => { - const stateObj = states[entityId]; - if (stateObj.attributes.order) { - groupOrders[entityId] = stateObj.attributes.order; - } - }); - - const splittedByAreas = splitByAreas( - areaEntries, - deviceEntries, - entityEntries, - states - ); - - const config = generateViewConfig( - localize, - path, - title, - icon, - splittedByAreas.otherEntities, - groupOrders - ); - - const areaCards: LovelaceCardConfig[] = []; - - splittedByAreas.areasWithEntities.forEach(([area, areaEntities]) => { - areaCards.push( - ...computeCards( - areaEntities.map((entity) => [entity.entity_id, entity]), - { - title: area.name, - } - ) - ); - }); - - config.cards!.unshift(...areaCards); - - return config; -}; - const generateViewConfig = ( localize: LocalizeFunc, path: string, @@ -377,30 +321,59 @@ const generateViewConfig = ( return view; }; -export const generateLovelaceConfigFromHass = async (hass: HomeAssistant) => { - // We want to keep the registry subscriptions alive after generating the UI - // so that we don't serve up stale data after changing areas. - if (!subscribedRegistries) { - subscribedRegistries = true; - subscribeAreaRegistry(hass.connection, () => undefined); - subscribeDeviceRegistry(hass.connection, () => undefined); - subscribeEntityRegistry(hass.connection, () => undefined); - } +export const generateDefaultViewConfig = ( + areaEntries: AreaRegistryEntry[], + deviceEntries: DeviceRegistryEntry[], + entityEntries: EntityRegistryEntry[], + entities: HassEntities, + localize: LocalizeFunc +): LovelaceViewConfig => { + const states = computeDefaultViewStates(entities); + const path = "default_view"; + const title = "Home"; + const icon = undefined; - const [areaEntries, deviceEntries, entityEntries] = await Promise.all([ - subscribeOne(hass.connection, subscribeAreaRegistry), - subscribeOne(hass.connection, subscribeDeviceRegistry), - subscribeOne(hass.connection, subscribeEntityRegistry), - ]); + // In the case of a default view, we want to use the group order attribute + const groupOrders = {}; + Object.keys(states).forEach((entityId) => { + const stateObj = states[entityId]; + if (stateObj.attributes.order) { + groupOrders[entityId] = stateObj.attributes.order; + } + }); - return generateLovelaceConfigFromData( - hass.config, + const splittedByAreas = splitByAreas( areaEntries, deviceEntries, entityEntries, - hass.states, - hass.localize + states ); + + const config = generateViewConfig( + localize, + path, + title, + icon, + splittedByAreas.otherEntities, + groupOrders + ); + + const areaCards: LovelaceCardConfig[] = []; + + splittedByAreas.areasWithEntities.forEach(([area, areaEntities]) => { + areaCards.push( + ...computeCards( + areaEntities.map((entity) => [entity.entity_id, entity]), + { + title: area.name, + } + ) + ); + }); + + config.cards!.unshift(...areaCards); + + return config; }; export const generateLovelaceConfigFromData = async ( @@ -489,3 +462,31 @@ export const generateLovelaceConfigFromData = async ( views, }; }; + +export const generateLovelaceConfigFromHass = async ( + hass: HomeAssistant +): Promise => { + // We want to keep the registry subscriptions alive after generating the UI + // so that we don't serve up stale data after changing areas. + if (!subscribedRegistries) { + subscribedRegistries = true; + subscribeAreaRegistry(hass.connection, () => undefined); + subscribeDeviceRegistry(hass.connection, () => undefined); + subscribeEntityRegistry(hass.connection, () => undefined); + } + + const [areaEntries, deviceEntries, entityEntries] = await Promise.all([ + subscribeOne(hass.connection, subscribeAreaRegistry), + subscribeOne(hass.connection, subscribeDeviceRegistry), + subscribeOne(hass.connection, subscribeEntityRegistry), + ]); + + return generateLovelaceConfigFromData( + hass.config, + areaEntries, + deviceEntries, + entityEntries, + hass.states, + hass.localize + ); +}; diff --git a/src/panels/lovelace/common/graph/coordinates.ts b/src/panels/lovelace/common/graph/coordinates.ts index 807a2d61d0..4005db859f 100644 --- a/src/panels/lovelace/common/graph/coordinates.ts +++ b/src/panels/lovelace/common/graph/coordinates.ts @@ -64,17 +64,13 @@ export const coordinates = ( width: number, detail: number ): number[][] | undefined => { - history.forEach((item) => (item.state = Number(item.state))); + history.forEach((item) => { + item.state = Number(item.state); + }); history = history.filter((item) => !Number.isNaN(item.state)); - const min = Math.min.apply( - Math, - history.map((item) => item.state) - ); - const max = Math.max.apply( - Math, - history.map((item) => item.state) - ); + const min = Math.min(...history.map((item) => item.state)); + const max = Math.max(...history.map((item) => item.state)); const now = new Date().getTime(); const reduce = (res, item, point) => { diff --git a/src/panels/lovelace/common/graph/get-history-coordinates.ts b/src/panels/lovelace/common/graph/get-history-coordinates.ts index 73157df094..9e0d2ba864 100644 --- a/src/panels/lovelace/common/graph/get-history-coordinates.ts +++ b/src/panels/lovelace/common/graph/get-history-coordinates.ts @@ -1,13 +1,13 @@ import { fetchRecent } from "../../../../data/history"; -import { coordinates } from "../graph/coordinates"; import { HomeAssistant } from "../../../../types"; +import { coordinates } from "./coordinates"; export const getHistoryCoordinates = async ( hass: HomeAssistant, entity: string, hours: number, detail: number -) => { +): Promise => { const endTime = new Date(); const startTime = new Date(); startTime.setHours(endTime.getHours() - hours); @@ -15,7 +15,7 @@ export const getHistoryCoordinates = async ( const stateHistory = await fetchRecent(hass, entity, startTime, endTime); if (stateHistory.length < 1 || stateHistory[0].length < 1) { - return; + return undefined; } const coords = coordinates(stateHistory[0], hours, 500, detail); diff --git a/src/panels/lovelace/common/handle-action.ts b/src/panels/lovelace/common/handle-action.ts index dd577c1d63..2147176c9a 100644 --- a/src/panels/lovelace/common/handle-action.ts +++ b/src/panels/lovelace/common/handle-action.ts @@ -1,9 +1,9 @@ -import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; import { navigate } from "../../../common/navigate"; -import { toggleEntity } from "./entity/toggle-entity"; -import { ActionConfig } from "../../../data/lovelace"; import { forwardHaptic } from "../../../data/haptics"; +import { ActionConfig } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { toggleEntity } from "./entity/toggle-entity"; declare global { interface HASSDomEvents { @@ -59,30 +59,33 @@ export const handleAction = ( } switch (actionConfig.action) { - case "more-info": + case "more-info": { if (config.entity || config.camera_image) { fireEvent(node, "hass-more-info", { entityId: config.entity ? config.entity : config.camera_image!, }); } break; + } case "navigate": if (actionConfig.navigation_path) { navigate(node, actionConfig.navigation_path); } break; - case "url": + case "url": { if (actionConfig.url_path) { window.open(actionConfig.url_path); } break; - case "toggle": + } + case "toggle": { if (config.entity) { toggleEntity(hass, config.entity!); forwardHaptic("light"); } break; - case "call-service": + } + case "call-service": { if (!actionConfig.service) { forwardHaptic("failure"); return; @@ -91,7 +94,9 @@ export const handleAction = ( hass.callService(domain, service, actionConfig.service_data); forwardHaptic("light"); break; - case "fire-dom-event": + } + case "fire-dom-event": { fireEvent(node, "ll-custom", actionConfig); + } } }; diff --git a/src/panels/lovelace/common/has-changed.ts b/src/panels/lovelace/common/has-changed.ts index 121e0e39e3..b46962bb5f 100644 --- a/src/panels/lovelace/common/has-changed.ts +++ b/src/panels/lovelace/common/has-changed.ts @@ -1,5 +1,5 @@ -import { HomeAssistant } from "../../../types"; import { PropertyValues } from "lit-element"; +import { HomeAssistant } from "../../../types"; // Check if config or Entity changed export function hasConfigOrEntityChanged( diff --git a/src/panels/lovelace/common/load-resources.ts b/src/panels/lovelace/common/load-resources.ts index 1b58eeb509..c996f25562 100644 --- a/src/panels/lovelace/common/load-resources.ts +++ b/src/panels/lovelace/common/load-resources.ts @@ -1,5 +1,4 @@ -import { loadModule, loadCSS, loadJS } from "../../../common/dom/load_resource"; - +import { loadCSS, loadJS, loadModule } from "../../../common/dom/load_resource"; import { LovelaceResource } from "../../../data/lovelace"; // CSS and JS should only be imported once. Modules and HTML are safe. @@ -38,7 +37,7 @@ export const loadLovelaceResources = ( break; default: - // tslint:disable-next-line + // eslint-disable-next-line console.warn(`Unknown resource type specified: ${resource.type}`); } }); diff --git a/src/panels/lovelace/common/process-config-entities.ts b/src/panels/lovelace/common/process-config-entities.ts index d20b03f907..e0b9045432 100644 --- a/src/panels/lovelace/common/process-config-entities.ts +++ b/src/panels/lovelace/common/process-config-entities.ts @@ -22,7 +22,6 @@ export const processConfigEntities = ( let config: T; if (typeof entityConf === "string") { - // tslint:disable-next-line:no-object-literal-type-assertion config = { entity: entityConf } as T; } else if (typeof entityConf === "object" && !Array.isArray(entityConf)) { if (!entityConf.entity) { diff --git a/src/panels/lovelace/components/hui-action-editor.ts b/src/panels/lovelace/components/hui-action-editor.ts index 1fdd456131..5899360217 100644 --- a/src/panels/lovelace/components/hui-action-editor.ts +++ b/src/panels/lovelace/components/hui-action-editor.ts @@ -1,26 +1,24 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; -import "@polymer/paper-input/paper-textarea"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-textarea"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - -import "../../../components/ha-service-picker"; - -import { HomeAssistant } from "../../../types"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent, HASSDomEvent } from "../../../common/dom/fire_event"; -import { EditorTarget } from "../editor/types"; +import "../../../components/ha-service-picker"; import { ActionConfig, - NavigateActionConfig, CallServiceActionConfig, + NavigateActionConfig, UrlActionConfig, } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { EditorTarget } from "../editor/types"; declare global { // for fire event @@ -77,9 +75,7 @@ export class HuiActionEditor extends LitElement { .selected="${this.actions.indexOf(this._action)}" > ${this.actions.map((action) => { - return html` - ${action} - `; + return html` ${action} `; })} diff --git a/src/panels/lovelace/components/hui-buttons-base.ts b/src/panels/lovelace/components/hui-buttons-base.ts index 3533028682..cc9f2fb4e3 100644 --- a/src/panels/lovelace/components/hui-buttons-base.ts +++ b/src/panels/lovelace/components/hui-buttons-base.ts @@ -1,33 +1,32 @@ +import "@material/mwc-ripple"; import { - html, - LitElement, - TemplateResult, - customElement, css, CSSResult, - queryAll, + customElement, + html, + LitElement, property, + queryAll, + TemplateResult, } from "lit-element"; -import "@material/mwc-ripple"; - -import "../../../components/entity/state-badge"; -import "../../../components/ha-icon"; - -import { HomeAssistant } from "../../../types"; -import { computeTooltip } from "../common/compute-tooltip"; -// tslint:disable-next-line: no-duplicate-imports -import { StateBadge } from "../../../components/entity/state-badge"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; -import { handleAction } from "../common/handle-action"; -import { EntitiesCardEntityConfig } from "../cards/types"; import { computeStateName } from "../../../common/entity/compute_state_name"; +import "../../../components/entity/state-badge"; +import type { StateBadge } from "../../../components/entity/state-badge"; +import "../../../components/ha-icon"; +import type { ActionHandlerEvent } from "../../../data/lovelace"; +import type { HomeAssistant } from "../../../types"; +import type { EntitiesCardEntityConfig } from "../cards/types"; +import { computeTooltip } from "../common/compute-tooltip"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; @customElement("hui-buttons-base") export class HuiButtonsBase extends LitElement { @property() public configEntities?: EntitiesCardEntityConfig[]; + @queryAll("state-badge") protected _badges!: StateBadge[]; + private _hass?: HomeAssistant; set hass(hass: HomeAssistant) { diff --git a/src/panels/lovelace/components/hui-card-options.ts b/src/panels/lovelace/components/hui-card-options.ts index c7c3f0fd64..5f006a5ce7 100644 --- a/src/panels/lovelace/components/hui-card-options.ts +++ b/src/panels/lovelace/components/hui-card-options.ts @@ -1,24 +1,23 @@ -import { - html, - LitElement, - customElement, - property, - css, - CSSResult, - TemplateResult, -} from "lit-element"; import "@material/mwc-button"; -import "@polymer/paper-menu-button/paper-menu-button"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-listbox/paper-listbox"; - -import { showEditCardDialog } from "../editor/card-editor/show-edit-card-dialog"; -import { confDeleteCard } from "../editor/delete-card"; -import { HomeAssistant } from "../../../types"; +import "@polymer/paper-menu-button/paper-menu-button"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { LovelaceCardConfig } from "../../../data/lovelace"; -import { Lovelace } from "../types"; -import { swapCard } from "../editor/config-util"; +import { HomeAssistant } from "../../../types"; +import { showEditCardDialog } from "../editor/card-editor/show-edit-card-dialog"; import { showMoveCardViewDialog } from "../editor/card-editor/show-move-card-view-dialog"; +import { swapCard } from "../editor/config-util"; +import { confDeleteCard } from "../editor/delete-card"; +import { Lovelace } from "../types"; @customElement("hui-card-options") export class HuiCardOptions extends LitElement { @@ -50,7 +49,7 @@ export class HuiCardOptions extends LitElement { @click=${this._cardDown} ?disabled=${this.lovelace!.config.views[this.path![0]].cards! .length === - this.path![1] + 1} + this.path![1] + 1} > ${this.label || - this.hass!.localize( - "ui.panel.lovelace.editor.card.generic.entities" - ) + - " (" + - this.hass!.localize( - "ui.panel.lovelace.editor.card.config.required" - ) + - ")"} + this.hass!.localize("ui.panel.lovelace.editor.card.generic.entities") + + " (" + + this.hass!.localize("ui.panel.lovelace.editor.card.config.required") + + ")"}

    ${this.entities.map((entityConf, index) => { diff --git a/src/panels/lovelace/components/hui-generic-entity-row.ts b/src/panels/lovelace/components/hui-generic-entity-row.ts index 8889459310..abc946bbce 100644 --- a/src/panels/lovelace/components/hui-generic-entity-row.ts +++ b/src/panels/lovelace/components/hui-generic-entity-row.ts @@ -1,31 +1,29 @@ -import { computeStateName } from "../../../common/entity/compute_state_name"; import { - LitElement, - html, css, CSSResult, - PropertyValues, + html, + LitElement, property, + PropertyValues, TemplateResult, } from "lit-element"; -import { ifDefined } from "lit-html/directives/if-defined"; - -import "../../../components/entity/state-badge"; -import "../../../components/ha-relative-time"; -import "../../../components/ha-icon"; -import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { computeRTL } from "../../../common/util/compute_rtl"; -import { toggleAttribute } from "../../../common/dom/toggle_attribute"; -import { DOMAINS_HIDE_MORE_INFO } from "../../../common/const"; -import { computeDomain } from "../../../common/entity/compute_domain"; import { classMap } from "lit-html/directives/class-map"; +import { ifDefined } from "lit-html/directives/if-defined"; +import { DOMAINS_HIDE_MORE_INFO } from "../../../common/const"; +import { toggleAttribute } from "../../../common/dom/toggle_attribute"; +import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import { computeRTL } from "../../../common/util/compute_rtl"; +import "../../../components/entity/state-badge"; +import "../../../components/ha-icon"; +import "../../../components/ha-relative-time"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; import { EntitiesCardEntityConfig } from "../cards/types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import "./hui-warning"; class HuiGenericEntityRow extends LitElement { @property() public hass?: HomeAssistant; @@ -94,27 +92,27 @@ class HuiGenericEntityRow extends LitElement { ? html`
    ${this.secondaryText || - (this.config.secondary_info === "entity-id" - ? stateObj.entity_id - : this.config.secondary_info === "last-changed" + (this.config.secondary_info === "entity-id" + ? stateObj.entity_id + : this.config.secondary_info === "last-changed" + ? html` + + ` + : this.config.secondary_info === "last-triggered" + ? stateObj.attributes.last_triggered ? html` ` - : this.config.secondary_info === "last-triggered" - ? stateObj.attributes.last_triggered - ? html` - - ` - : this.hass.localize( - "ui.panel.lovelace.cards.entities.never_triggered" - ) - : "")} + : this.hass.localize( + "ui.panel.lovelace.cards.entities.never_triggered" + ) + : "")}
    ` : ""} diff --git a/src/panels/lovelace/components/hui-graph-base.ts b/src/panels/lovelace/components/hui-graph-base.ts index 05d3d6a222..5c88b8f582 100644 --- a/src/panels/lovelace/components/hui-graph-base.ts +++ b/src/panels/lovelace/components/hui-graph-base.ts @@ -1,21 +1,21 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, - svg, + customElement, + html, + LitElement, + property, PropertyValues, + svg, + TemplateResult, } from "lit-element"; - import { strokeWidth } from "../../../data/graph"; import { getPath } from "../common/graph/get-path"; @customElement("hui-graph-base") export class HuiGraphBase extends LitElement { @property() public coordinates?: any; + @property() private _path?: string; protected render(): TemplateResult { diff --git a/src/panels/lovelace/components/hui-image.ts b/src/panels/lovelace/components/hui-image.ts index ff48cc9910..c443bff079 100644 --- a/src/panels/lovelace/components/hui-image.ts +++ b/src/panels/lovelace/components/hui-image.ts @@ -1,21 +1,20 @@ -import { STATES_OFF } from "../../../common/const"; - -import parseAspectRatio from "../../../common/util/parse-aspect-ratio"; import { - LitElement, - TemplateResult, - html, - property, - CSSResult, css, + CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, query, - customElement, + TemplateResult, } from "lit-element"; -import { HomeAssistant, CameraEntity } from "../../../types"; -import { styleMap } from "lit-html/directives/style-map"; import { classMap } from "lit-html/directives/class-map"; +import { styleMap } from "lit-html/directives/style-map"; +import { STATES_OFF } from "../../../common/const"; +import parseAspectRatio from "../../../common/util/parse-aspect-ratio"; import { fetchThumbnailUrlWithCache } from "../../../data/camera"; +import { CameraEntity, HomeAssistant } from "../../../types"; const UPDATE_INTERVAL = 10000; const DEFAULT_FILTER = "grayscale(100%)"; @@ -164,7 +163,6 @@ export class HuiImage extends LitElement { if (changedProps.has("cameraImage") && this.cameraView !== "live") { this._updateCameraImageSrc(); this._startUpdateCameraInterval(); - return; } } diff --git a/src/panels/lovelace/components/hui-input-list-editor.ts b/src/panels/lovelace/components/hui-input-list-editor.ts index f102d9d965..0b5ea2e893 100644 --- a/src/panels/lovelace/components/hui-input-list-editor.ts +++ b/src/panels/lovelace/components/hui-input-list-editor.ts @@ -1,23 +1,23 @@ +import "@polymer/paper-input/paper-input"; import { - html, css, + CSSResult, + customElement, + html, LitElement, property, TemplateResult, - CSSResult, - customElement, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; - +import { HomeAssistant } from "../../../types"; import { EditorTarget } from "../editor/types"; @customElement("hui-input-list-editor") export class HuiInputListEditor extends LitElement { @property() protected value?: string[]; + @property() protected hass?: HomeAssistant; + @property() protected inputLabel?: string; protected render(): TemplateResult { diff --git a/src/panels/lovelace/components/hui-marquee.ts b/src/panels/lovelace/components/hui-marquee.ts index 967ae88277..907b5fc602 100644 --- a/src/panels/lovelace/components/hui-marquee.ts +++ b/src/panels/lovelace/components/hui-marquee.ts @@ -1,29 +1,33 @@ import { - html, - LitElement, - PropertyValues, - TemplateResult, - customElement, css, CSSResult, + customElement, + html, + LitElement, property, + PropertyValues, + TemplateResult, } from "lit-element"; @customElement("hui-marquee") class HuiMarquee extends LitElement { @property() public text?: string; + @property({ type: Boolean }) public active?: boolean; + @property({ reflect: true, type: Boolean, attribute: "animating" }) private _animating = false; protected firstUpdated(changedProps) { super.firstUpdated(changedProps); + // eslint-disable-next-line wc/no-self-class this.addEventListener("mouseover", () => this.classList.add("hovering"), { // Capture because we need to run before a parent sets active on us. // Hovering will disable the overflow, allowing us to calc if we overflow. capture: true, }); + // eslint-disable-next-line wc/no-self-class this.addEventListener("mouseout", () => this.classList.remove("hovering")); } @@ -51,11 +55,7 @@ class HuiMarquee extends LitElement { return html`
    ${this.text} - ${this._animating - ? html` - ${this.text} - ` - : ""} + ${this._animating ? html` ${this.text} ` : ""}
    `; } diff --git a/src/panels/lovelace/components/hui-theme-select-editor.ts b/src/panels/lovelace/components/hui-theme-select-editor.ts index 9d206be7f5..a684a3ba3a 100644 --- a/src/panels/lovelace/components/hui-theme-select-editor.ts +++ b/src/panels/lovelace/components/hui-theme-select-editor.ts @@ -1,32 +1,33 @@ +import "@material/mwc-button"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; - -import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; +import { HomeAssistant } from "../../../types"; @customElement("hui-theme-select-editor") export class HuiThemeSelectEditor extends LitElement { @property() public value?: string; + @property() public label?: string; + @property() public hass?: HomeAssistant; protected render(): TemplateResult { return html` { - return html` - ${theme} - `; + return html` ${theme} `; })} diff --git a/src/panels/lovelace/components/hui-timestamp-display.ts b/src/panels/lovelace/components/hui-timestamp-display.ts index 809e559b39..ac753e4405 100644 --- a/src/panels/lovelace/components/hui-timestamp-display.ts +++ b/src/panels/lovelace/components/hui-timestamp-display.ts @@ -1,17 +1,16 @@ import { + customElement, html, LitElement, + property, PropertyValues, TemplateResult, - customElement, - property, } from "lit-element"; - -import { HomeAssistant } from "../../../types"; import { formatDate } from "../../../common/datetime/format_date"; import { formatDateTime } from "../../../common/datetime/format_date_time"; import { formatTime } from "../../../common/datetime/format_time"; import relativeTime from "../../../common/datetime/relative_time"; +import { HomeAssistant } from "../../../types"; const FORMATS: { [key: string]: (ts: Date, lang: string) => string } = { date: formatDate, @@ -57,26 +56,18 @@ class HuiTimestampDisplay extends LitElement { } if (isNaN(this.ts.getTime())) { - return html` - Invalid date - `; + return html` Invalid date `; } const format = this._format; if (INTERVAL_FORMAT.includes(format)) { - return html` - ${this._relative} - `; + return html` ${this._relative} `; } if (format in FORMATS) { - return html` - ${FORMATS[format](this.ts, this.hass.language)} - `; + return html` ${FORMATS[format](this.ts, this.hass.language)} `; } - return html` - Invalid format - `; + return html` Invalid format `; } protected updated(changedProperties: PropertyValues): void { diff --git a/src/panels/lovelace/components/hui-views-list.ts b/src/panels/lovelace/components/hui-views-list.ts index 89c270f949..db4e74e1de 100644 --- a/src/panels/lovelace/components/hui-views-list.ts +++ b/src/panels/lovelace/components/hui-views-list.ts @@ -1,17 +1,17 @@ +import "@polymer/paper-item/paper-icon-item"; +import "@polymer/paper-listbox/paper-listbox"; import { + css, + CSSResult, customElement, + html, LitElement, property, TemplateResult, - html, - CSSResult, - css, } from "lit-element"; -import "@polymer/paper-listbox/paper-listbox"; -import "@polymer/paper-item/paper-icon-item"; -import "../../../../src/components/ha-icon"; -import { toggleAttribute } from "../../../../src/common/dom/toggle_attribute"; import { fireEvent } from "../../../common/dom/fire_event"; +import { toggleAttribute } from "../../../common/dom/toggle_attribute"; +import "../../../components/ha-icon"; import { LovelaceConfig } from "../../../data/lovelace"; declare global { @@ -25,6 +25,7 @@ declare global { @customElement("hui-views-list") class HuiViewsList extends LitElement { @property() private lovelaceConfig?: LovelaceConfig | undefined; + @property() private selected?: number | undefined; protected render(): TemplateResult { diff --git a/src/panels/lovelace/components/hui-warning-element.ts b/src/panels/lovelace/components/hui-warning-element.ts index 1e9b557772..e41c4fb503 100644 --- a/src/panels/lovelace/components/hui-warning-element.ts +++ b/src/panels/lovelace/components/hui-warning-element.ts @@ -1,13 +1,12 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - CSSResult, - css, - customElement, property, + TemplateResult, } from "lit-element"; - import "../../../components/ha-icon"; @customElement("hui-warning-element") @@ -15,9 +14,7 @@ export class HuiWarningElement extends LitElement { @property() public label?: string; protected render(): TemplateResult { - return html` - - `; + return html` `; } static get styles(): CSSResult { diff --git a/src/panels/lovelace/components/hui-warning.ts b/src/panels/lovelace/components/hui-warning.ts index 174b897acf..fc903156d5 100644 --- a/src/panels/lovelace/components/hui-warning.ts +++ b/src/panels/lovelace/components/hui-warning.ts @@ -1,18 +1,16 @@ import { + css, + CSSResult, + customElement, html, LitElement, TemplateResult, - CSSResult, - css, - customElement, } from "lit-element"; @customElement("hui-warning") export class HuiWarning extends LitElement { protected render(): TemplateResult { - return html` - - `; + return html` `; } static get styles(): CSSResult { diff --git a/src/panels/lovelace/create-element/create-badge-element.ts b/src/panels/lovelace/create-element/create-badge-element.ts index 120a51b98e..5df44df0ad 100644 --- a/src/panels/lovelace/create-element/create-badge-element.ts +++ b/src/panels/lovelace/create-element/create-badge-element.ts @@ -1,6 +1,5 @@ -import "../badges/hui-state-label-badge"; - import { LovelaceBadgeConfig } from "../../../data/lovelace"; +import "../badges/hui-state-label-badge"; import { createLovelaceElement } from "./create-element-base"; const ALWAYS_LOADED_TYPES = new Set(["error", "state-label"]); diff --git a/src/panels/lovelace/create-element/create-card-element.ts b/src/panels/lovelace/create-element/create-card-element.ts index 3a2ed953d0..6b586fa678 100644 --- a/src/panels/lovelace/create-element/create-card-element.ts +++ b/src/panels/lovelace/create-element/create-card-element.ts @@ -1,7 +1,8 @@ -import "../cards/hui-entities-card"; -import "../cards/hui-entity-card"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import "../cards/hui-button-card"; +import "../cards/hui-entities-card"; import "../cards/hui-entity-button-card"; +import "../cards/hui-entity-card"; import "../cards/hui-glance-card"; import "../cards/hui-history-graph-card"; import "../cards/hui-horizontal-stack-card"; @@ -10,7 +11,6 @@ import "../cards/hui-sensor-card"; import "../cards/hui-thermostat-card"; import "../cards/hui-vertical-stack-card"; import "../cards/hui-weather-forecast-card"; -import { LovelaceCardConfig } from "../../../data/lovelace"; import { createLovelaceElement, getLovelaceElementClass, diff --git a/src/panels/lovelace/create-element/create-element-base.ts b/src/panels/lovelace/create-element/create-element-base.ts index c2c01cb279..88b46a6ec0 100644 --- a/src/panels/lovelace/create-element/create-element-base.ts +++ b/src/panels/lovelace/create-element/create-element-base.ts @@ -1,23 +1,23 @@ -import { - LovelaceCardConfig, - LovelaceBadgeConfig, -} from "../../../data/lovelace"; -import { - HuiErrorCard, - createErrorCardElement, - createErrorCardConfig, -} from "../cards/hui-error-card"; -import { - LovelaceCard, - LovelaceBadge, - LovelaceHeaderFooter, - LovelaceCardConstructor, -} from "../types"; import { fireEvent } from "../../../common/dom/fire_event"; -import { LovelaceElementConfig, LovelaceElement } from "../elements/types"; +import { + LovelaceBadgeConfig, + LovelaceCardConfig, +} from "../../../data/lovelace"; +import { CUSTOM_TYPE_PREFIX } from "../../../data/lovelace_custom_cards"; +import { + createErrorCardConfig, + createErrorCardElement, + HuiErrorCard, +} from "../cards/hui-error-card"; +import { LovelaceElement, LovelaceElementConfig } from "../elements/types"; import { LovelaceRow, LovelaceRowConfig } from "../entity-rows/types"; import { LovelaceHeaderFooterConfig } from "../header-footer/types"; -import { CUSTOM_TYPE_PREFIX } from "../../../data/lovelace_custom_cards"; +import { + LovelaceBadge, + LovelaceCard, + LovelaceCardConstructor, + LovelaceHeaderFooter, +} from "../types"; const TIMEOUT = 2000; @@ -60,8 +60,9 @@ const _createElement = ( // @ts-ignore element.setConfig(config); } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(tag, err); + // eslint-disable-next-line @typescript-eslint/no-use-before-define return _createErrorElement(err.message, config); } return element; @@ -173,19 +174,20 @@ export const getLovelaceElementClass = async < if (customTag) { const customCls = customElements.get(customTag); - return customCls - ? customCls - : new Promise((resolve, reject) => { - // We will give custom components up to TIMEOUT seconds to get defined - setTimeout( - () => reject(new Error(`Custom element not found: ${customTag}`)), - TIMEOUT - ); + return ( + customCls || + new Promise((resolve, reject) => { + // We will give custom components up to TIMEOUT seconds to get defined + setTimeout( + () => reject(new Error(`Custom element not found: ${customTag}`)), + TIMEOUT + ); - customElements - .whenDefined(customTag) - .then(() => resolve(customElements.get(customTag))); - }); + customElements + .whenDefined(customTag) + .then(() => resolve(customElements.get(customTag))); + }) + ); } const tag = `hui-${type}-${tagSuffix}`; diff --git a/src/panels/lovelace/create-element/create-hui-element.ts b/src/panels/lovelace/create-element/create-hui-element.ts index d61546046a..aacf1614cd 100644 --- a/src/panels/lovelace/create-element/create-hui-element.ts +++ b/src/panels/lovelace/create-element/create-hui-element.ts @@ -5,7 +5,6 @@ import "../elements/hui-service-button-element"; import "../elements/hui-state-badge-element"; import "../elements/hui-state-icon-element"; import "../elements/hui-state-label-element"; - import { LovelaceElementConfig } from "../elements/types"; import { createLovelaceElement } from "./create-element-base"; diff --git a/src/panels/lovelace/create-element/create-row-element.ts b/src/panels/lovelace/create-element/create-row-element.ts index 8fd0e6019e..e29f8ea9b8 100644 --- a/src/panels/lovelace/create-element/create-row-element.ts +++ b/src/panels/lovelace/create-element/create-row-element.ts @@ -4,10 +4,10 @@ import "../entity-rows/hui-script-entity-row"; import "../entity-rows/hui-sensor-entity-row"; import "../entity-rows/hui-text-entity-row"; import "../entity-rows/hui-toggle-entity-row"; -import "../special-rows/hui-button-row"; -import "../special-rows/hui-attribute-row"; -import "../special-rows/hui-call-service-row"; import { EntityConfig } from "../entity-rows/types"; +import "../special-rows/hui-attribute-row"; +import "../special-rows/hui-button-row"; +import "../special-rows/hui-call-service-row"; import { createLovelaceElement } from "./create-element-base"; const ALWAYS_LOADED_TYPES = new Set([ diff --git a/src/panels/lovelace/custom-card-helpers.ts b/src/panels/lovelace/custom-card-helpers.ts index 0de17cc064..2896d349b2 100644 --- a/src/panels/lovelace/custom-card-helpers.ts +++ b/src/panels/lovelace/custom-card-helpers.ts @@ -1,5 +1,5 @@ -export { createRowElement } from "./create-element/create-row-element"; -export { createCardElement } from "./create-element/create-card-element"; export { createBadgeElement } from "./create-element/create-badge-element"; +export { createCardElement } from "./create-element/create-card-element"; export { createHeaderFooterElement } from "./create-element/create-header-footer-element"; export { createHuiElement } from "./create-element/create-hui-element"; +export { createRowElement } from "./create-element/create-row-element"; diff --git a/src/panels/lovelace/editor/add-entities-to-view.ts b/src/panels/lovelace/editor/add-entities-to-view.ts index b5f6240296..686b544bf5 100644 --- a/src/panels/lovelace/editor/add-entities-to-view.ts +++ b/src/panels/lovelace/editor/add-entities-to-view.ts @@ -1,11 +1,11 @@ -import { HomeAssistant } from "../../../types"; import { - LovelaceConfig, fetchConfig, + LovelaceConfig, saveConfig, } from "../../../data/lovelace"; -import { showSelectViewDialog } from "./select-view/show-select-view-dialog"; +import { HomeAssistant } from "../../../types"; import { showSuggestCardDialog } from "./card-editor/show-suggest-card-dialog"; +import { showSelectViewDialog } from "./select-view/show-select-view-dialog"; export const addEntitiesToLovelaceView = async ( element: HTMLElement, diff --git a/src/panels/lovelace/editor/card-editor/hui-card-editor.ts b/src/panels/lovelace/editor/card-editor/hui-card-editor.ts index 69b7a24891..490222ae80 100644 --- a/src/panels/lovelace/editor/card-editor/hui-card-editor.ts +++ b/src/panels/lovelace/editor/card-editor/hui-card-editor.ts @@ -1,29 +1,27 @@ +import "@material/mwc-button"; +import { safeDump, safeLoad } from "js-yaml"; import { - html, css, - LitElement, - TemplateResult, CSSResult, customElement, + html, + LitElement, property, + TemplateResult, } from "lit-element"; - -import { safeDump, safeLoad } from "js-yaml"; - -import "@material/mwc-button"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; -import { LovelaceCardEditor } from "../../types"; -import { computeRTL } from "../../../../common/util/compute_rtl"; - -import "../../../../components/ha-code-editor"; -// This is not a duplicate import, one is for types, one is for element. -// tslint:disable-next-line -import { HaCodeEditor } from "../../../../components/ha-code-editor"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { EntityConfig } from "../../entity-rows/types"; +import { computeRTL } from "../../../../common/util/compute_rtl"; +import "../../../../components/ha-code-editor"; +import type { HaCodeEditor } from "../../../../components/ha-code-editor"; +import type { + LovelaceCardConfig, + LovelaceConfig, +} from "../../../../data/lovelace"; +import type { HomeAssistant } from "../../../../types"; import { getCardElementClass } from "../../create-element/create-card-element"; -import { GUIModeChangedEvent } from "../types"; +import type { EntityConfig } from "../../entity-rows/types"; +import type { LovelaceCardEditor } from "../../types"; +import type { GUIModeChangedEvent } from "../types"; export interface ConfigChangedEvent { config: LovelaceCardConfig; @@ -50,22 +48,31 @@ export interface UIConfigChangedEvent extends Event { @customElement("hui-card-editor") export class HuiCardEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public lovelace?: LovelaceConfig; @property() private _yaml?: string; + @property() private _config?: LovelaceCardConfig; + @property() private _configElement?: LovelaceCardEditor; + @property() private _configElType?: string; - @property() private _GUImode: boolean = true; + + @property() private _GUImode = true; + // Error: Configuration broken - do not save @property() private _error?: string; + // Warning: GUI editor can't handle configuration - ok to save @property() private _warning?: string; - @property() private _loading: boolean = false; + + @property() private _loading = false; public get yaml(): string { return this._yaml || ""; } + public set yaml(_yaml: string) { this._yaml = _yaml; try { @@ -85,6 +92,7 @@ export class HuiCardEditor extends LitElement { public get value(): LovelaceCardConfig | undefined { return this._config; } + public set value(config: LovelaceCardConfig | undefined) { if (JSON.stringify(config) !== JSON.stringify(this._config || {})) { this.yaml = safeDump(config); @@ -208,6 +216,7 @@ export class HuiCardEditor extends LitElement { const config = ev.detail.config; this.value = config; } + private _handleYAMLChanged(ev) { ev.stopPropagation(); const newYaml = ev.detail.value; diff --git a/src/panels/lovelace/editor/card-editor/hui-card-picker.ts b/src/panels/lovelace/editor/card-editor/hui-card-picker.ts index ed5b65e998..0c8550f39a 100644 --- a/src/panels/lovelace/editor/card-editor/hui-card-picker.ts +++ b/src/panels/lovelace/editor/card-editor/hui-card-picker.ts @@ -1,33 +1,32 @@ import { - html, css, - LitElement, - TemplateResult, CSSResult, customElement, + html, + LitElement, property, PropertyValues, + TemplateResult, } from "lit-element"; -import { until } from "lit-html/directives/until"; import { classMap } from "lit-html/directives/class-map"; - -import { CardPickTarget } from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCard } from "../../types"; -import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; +import { until } from "lit-html/directives/until"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { createCardElement } from "../../create-element/create-card-element"; -import { getCardStubConfig } from "../get-card-stub-config"; -import { - computeUsedEntities, - calcUnusedEntities, -} from "../../common/compute-unused-entities"; import { UNAVAILABLE_STATES } from "../../../../data/entity"; +import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; import { customCards, - getCustomCardEntry, CUSTOM_TYPE_PREFIX, + getCustomCardEntry, } from "../../../../data/lovelace_custom_cards"; +import { HomeAssistant } from "../../../../types"; +import { + calcUnusedEntities, + computeUsedEntities, +} from "../../common/compute-unused-entities"; +import { createCardElement } from "../../create-element/create-card-element"; +import { LovelaceCard } from "../../types"; +import { getCardStubConfig } from "../get-card-stub-config"; +import { CardPickTarget } from "../types"; const previewCards: string[] = [ "alarm-panel", @@ -63,9 +62,13 @@ const nonPreviewCards: string[] = [ @customElement("hui-card-picker") export class HuiCardPicker extends LitElement { @property() public hass?: HomeAssistant; + public lovelace?: LovelaceConfig; + public cardPicked?: (cardConf: LovelaceCardConfig) => void; + private _unusedEntities?: string[]; + private _usedEntities?: string[]; protected render(): TemplateResult { @@ -278,8 +281,8 @@ export class HuiCardPicker extends LitElement { private async _renderCardElement( type: string, - noElement: boolean = false, - isCustom: boolean = false + noElement = false, + isCustom = false ): Promise { const customCard = isCustom ? getCustomCardEntry(type) : undefined; if (isCustom) { diff --git a/src/panels/lovelace/editor/card-editor/hui-card-preview.ts b/src/panels/lovelace/editor/card-editor/hui-card-preview.ts index 8850d46c15..fb622e95fc 100644 --- a/src/panels/lovelace/editor/card-editor/hui-card-preview.ts +++ b/src/panels/lovelace/editor/card-editor/hui-card-preview.ts @@ -1,16 +1,17 @@ import "@polymer/paper-input/paper-textarea"; - -import { createCardElement } from "../../create-element/create-card-element"; -import { HomeAssistant } from "../../../../types"; +import { computeRTL } from "../../../../common/util/compute_rtl"; import { LovelaceCardConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { createErrorCardConfig } from "../../cards/hui-error-card"; +import { createCardElement } from "../../create-element/create-card-element"; import { LovelaceCard } from "../../types"; import { ConfigError } from "../types"; -import { createErrorCardConfig } from "../../cards/hui-error-card"; -import { computeRTL } from "../../../../common/util/compute_rtl"; export class HuiCardPreview extends HTMLElement { private _hass?: HomeAssistant; + private _element?: LovelaceCard; + private _config?: LovelaceCardConfig; private get _error() { diff --git a/src/panels/lovelace/editor/card-editor/hui-dialog-delete-card.ts b/src/panels/lovelace/editor/card-editor/hui-dialog-delete-card.ts index d555eba729..3d1b64d988 100644 --- a/src/panels/lovelace/editor/card-editor/hui-dialog-delete-card.ts +++ b/src/panels/lovelace/editor/card-editor/hui-dialog-delete-card.ts @@ -1,32 +1,31 @@ +import deepFreeze from "deep-freeze"; import { css, - html, - LitElement, - TemplateResult, CSSResultArray, customElement, + html, + LitElement, property, query, + TemplateResult, } from "lit-element"; - -import "./hui-card-preview"; -import "../../../../components/dialog/ha-paper-dialog"; - -import deepFreeze from "deep-freeze"; - -// tslint:disable-next-line: no-duplicate-imports -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardConfig } from "../../../../data/lovelace"; -import { haStyleDialog } from "../../../../resources/styles"; -import { DeleteCardDialogParams } from "./show-delete-card-dialog"; import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import type { LovelaceCardConfig } from "../../../../data/lovelace"; +import { haStyleDialog } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; +import "./hui-card-preview"; +import type { DeleteCardDialogParams } from "./show-delete-card-dialog"; @customElement("hui-dialog-delete-card") export class HuiDialogDeleteCard extends LitElement { @property() protected hass!: HomeAssistant; + @property() private _params?: DeleteCardDialogParams; + @property() private _cardConfig?: LovelaceCardConfig; + @query("ha-paper-dialog") private _dialog!: HaPaperDialog; public async showDialog(params: DeleteCardDialogParams): Promise { diff --git a/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts b/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts index 59dee5b1f6..3599c85a93 100755 --- a/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts +++ b/src/panels/lovelace/editor/card-editor/hui-dialog-edit-card.ts @@ -1,34 +1,30 @@ +import deepFreeze from "deep-freeze"; import { css, - html, - LitElement, - TemplateResult, CSSResultArray, customElement, + html, + LitElement, property, query, + TemplateResult, } from "lit-element"; - -import deepFreeze from "deep-freeze"; - -import { HomeAssistant } from "../../../../types"; -import { HASSDomEvent } from "../../../../common/dom/fire_event"; -import { +import type { HASSDomEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { LovelaceCardConfig, LovelaceViewConfig, } from "../../../../data/lovelace"; -import "./hui-card-editor"; -// tslint:disable-next-line -import { HuiCardEditor, ConfigChangedEvent } from "./hui-card-editor"; -import "./hui-card-preview"; -import "./hui-card-picker"; -import { EditCardDialogParams } from "./show-edit-card-dialog"; -import { addCard, replaceCard } from "../config-util"; - -import "../../../../components/dialog/ha-paper-dialog"; import { haStyleDialog } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; import { showSaveSuccessToast } from "../../../../util/toast-saved-success"; -import { GUIModeChangedEvent } from "../types"; +import { addCard, replaceCard } from "../config-util"; +import type { GUIModeChangedEvent } from "../types"; +import "./hui-card-editor"; +import type { ConfigChangedEvent, HuiCardEditor } from "./hui-card-editor"; +import "./hui-card-picker"; +import "./hui-card-preview"; +import type { EditCardDialogParams } from "./show-edit-card-dialog"; declare global { // for fire event @@ -48,13 +44,17 @@ export class HuiDialogEditCard extends LitElement { @property() private _params?: EditCardDialogParams; @property() private _cardConfig?: LovelaceCardConfig; + @property() private _viewConfig!: LovelaceViewConfig; - @property() private _saving: boolean = false; + @property() private _saving = false; + @property() private _error?: string; + @property() private _guiModeAvailable? = true; @query("hui-card-editor") private _cardEditorEl?: HuiCardEditor; + @property() private _GUImode = true; public async showDialog(params: EditCardDialogParams): Promise { diff --git a/src/panels/lovelace/editor/card-editor/hui-dialog-move-card-view.ts b/src/panels/lovelace/editor/card-editor/hui-dialog-move-card-view.ts index 5cc1497877..ad969baf53 100644 --- a/src/panels/lovelace/editor/card-editor/hui-dialog-move-card-view.ts +++ b/src/panels/lovelace/editor/card-editor/hui-dialog-move-card-view.ts @@ -1,22 +1,19 @@ +import "@polymer/paper-item/paper-item"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-item/paper-item"; import "../../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line:no-duplicate-imports -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; - +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import type { PolymerChangedEvent } from "../../../../polymer-types"; import "../../components/hui-views-list"; - import { moveCard } from "../config-util"; -import { MoveCardViewDialogParams } from "./show-move-card-view-dialog"; -import { PolymerChangedEvent } from "../../../../polymer-types"; +import type { MoveCardViewDialogParams } from "./show-move-card-view-dialog"; @customElement("hui-dialog-move-card-view") export class HuiDialogMoveCardView extends LitElement { diff --git a/src/panels/lovelace/editor/card-editor/hui-dialog-suggest-card.ts b/src/panels/lovelace/editor/card-editor/hui-dialog-suggest-card.ts index 283cb9f4d3..dd3e333d65 100755 --- a/src/panels/lovelace/editor/card-editor/hui-dialog-suggest-card.ts +++ b/src/panels/lovelace/editor/card-editor/hui-dialog-suggest-card.ts @@ -1,41 +1,42 @@ +import deepFreeze from "deep-freeze"; import { css, - html, - LitElement, - TemplateResult, CSSResultArray, customElement, + html, + LitElement, property, query, + TemplateResult, } from "lit-element"; - -import deepFreeze from "deep-freeze"; - -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardConfig } from "../../../../data/lovelace"; -import "./hui-card-preview"; -import { addCards } from "../config-util"; - -import "../../../../components/ha-yaml-editor"; import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import "../../../../components/ha-yaml-editor"; +import type { HaYamlEditor } from "../../../../components/ha-yaml-editor"; +import { LovelaceCardConfig } from "../../../../data/lovelace"; import { haStyleDialog } from "../../../../resources/styles"; -import { showEditCardDialog } from "./show-edit-card-dialog"; -import { computeCards } from "../../common/generate-lovelace-config"; -import { SuggestCardDialogParams } from "./show-suggest-card-dialog"; +import { HomeAssistant } from "../../../../types"; import { showSaveSuccessToast } from "../../../../util/toast-saved-success"; -// tslint:disable-next-line -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line -import { HaYamlEditor } from "../../../../components/ha-yaml-editor"; +import { computeCards } from "../../common/generate-lovelace-config"; +import { addCards } from "../config-util"; +import "./hui-card-preview"; +import { showEditCardDialog } from "./show-edit-card-dialog"; +import { SuggestCardDialogParams } from "./show-suggest-card-dialog"; @customElement("hui-dialog-suggest-card") export class HuiDialogSuggestCard extends LitElement { @property() protected hass!: HomeAssistant; + @property() private _params?: SuggestCardDialogParams; + @property() private _cardConfig?: LovelaceCardConfig[]; - @property() private _saving: boolean = false; - @property() private _yamlMode: boolean = false; + + @property() private _saving = false; + + @property() private _yamlMode = false; + @query("ha-paper-dialog") private _dialog?: HaPaperDialog; + @query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor; public async showDialog(params: SuggestCardDialogParams): Promise { diff --git a/src/panels/lovelace/editor/card-editor/show-edit-card-dialog.ts b/src/panels/lovelace/editor/card-editor/show-edit-card-dialog.ts index fd794affb2..18b0d820e3 100644 --- a/src/panels/lovelace/editor/card-editor/show-edit-card-dialog.ts +++ b/src/panels/lovelace/editor/card-editor/show-edit-card-dialog.ts @@ -1,5 +1,5 @@ import { fireEvent } from "../../../../common/dom/fire_event"; -import { LovelaceConfig, LovelaceCardConfig } from "../../../../data/lovelace"; +import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; export interface EditCardDialogParams { lovelaceConfig: LovelaceConfig; diff --git a/src/panels/lovelace/editor/card-editor/show-suggest-card-dialog.ts b/src/panels/lovelace/editor/card-editor/show-suggest-card-dialog.ts index 1dce62e34c..a5ec08a9db 100644 --- a/src/panels/lovelace/editor/card-editor/show-suggest-card-dialog.ts +++ b/src/panels/lovelace/editor/card-editor/show-suggest-card-dialog.ts @@ -1,5 +1,5 @@ import { fireEvent } from "../../../../common/dom/fire_event"; -import { LovelaceConfig, LovelaceCardConfig } from "../../../../data/lovelace"; +import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; export interface SuggestCardDialogParams { lovelaceConfig?: LovelaceConfig; diff --git a/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts index a2ab98022b..4d4dde3186 100644 --- a/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts @@ -1,27 +1,25 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, - CSSResult, - css, -} from "lit-element"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - -import { struct } from "../../common/structs/struct"; -import { EntitiesEditorEvent, EditorTarget } from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; -import { AlarmPanelCardConfig } from "../../cards/types"; - import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-icon"; +import { HomeAssistant } from "../../../../types"; +import { AlarmPanelCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -78,7 +76,7 @@ export class HuiAlarmPanelCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["alarm_control_panel"]' + .include-domains=${["alarm_control_panel"]} @change="${this._valueChanged}" allow-custom-entity > @@ -113,9 +111,7 @@ export class HuiAlarmPanelCardEditor extends LitElement > ${states.map((state) => { - return html` - ${state} - `; + return html` ${state} `; })} diff --git a/src/panels/lovelace/editor/config-elements/hui-button-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-button-card-editor.ts index d0f1299c17..ac90dca17e 100644 --- a/src/panels/lovelace/editor/config-elements/hui-button-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-button-card-editor.ts @@ -1,30 +1,28 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-action-editor"; -import "../../components/hui-theme-select-editor"; -import "../../components/hui-entity-editor"; -import "../../../../components/ha-icon-input"; - -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - actionConfigStruct, -} from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; -import { ActionConfig } from "../../../../data/lovelace"; -import { ButtonCardConfig } from "../../cards/types"; import { stateIcon } from "../../../../common/entity/state_icon"; +import "../../../../components/ha-icon-input"; +import { ActionConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { ButtonCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-action-editor"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { + actionConfigStruct, + EditorTarget, + EntitiesEditorEvent, +} from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -136,8 +134,9 @@ export class HuiButtonCardEditor extends LitElement "ui.panel.lovelace.editor.card.config.optional" )})" .value=${this._icon} - .placeholder=${this._icon || - stateIcon(this.hass.states[this._entity])} + .placeholder=${ + this._icon || stateIcon(this.hass.states[this._entity]) + } .configValue=${"icon"} @value-changed=${this._valueChanged} > diff --git a/src/panels/lovelace/editor/config-elements/hui-conditional-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-conditional-card-editor.ts index 1675f6e883..086c58d4fc 100644 --- a/src/panels/lovelace/editor/config-elements/hui-conditional-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-conditional-card-editor.ts @@ -1,27 +1,25 @@ +import "@polymer/paper-tabs"; import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - customElement, property, - CSSResult, - css, query, + TemplateResult, } from "lit-element"; -import "@polymer/paper-tabs"; - -import { struct } from "../../common/structs/struct"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; -import { ConditionalCardConfig } from "../../cards/types"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; -import { LovelaceConfig } from "../../../../data/lovelace"; - import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-switch"; +import { LovelaceConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { ConditionalCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import { LovelaceCardEditor } from "../../types"; import { - HuiCardEditor, ConfigChangedEvent, + HuiCardEditor, } from "../card-editor/hui-card-editor"; import { GUIModeChangedEvent } from "../types"; @@ -40,11 +38,17 @@ const cardConfigStruct = struct({ export class HuiConditionalCardEditor extends LitElement implements LovelaceCardEditor { @property() public hass?: HomeAssistant; + @property() public lovelace?: LovelaceConfig; + @property() private _config?: ConditionalCardConfig; + @property() private _GUImode = true; + @property() private _guiModeAvailable? = true; - @property() private _cardTab: boolean = false; + + @property() private _cardTab = false; + @query("hui-card-editor") private _cardEditorEl?: HuiCardEditor; public setConfig(config: ConditionalCardConfig): void { @@ -242,6 +246,7 @@ export class HuiConditionalCardEditor extends LitElement target.value = ""; fireEvent(this, "config-changed", { config: this._config }); } + private _changeCondition(ev: Event): void { const target = ev.target as any; if (!this._config || !target) { @@ -265,11 +270,9 @@ export class HuiConditionalCardEditor extends LitElement condition.state_not = condition.state; delete condition.state; } - } else { - if (condition.state_not) { - condition.state = condition.state_not; - delete condition.state_not; - } + } else if (condition.state_not) { + condition.state = condition.state_not; + delete condition.state_not; } } this._config.conditions[target.index] = condition; diff --git a/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts index 9e32bf222a..6427ce9d1b 100644 --- a/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts @@ -1,37 +1,35 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/entity/state-badge"; -import "../../components/hui-theme-select-editor"; -import "../../components/hui-entity-editor"; import "../../../../components/ha-card"; import "../../../../components/ha-icon"; import "../../../../components/ha-switch"; - -import { processEditorEntities } from "../process-editor-entities"; -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - entitiesConfigStruct, -} from "../types"; import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; import { EntitiesCardConfig, EntitiesCardEntityConfig, } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; import { headerFooterConfigStructs } from "../../header-footer/types"; +import { LovelaceCardEditor } from "../../types"; +import { processEditorEntities } from "../process-editor-entities"; +import { + EditorTarget, + entitiesConfigStruct, + EntitiesEditorEvent, +} from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-entity-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-entity-card-editor.ts index 0acfa9caa4..6206f7260a 100644 --- a/src/panels/lovelace/editor/config-elements/hui-entity-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-entity-card-editor.ts @@ -1,26 +1,24 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-action-editor"; -import "../../components/hui-theme-select-editor"; -import "../../components/hui-entity-editor"; -import "../../../../components/ha-icon-input"; - -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 { EntityCardConfig } from "../../cards/types"; -import { headerFooterConfigStructs } from "../../header-footer/types"; import { stateIcon } from "../../../../common/entity/state_icon"; +import "../../../../components/ha-icon-input"; +import { HomeAssistant } from "../../../../types"; +import { EntityCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-action-editor"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; +import { headerFooterConfigStructs } from "../../header-footer/types"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -108,7 +106,7 @@ export class HuiEntityCardEditor extends LitElement )})" .value=${this._icon} .placeholder=${this._icon || - stateIcon(this.hass.states[this._entity])} + stateIcon(this.hass.states[this._entity])} .configValue=${"icon"} @value-changed=${this._valueChanged} > diff --git a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts index 23e3e4eef3..4f85e75ddb 100644 --- a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts @@ -1,25 +1,23 @@ +import "@polymer/paper-input/paper-input"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-theme-select-editor"; -import "../../components/hui-entity-editor"; -import "../../../../components/ha-switch"; - -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 "../../../../components/ha-switch"; +import { HomeAssistant } from "../../../../types"; import { GaugeCardConfig, SeverityConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -89,7 +87,7 @@ export class HuiGaugeCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["sensor"]' + .include-domains=${["sensor"]} @change="${this._valueChanged}" allow-custom-entity > diff --git a/src/panels/lovelace/editor/config-elements/hui-glance-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-glance-card-editor.ts index a019bc6a89..51d0bf0e93 100644 --- a/src/panels/lovelace/editor/config-elements/hui-glance-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-glance-card-editor.ts @@ -1,33 +1,31 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/entity/state-badge"; -import "../../components/hui-theme-select-editor"; -import "../../components/hui-entity-editor"; import "../../../../components/ha-card"; import "../../../../components/ha-icon"; import "../../../../components/ha-switch"; - +import { HomeAssistant } from "../../../../types"; +import { ConfigEntity, GlanceCardConfig } from "../../cards/types"; import { struct } from "../../common/structs/struct"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; import { processEditorEntities } from "../process-editor-entities"; import { - EntitiesEditorEvent, EditorTarget, entitiesConfigStruct, + EntitiesEditorEvent, } from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; import { configElementStyle } from "./config-elements-style"; -import { GlanceCardConfig, ConfigEntity } from "../../cards/types"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts index 9d8f777fa4..916e8db9ce 100644 --- a/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts @@ -1,23 +1,21 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-entity-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 { EntityConfig } from "../../entity-rows/types"; -import { processEditorEntities } from "../process-editor-entities"; -import { configElementStyle } from "./config-elements-style"; +import { HomeAssistant } from "../../../../types"; import { HistoryGraphCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-entity-editor"; +import { EntityConfig } from "../../entity-rows/types"; +import { LovelaceCardEditor } from "../../types"; +import { processEditorEntities } from "../process-editor-entities"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const entitiesConfigStruct = struct.union([ { diff --git a/src/panels/lovelace/editor/config-elements/hui-iframe-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-iframe-card-editor.ts index 39ba0c4194..cba612b982 100644 --- a/src/panels/lovelace/editor/config-elements/hui-iframe-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-iframe-card-editor.ts @@ -1,19 +1,18 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -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 { HomeAssistant } from "../../../../types"; import { IframeCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-light-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-light-card-editor.ts index 1a76e716b2..c05d30178c 100644 --- a/src/panels/lovelace/editor/config-elements/hui-light-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-light-card-editor.ts @@ -1,30 +1,28 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-theme-select-editor"; -import "../../components/hui-action-editor"; -import "../../../../components/ha-icon-input"; -import "../../components/hui-entity-editor"; - -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - actionConfigStruct, -} from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; -import { LightCardConfig } from "../../cards/types"; import { stateIcon } from "../../../../common/entity/state_icon"; +import "../../../../components/ha-icon-input"; import { ActionConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { LightCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-action-editor"; +import "../../components/hui-entity-editor"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { + actionConfigStruct, + EditorTarget, + EntitiesEditorEvent, +} from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -97,7 +95,7 @@ export class HuiLightCardEditor extends LitElement .hass=${this.hass} .value=${this._entity} .configValue=${"entity"} - include-domains='["light"]' + .include-domains=${["light"]} @change=${this._valueChanged} allow-custom-entity > @@ -120,7 +118,7 @@ export class HuiLightCardEditor extends LitElement )})" .value=${this._icon} .placeholder=${this._icon || - stateIcon(this.hass.states[this._entity])} + stateIcon(this.hass.states[this._entity])} .configValue=${"icon"} @value-changed=${this._valueChanged} > diff --git a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts index 3eb81676b1..62fc12f5f3 100644 --- a/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-map-card-editor.ts @@ -1,31 +1,29 @@ -import { - html, - css, - LitElement, - TemplateResult, - customElement, - property, - CSSResult, -} from "lit-element"; import "@polymer/paper-input/paper-input"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { PolymerChangedEvent } from "../../../../polymer-types"; +import { HomeAssistant } from "../../../../types"; +import { MapCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-entity-editor"; import "../../components/hui-input-list-editor"; - -import { struct } from "../../common/structs/struct"; +import { EntityConfig } from "../../entity-rows/types"; +import { LovelaceCardEditor } from "../../types"; +import { processEditorEntities } from "../process-editor-entities"; import { - EntitiesEditorEvent, EditorTarget, entitiesConfigStruct, + EntitiesEditorEvent, } 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 cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-markdown-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-markdown-card-editor.ts index 372d64d2ac..b98e9076c5 100644 --- a/src/panels/lovelace/editor/config-elements/hui-markdown-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-markdown-card-editor.ts @@ -1,22 +1,20 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-textarea"; - -import { struct } from "../../common/structs/struct"; -import { EntitiesEditorEvent, EditorTarget } from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; +import { HomeAssistant } from "../../../../types"; import { MarkdownCardConfig } from "../../cards/types"; - +import { struct } from "../../common/structs/struct"; import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-media-control-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-media-control-card-editor.ts index b740bae1be..5f78265b17 100644 --- a/src/panels/lovelace/editor/config-elements/hui-media-control-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-media-control-card-editor.ts @@ -1,19 +1,17 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; - -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 "../../../../components/entity/ha-entity-picker"; +import { HomeAssistant } from "../../../../types"; import { MediaControlCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; const cardConfigStruct = struct({ type: "string", @@ -52,7 +50,7 @@ export class HuiMediaControlCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["media_player"]' + .include-domains=${["media_player"]} @change="${this._valueChanged}" allow-custom-entity > diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts index eaab41e64d..8828484b30 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts @@ -1,27 +1,25 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - +import { fireEvent } from "../../../../common/dom/fire_event"; +import { ActionConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { PictureCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-action-editor"; import "../../components/hui-theme-select-editor"; - -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - actionConfigStruct, -} from "../types"; -import { HomeAssistant } from "../../../../types"; import { LovelaceCardEditor } from "../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; +import { + actionConfigStruct, + EditorTarget, + EntitiesEditorEvent, +} from "../types"; import { configElementStyle } from "./config-elements-style"; -import { ActionConfig } from "../../../../data/lovelace"; -import { PictureCardConfig } from "../../cards/types"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts index 52ae73dc25..3d7b46d751 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts @@ -1,32 +1,30 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; -import "@polymer/paper-input/paper-input"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/ha-switch"; +import { ActionConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { PictureEntityCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-action-editor"; import "../../components/hui-entity-editor"; -import "../../../../components/ha-switch"; import "../../components/hui-theme-select-editor"; - -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - actionConfigStruct, -} from "../types"; -import { HomeAssistant } from "../../../../types"; import { LovelaceCardEditor } from "../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; +import { + actionConfigStruct, + EditorTarget, + EntitiesEditorEvent, +} from "../types"; import { configElementStyle } from "./config-elements-style"; -import { ActionConfig } from "../../../../data/lovelace"; -import { PictureEntityCardConfig } from "../../cards/types"; const cardConfigStruct = struct({ type: "string", @@ -152,7 +150,7 @@ export class HuiPictureEntityCardEditor extends LitElement .value="${this._camera_image}" .configValue=${"camera_image"} @change="${this._valueChanged}" - include-domains='["camera"]' + .include-domains=${["camera"]} allow-custom-entity >
    @@ -170,9 +168,7 @@ export class HuiPictureEntityCardEditor extends LitElement .selected="${views.indexOf(this._camera_view)}" > ${views.map((view) => { - return html` - ${view} - `; + return html` ${view} `; })} @@ -268,9 +264,7 @@ export class HuiPictureEntityCardEditor extends LitElement [target.configValue!]: target.checked !== undefined ? target.checked - : value - ? value - : target.config, + : value || target.config, }; } } diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-glance-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-glance-card-editor.ts index 677e110767..c45f910ce1 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-glance-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-glance-card-editor.ts @@ -1,35 +1,33 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; -import "@polymer/paper-input/paper-input"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/entity/ha-entity-picker"; +import { ActionConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { PictureGlanceCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-action-editor"; import "../../components/hui-entity-editor"; -import "../../../../components/entity/ha-entity-picker"; import "../../components/hui-theme-select-editor"; - -import { struct } from "../../common/structs/struct"; -import { - EntitiesEditorEvent, - EditorTarget, - actionConfigStruct, - entitiesConfigStruct, -} from "../types"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "./config-elements-style"; -import { ActionConfig } from "../../../../data/lovelace"; -import { PictureGlanceCardConfig } from "../../cards/types"; import { EntityConfig } from "../../entity-rows/types"; +import { LovelaceCardEditor } from "../../types"; import { processEditorEntities } from "../process-editor-entities"; +import { + actionConfigStruct, + EditorTarget, + entitiesConfigStruct, + EntitiesEditorEvent, +} from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -152,7 +150,7 @@ export class HuiPictureGlanceCardEditor extends LitElement .configValue=${"camera_image"} @change="${this._valueChanged}" allow-custom-entity - include-domains='["camera"]' + .include-domains=${["camera"]} >
    ${views.map((view) => { - return html` - ${view} - `; + return html` ${view} `; })} @@ -267,7 +263,7 @@ export class HuiPictureGlanceCardEditor extends LitElement } else { this._config = { ...this._config, - [target.configValue!]: value ? value : target.config, + [target.configValue!]: value || target.config, }; } } diff --git a/src/panels/lovelace/editor/config-elements/hui-plant-status-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-plant-status-card-editor.ts index 7ac5ba8b34..7dfed2b84b 100644 --- a/src/panels/lovelace/editor/config-elements/hui-plant-status-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-plant-status-card-editor.ts @@ -1,23 +1,21 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-icon"; -import "../../components/hui-theme-select-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 { PlantStatusCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -67,7 +65,7 @@ export class HuiPlantStatusCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["plant"]' + .include-domains=${["plant"]} @change="${this._valueChanged}" allow-custom-entity > diff --git a/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts index 631b079101..8b7077e2ec 100644 --- a/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts @@ -1,27 +1,25 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; -import "@polymer/paper-input/paper-input"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - -import "../../components/hui-theme-select-editor"; +import { + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { stateIcon } from "../../../../common/entity/state_icon"; import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-icon-input"; - -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 { SensorCardConfig } from "../../cards/types"; -import { stateIcon } from "../../../../common/entity/state_icon"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -98,7 +96,7 @@ export class HuiSensorCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["sensor"]' + .include-domains=${["sensor"]} @change="${this._valueChanged}" allow-custom-entity > @@ -121,7 +119,7 @@ export class HuiSensorCardEditor extends LitElement )})" .value=${this._icon} .placeholder=${this._icon || - stateIcon(this.hass.states[this._entity])} + stateIcon(this.hass.states[this._entity])} .configValue=${"icon"} @value-changed=${this._valueChanged} > @@ -139,9 +137,7 @@ export class HuiSensorCardEditor extends LitElement .selected="${graphs.indexOf(this._graph)}" > ${graphs.map((graph) => { - return html` - ${graph} - `; + return html` ${graph} `; })} diff --git a/src/panels/lovelace/editor/config-elements/hui-shopping-list-editor.ts b/src/panels/lovelace/editor/config-elements/hui-shopping-list-editor.ts index a6c2a01f1d..98fea1a69b 100644 --- a/src/panels/lovelace/editor/config-elements/hui-shopping-list-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-shopping-list-editor.ts @@ -1,23 +1,21 @@ -import { - html, - CSSResult, - css, - LitElement, - TemplateResult, - customElement, - property, -} from "lit-element"; import "@polymer/paper-input/paper-input"; - -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 { ShoppingListCardConfig } from "../../cards/types"; - +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { isComponentLoaded } from "../../../../common/config/is_component_loaded"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { HomeAssistant } from "../../../../types"; +import { ShoppingListCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; const cardConfigStruct = struct({ type: "string", diff --git a/src/panels/lovelace/editor/config-elements/hui-stack-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-stack-card-editor.ts index 44ff449cfd..ffc36e9247 100644 --- a/src/panels/lovelace/editor/config-elements/hui-stack-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-stack-card-editor.ts @@ -1,24 +1,23 @@ +import "@polymer/paper-tabs"; import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - customElement, property, - CSSResult, - css, query, + TemplateResult, } from "lit-element"; -import "@polymer/paper-tabs"; - -import { struct } from "../../common/structs/struct"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceCardEditor } from "../../types"; -import { StackCardConfig } from "../../cards/types"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; import { LovelaceConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { StackCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import { LovelaceCardEditor } from "../../types"; import { - HuiCardEditor, ConfigChangedEvent, + HuiCardEditor, } from "../card-editor/hui-card-editor"; import { GUIModeChangedEvent } from "../types"; @@ -32,11 +31,17 @@ const cardConfigStruct = struct({ export class HuiStackCardEditor extends LitElement implements LovelaceCardEditor { @property() public hass?: HomeAssistant; + @property() public lovelace?: LovelaceConfig; + @property() private _config?: StackCardConfig; - @property() private _selectedCard: number = 0; + + @property() private _selectedCard = 0; + @property() private _GUImode = true; + @property() private _guiModeAvailable? = true; + @query("hui-card-editor") private _cardEditorEl?: HuiCardEditor; public setConfig(config: StackCardConfig): void { diff --git a/src/panels/lovelace/editor/config-elements/hui-thermostat-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-thermostat-card-editor.ts index f767d5429b..ba4116614f 100644 --- a/src/panels/lovelace/editor/config-elements/hui-thermostat-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-thermostat-card-editor.ts @@ -1,22 +1,20 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import "../../components/hui-theme-select-editor"; -import "../../../../components/entity/ha-entity-picker"; - -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 "../../../../components/entity/ha-entity-picker"; +import { HomeAssistant } from "../../../../types"; import { ThermostatCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -66,7 +64,7 @@ export class HuiThermostatCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["climate"]' + .include-domains=${["climate"]} @change="${this._valueChanged}" allow-custom-entity > diff --git a/src/panels/lovelace/editor/config-elements/hui-weather-forecast-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-weather-forecast-card-editor.ts index 0c89045edd..2bf907a919 100644 --- a/src/panels/lovelace/editor/config-elements/hui-weather-forecast-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-weather-forecast-card-editor.ts @@ -1,21 +1,19 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; - -import "../../../../components/entity/ha-entity-picker"; -import "../../components/hui-theme-select-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 "../../../../components/entity/ha-entity-picker"; +import { HomeAssistant } from "../../../../types"; import { WeatherForecastCardConfig } from "../../cards/types"; +import { struct } from "../../common/structs/struct"; +import "../../components/hui-theme-select-editor"; +import { LovelaceCardEditor } from "../../types"; +import { EditorTarget, EntitiesEditorEvent } from "../types"; +import { configElementStyle } from "./config-elements-style"; const cardConfigStruct = struct({ type: "string", @@ -65,7 +63,7 @@ export class HuiWeatherForecastCardEditor extends LitElement .hass=${this.hass} .value="${this._entity}" .configValue=${"entity"} - include-domains='["weather"]' + .include-domains=${["weather"]} @change="${this._valueChanged}" allow-custom-entity > diff --git a/src/panels/lovelace/editor/config-util.ts b/src/panels/lovelace/editor/config-util.ts index 34679b0ab7..2bae8eaf49 100644 --- a/src/panels/lovelace/editor/config-util.ts +++ b/src/panels/lovelace/editor/config-util.ts @@ -1,6 +1,6 @@ import { - LovelaceConfig, LovelaceCardConfig, + LovelaceConfig, LovelaceViewConfig, } from "../../../data/lovelace"; diff --git a/src/panels/lovelace/editor/delete-card.ts b/src/panels/lovelace/editor/delete-card.ts index 10ea035d15..ebbd6a71bf 100644 --- a/src/panels/lovelace/editor/delete-card.ts +++ b/src/panels/lovelace/editor/delete-card.ts @@ -1,9 +1,9 @@ -import { Lovelace } from "../types"; -import { deleteCard, insertCard } from "./config-util"; import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import { HomeAssistant } from "../../../types"; -import { showDeleteCardDialog } from "./card-editor/show-delete-card-dialog"; import { showDeleteSuccessToast } from "../../../util/toast-deleted-success"; +import { Lovelace } from "../types"; +import { showDeleteCardDialog } from "./card-editor/show-delete-card-dialog"; +import { deleteCard, insertCard } from "./config-util"; export async function confDeleteCard( element: HTMLElement, diff --git a/src/panels/lovelace/editor/get-card-stub-config.ts b/src/panels/lovelace/editor/get-card-stub-config.ts index fce349e1f4..a6352787e4 100644 --- a/src/panels/lovelace/editor/get-card-stub-config.ts +++ b/src/panels/lovelace/editor/get-card-stub-config.ts @@ -1,5 +1,5 @@ -import { HomeAssistant } from "../../../types"; import { LovelaceCardConfig } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; import { getCardElementClass } from "../create-element/create-card-element"; export const getCardStubConfig = async ( diff --git a/src/panels/lovelace/editor/hui-badge-preview.ts b/src/panels/lovelace/editor/hui-badge-preview.ts index b8d0dc728d..055ba85cd4 100644 --- a/src/panels/lovelace/editor/hui-badge-preview.ts +++ b/src/panels/lovelace/editor/hui-badge-preview.ts @@ -1,16 +1,17 @@ -import { HomeAssistant } from "../../../types"; -import { LovelaceBadgeConfig } from "../../../data/lovelace"; -import { ConfigError } from "./types"; import { computeRTL } from "../../../common/util/compute_rtl"; -import { LovelaceBadge } from "../types"; -import { createBadgeElement } from "../create-element/create-badge-element"; -import { createErrorBadgeConfig } from "../badges/hui-error-badge"; - import "../../../components/entity/ha-state-label-badge"; +import { LovelaceBadgeConfig } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { createErrorBadgeConfig } from "../badges/hui-error-badge"; +import { createBadgeElement } from "../create-element/create-badge-element"; +import { LovelaceBadge } from "../types"; +import { ConfigError } from "./types"; export class HuiBadgePreview extends HTMLElement { private _hass?: HomeAssistant; + private _element?: LovelaceBadge; + private _config?: LovelaceBadgeConfig; private get _error() { diff --git a/src/panels/lovelace/editor/hui-dialog-save-config.ts b/src/panels/lovelace/editor/hui-dialog-save-config.ts index b092a0ee44..30f60d2a04 100644 --- a/src/panels/lovelace/editor/hui-dialog-save-config.ts +++ b/src/panels/lovelace/editor/hui-dialog-save-config.ts @@ -1,26 +1,24 @@ +import "@material/mwc-button"; +import "@polymer/paper-spinner/paper-spinner"; import { - html, css, - LitElement, - TemplateResult, CSSResult, customElement, + html, + LitElement, property, query, + TemplateResult, } from "lit-element"; -import "@polymer/paper-spinner/paper-spinner"; +import { fireEvent } from "../../../common/dom/fire_event"; import "../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../components/dialog/ha-paper-dialog"; import "../../../components/ha-switch"; import "../../../components/ha-yaml-editor"; -// tslint:disable-next-line:no-duplicate-imports -import { HaPaperDialog } from "../../../components/dialog/ha-paper-dialog"; -import "@material/mwc-button"; - +import type { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; -import { HomeAssistant } from "../../../types"; -import { SaveDialogParams } from "./show-save-config-dialog"; -import { PolymerChangedEvent } from "../../../polymer-types"; -import { fireEvent } from "../../../common/dom/fire_event"; +import type { HomeAssistant } from "../../../types"; +import type { SaveDialogParams } from "./show-save-config-dialog"; const EMPTY_CONFIG = { views: [] }; @@ -29,9 +27,11 @@ export class HuiSaveConfig extends LitElement { @property() public hass?: HomeAssistant; @property() private _params?: SaveDialogParams; + @property() private _emptyConfig = false; @property() private _saving: boolean; + @query("ha-paper-dialog") private _dialog?: HaPaperDialog; public constructor() { diff --git a/src/panels/lovelace/editor/lovelace-editor/hui-dialog-edit-lovelace.ts b/src/panels/lovelace/editor/lovelace-editor/hui-dialog-edit-lovelace.ts index 8fe4a68a42..c0d4b0dedc 100644 --- a/src/panels/lovelace/editor/lovelace-editor/hui-dialog-edit-lovelace.ts +++ b/src/panels/lovelace/editor/lovelace-editor/hui-dialog-edit-lovelace.ts @@ -1,25 +1,22 @@ -import { - html, - css, - LitElement, - TemplateResult, - CSSResult, - customElement, - property, -} from "lit-element"; -import "@polymer/paper-spinner/paper-spinner"; -import "../../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line:no-duplicate-imports -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; import "@material/mwc-button"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; - +import "@polymer/paper-spinner/paper-spinner"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import type { LovelaceConfig } from "../../../../data/lovelace"; import { haStyleDialog } from "../../../../resources/styles"; - +import type { HomeAssistant } from "../../../../types"; +import type { Lovelace } from "../../types"; import "./hui-lovelace-editor"; -import { HomeAssistant } from "../../../../types"; -import { LovelaceConfig } from "../../../../data/lovelace"; -import { Lovelace } from "../../types"; @customElement("hui-dialog-edit-lovelace") export class HuiDialogEditLovelace extends LitElement { diff --git a/src/panels/lovelace/editor/lovelace-editor/hui-lovelace-editor.ts b/src/panels/lovelace/editor/lovelace-editor/hui-lovelace-editor.ts index fb0e945d41..1163f71680 100644 --- a/src/panels/lovelace/editor/lovelace-editor/hui-lovelace-editor.ts +++ b/src/panels/lovelace/editor/lovelace-editor/hui-lovelace-editor.ts @@ -1,18 +1,16 @@ +import "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import { EditorTarget } from "../types"; -import { HomeAssistant } from "../../../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "../config-elements/config-elements-style"; - import { LovelaceConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import { configElementStyle } from "../config-elements/config-elements-style"; +import { EditorTarget } from "../types"; declare global { interface HASSDomEvents { diff --git a/src/panels/lovelace/editor/select-view/hui-dialog-select-view.ts b/src/panels/lovelace/editor/select-view/hui-dialog-select-view.ts index ed7cefdc42..9aae8ec878 100644 --- a/src/panels/lovelace/editor/select-view/hui-dialog-select-view.ts +++ b/src/panels/lovelace/editor/select-view/hui-dialog-select-view.ts @@ -1,20 +1,16 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; - -import "../../../../components/dialog/ha-paper-dialog"; import { toggleAttribute } from "../../../../common/dom/toggle_attribute"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import type { PolymerChangedEvent } from "../../../../polymer-types"; import "../../components/hui-views-list"; - -// tslint:disable-next-line:no-duplicate-imports -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; - -import { SelectViewDialogParams } from "./show-select-view-dialog"; -import { PolymerChangedEvent } from "../../../../polymer-types"; +import type { SelectViewDialogParams } from "./show-select-view-dialog"; @customElement("hui-dialog-select-view") export class HuiDialogSelectView extends LitElement { diff --git a/src/panels/lovelace/editor/types.ts b/src/panels/lovelace/editor/types.ts index 7dda045726..b9a79c53f1 100644 --- a/src/panels/lovelace/editor/types.ts +++ b/src/panels/lovelace/editor/types.ts @@ -1,12 +1,11 @@ import { + ActionConfig, LovelaceCardConfig, LovelaceViewConfig, - ActionConfig, ShowViewConfig, } from "../../../data/lovelace"; -import { EntityConfig } from "../entity-rows/types"; -import { InputType } from "zlib"; import { struct } from "../common/structs/struct"; +import { EntityConfig } from "../entity-rows/types"; export interface YamlChangedEvent extends Event { detail: { @@ -51,7 +50,7 @@ export interface EditorTarget extends EventTarget { index?: number; checked?: boolean; configValue?: string; - type?: InputType; + type?: HTMLInputElement["type"]; config: ActionConfig; } diff --git a/src/panels/lovelace/editor/unused-entities/hui-unused-entities.ts b/src/panels/lovelace/editor/unused-entities/hui-unused-entities.ts index 5e3211039f..2c17ab3ea0 100644 --- a/src/panels/lovelace/editor/unused-entities/hui-unused-entities.ts +++ b/src/panels/lovelace/editor/unused-entities/hui-unused-entities.ts @@ -1,40 +1,32 @@ import { - html, - LitElement, - TemplateResult, - PropertyValues, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, } from "lit-element"; - import { classMap } from "lit-html/directives/class-map"; - import memoizeOne from "memoize-one"; - -import "../../../../components/ha-fab"; -import "../../../../components/entity/state-badge"; -import "../../../../components/ha-relative-time"; -import "../../../../components/ha-icon"; - -import "../../../../components/data-table/ha-data-table"; -// tslint:disable-next-line -import { - SelectionChangedEvent, - DataTableColumnContainer, -} from "../../../../components/data-table/ha-data-table"; - -import { computeStateName } from "../../../../common/entity/compute_state_name"; -import { computeDomain } from "../../../../common/entity/compute_domain"; - -import { computeRTL } from "../../../../common/util/compute_rtl"; -import { computeUnusedEntities } from "../../common/compute-unused-entities"; - -import { HomeAssistant } from "../../../../types"; -import { Lovelace } from "../../types"; -import { LovelaceConfig } from "../../../../data/lovelace"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; +import { computeDomain } from "../../../../common/entity/compute_domain"; +import { computeStateName } from "../../../../common/entity/compute_state_name"; +import { computeRTL } from "../../../../common/util/compute_rtl"; +import "../../../../components/data-table/ha-data-table"; +import type { + DataTableColumnContainer, + SelectionChangedEvent, +} from "../../../../components/data-table/ha-data-table"; +import "../../../../components/entity/state-badge"; +import "../../../../components/ha-fab"; +import "../../../../components/ha-icon"; +import "../../../../components/ha-relative-time"; +import type { LovelaceConfig } from "../../../../data/lovelace"; +import type { HomeAssistant } from "../../../../types"; +import { computeUnusedEntities } from "../../common/compute-unused-entities"; +import type { Lovelace } from "../../types"; import { addEntitiesToLovelaceView } from "../add-entities-to-view"; @customElement("hui-unused-entities") diff --git a/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts b/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts index 44ae74d34b..b8616528af 100644 --- a/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts +++ b/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts @@ -1,13 +1,12 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; - -import { HomeAssistant } from "../../../../types"; import { HASSDomEvent } from "../../../../common/dom/fire_event"; +import { HomeAssistant } from "../../../../types"; import "./hui-edit-view"; import { EditViewDialogParams } from "./show-edit-view-dialog"; diff --git a/src/panels/lovelace/editor/view-editor/hui-edit-view.ts b/src/panels/lovelace/editor/view-editor/hui-edit-view.ts index 041bbf3f9d..3dbf9d8176 100644 --- a/src/panels/lovelace/editor/view-editor/hui-edit-view.ts +++ b/src/panels/lovelace/editor/view-editor/hui-edit-view.ts @@ -1,49 +1,45 @@ -import { - html, - css, - LitElement, - TemplateResult, - CSSResult, - customElement, - property, -} from "lit-element"; - +import "@material/mwc-button"; +import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; +import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-spinner/paper-spinner"; import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tabs"; -import "@polymer/paper-icon-button/paper-icon-button.js"; -import "../../../../components/dialog/ha-paper-dialog"; -// tslint:disable-next-line:no-duplicate-imports -import { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; -import "@material/mwc-button"; -import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; - -import { haStyleDialog } from "../../../../resources/styles"; - -import "../../components/hui-entity-editor"; -import "./hui-view-editor"; -import "./hui-view-visibility-editor"; -import "../hui-badge-preview"; -import { HomeAssistant } from "../../../../types"; import { - LovelaceViewConfig, - LovelaceCardConfig, - LovelaceBadgeConfig, -} from "../../../../data/lovelace"; + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; +import { navigate } from "../../../../common/navigate"; +import "../../../../components/dialog/ha-paper-dialog"; +import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; +import type { + LovelaceBadgeConfig, + LovelaceCardConfig, + LovelaceViewConfig, +} from "../../../../data/lovelace"; +import { + showAlertDialog, + showConfirmationDialog, +} from "../../../../dialogs/generic/show-dialog-box"; +import { haStyleDialog } from "../../../../resources/styles"; +import type { HomeAssistant } from "../../../../types"; +import "../../components/hui-entity-editor"; +import type { Lovelace } from "../../types"; +import { addView, deleteView, replaceView } from "../config-util"; +import "../hui-badge-preview"; +import { processEditorEntities } from "../process-editor-entities"; import { EntitiesEditorEvent, ViewEditEvent, ViewVisibilityChangeEvent, } from "../types"; -import { processEditorEntities } from "../process-editor-entities"; -import { navigate } from "../../../../common/navigate"; -import { Lovelace } from "../../types"; -import { deleteView, addView, replaceView } from "../config-util"; -import { - showAlertDialog, - showConfirmationDialog, -} from "../../../../dialogs/generic/show-dialog-box"; +import "./hui-view-editor"; +import "./hui-view-visibility-editor"; @customElement("hui-edit-view") export class HuiEditView extends LitElement { @@ -155,9 +151,7 @@ export class HuiEditView extends LitElement { `; break; case "tab-cards": - content = html` - Cards - `; + content = html` Cards `; break; } return html` diff --git a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts index baeb0aa393..77e66babe7 100644 --- a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts +++ b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts @@ -1,23 +1,21 @@ +import "@polymer/paper-input/paper-input"; import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - customElement, property, - CSSResult, - css, + TemplateResult, } from "lit-element"; -import "@polymer/paper-input/paper-input"; - -import { EditorTarget } from "../types"; -import { HomeAssistant } from "../../../../types"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { configElementStyle } from "../config-elements/config-elements-style"; -import { LovelaceViewConfig } from "../../../../data/lovelace"; import { slugify } from "../../../../common/string/slugify"; - -import "../../components/hui-theme-select-editor"; import "../../../../components/ha-switch"; +import { LovelaceViewConfig } from "../../../../data/lovelace"; +import { HomeAssistant } from "../../../../types"; +import "../../components/hui-theme-select-editor"; +import { configElementStyle } from "../config-elements/config-elements-style"; +import { EditorTarget } from "../types"; declare global { interface HASSDomEvents { @@ -30,8 +28,11 @@ declare global { @customElement("hui-view-editor") export class HuiViewEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public isNew!: boolean; + @property() private _config!: LovelaceViewConfig; + private _suggestedPath = false; get _path(): string { diff --git a/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts b/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts index b13c01cab9..361a28ba73 100644 --- a/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts +++ b/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts @@ -1,24 +1,22 @@ -import { - html, - LitElement, - TemplateResult, - customElement, - property, - PropertyValues, - CSSResult, - css, -} from "lit-element"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; - -import { HomeAssistant } from "../../../../types"; -import { fireEvent } from "../../../../common/dom/fire_event"; -import { LovelaceViewConfig, ShowViewConfig } from "../../../../data/lovelace"; - -import { fetchUsers, User } from "../../../../data/user"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import memoizeOne from "memoize-one"; +import { fireEvent } from "../../../../common/dom/fire_event"; import { compare } from "../../../../common/string/compare"; import { HaSwitch } from "../../../../components/ha-switch"; +import { LovelaceViewConfig, ShowViewConfig } from "../../../../data/lovelace"; +import { fetchUsers, User } from "../../../../data/user"; +import { HomeAssistant } from "../../../../types"; declare global { interface HASSDomEvents { @@ -37,8 +35,11 @@ export class HuiViewVisibilityEditor extends LitElement { } @property() public hass!: HomeAssistant; + @property() public _config!: LovelaceViewConfig; + @property() private _users!: User[]; + @property() private _visible!: boolean | ShowViewConfig[]; private _sortedUsers = memoizeOne((users: User[]) => { diff --git a/src/panels/lovelace/editor/view-editor/show-edit-view-dialog.ts b/src/panels/lovelace/editor/view-editor/show-edit-view-dialog.ts index f2700da45e..c752aa3eb2 100644 --- a/src/panels/lovelace/editor/view-editor/show-edit-view-dialog.ts +++ b/src/panels/lovelace/editor/view-editor/show-edit-view-dialog.ts @@ -1,4 +1,4 @@ -import { HASSDomEvent, fireEvent } from "../../../../common/dom/fire_event"; +import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; import { Lovelace } from "../../types"; declare global { diff --git a/src/panels/lovelace/elements/hui-conditional-element.ts b/src/panels/lovelace/elements/hui-conditional-element.ts index 648c15af40..661098f4d4 100644 --- a/src/panels/lovelace/elements/hui-conditional-element.ts +++ b/src/panels/lovelace/elements/hui-conditional-element.ts @@ -1,18 +1,20 @@ +import { HomeAssistant } from "../../../types"; +import { createStyledHuiElement } from "../cards/picture-elements/create-styled-hui-element"; import { checkConditionsMet, validateConditionalConfig, -} from "../../lovelace/common/validate-condition"; -import { createStyledHuiElement } from "../cards/picture-elements/create-styled-hui-element"; +} from "../common/validate-condition"; import { + ConditionalElementConfig, LovelaceElement, LovelaceElementConfig, - ConditionalElementConfig, } from "./types"; -import { HomeAssistant } from "../../../types"; class HuiConditionalElement extends HTMLElement implements LovelaceElement { public _hass?: HomeAssistant; + private _config?: ConditionalElementConfig; + private _elements: LovelaceElement[] = []; public setConfig(config: ConditionalElementConfig): void { @@ -27,7 +29,7 @@ class HuiConditionalElement extends HTMLElement implements LovelaceElement { } if (this._elements.length > 0) { - this._elements.map((el: LovelaceElement) => { + this._elements.forEach((el: LovelaceElement) => { if (el.parentElement) { el.parentElement.removeChild(el); } @@ -38,7 +40,7 @@ class HuiConditionalElement extends HTMLElement implements LovelaceElement { this._config = config; - this._config.elements.map((elementConfig: LovelaceElementConfig) => { + this._config.elements.forEach((elementConfig: LovelaceElementConfig) => { this._elements.push(createStyledHuiElement(elementConfig)); }); @@ -58,7 +60,7 @@ class HuiConditionalElement extends HTMLElement implements LovelaceElement { const visible = checkConditionsMet(this._config.conditions, this._hass); - this._elements.map((el: LovelaceElement) => { + this._elements.forEach((el: LovelaceElement) => { if (visible) { el.hass = this._hass; if (!el.parentElement) { diff --git a/src/panels/lovelace/elements/hui-icon-element.ts b/src/panels/lovelace/elements/hui-icon-element.ts index 17310b4c2e..5acfffce73 100644 --- a/src/panels/lovelace/elements/hui-icon-element.ts +++ b/src/panels/lovelace/elements/hui-icon-element.ts @@ -1,27 +1,26 @@ import { - html, - LitElement, - TemplateResult, - property, css, CSSResult, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - import "../../../components/ha-icon"; - -import { computeTooltip } from "../common/compute-tooltip"; -import { LovelaceElement, IconElementConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { computeTooltip } from "../common/compute-tooltip"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { IconElementConfig, LovelaceElement } from "./types"; @customElement("hui-icon-element") export class HuiIconElement extends LitElement implements LovelaceElement { public hass?: HomeAssistant; + @property() private _config?: IconElementConfig; public setConfig(config: IconElementConfig): void { diff --git a/src/panels/lovelace/elements/hui-image-element.ts b/src/panels/lovelace/elements/hui-image-element.ts index 07279d200c..9192007704 100644 --- a/src/panels/lovelace/elements/hui-image-element.ts +++ b/src/panels/lovelace/elements/hui-image-element.ts @@ -1,27 +1,26 @@ import { - html, - LitElement, - TemplateResult, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - -import "../components/hui-image"; - -import { computeTooltip } from "../common/compute-tooltip"; -import { LovelaceElement, ImageElementConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { computeTooltip } from "../common/compute-tooltip"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import "../components/hui-image"; +import { ImageElementConfig, LovelaceElement } from "./types"; @customElement("hui-image-element") export class HuiImageElement extends LitElement implements LovelaceElement { @property() public hass?: HomeAssistant; + @property() private _config?: ImageElementConfig; public setConfig(config: ImageElementConfig): void { @@ -29,6 +28,7 @@ export class HuiImageElement extends LitElement implements LovelaceElement { throw Error("Error in element configuration"); } + // eslint-disable-next-line wc/no-self-class this.classList.toggle( "clickable", config.tap_action && config.tap_action.action !== "none" diff --git a/src/panels/lovelace/elements/hui-service-button-element.ts b/src/panels/lovelace/elements/hui-service-button-element.ts index 5558a7b0c6..b6acdcb407 100644 --- a/src/panels/lovelace/elements/hui-service-button-element.ts +++ b/src/panels/lovelace/elements/hui-service-button-element.ts @@ -1,24 +1,25 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, property, - customElement, - CSSResult, - css, + TemplateResult, } from "lit-element"; - import "../../../components/buttons/ha-call-service-button"; - -import { LovelaceElement, ServiceButtonElementConfig } from "./types"; import { HomeAssistant } from "../../../types"; +import { LovelaceElement, ServiceButtonElementConfig } from "./types"; @customElement("hui-service-button-element") export class HuiServiceButtonElement extends LitElement implements LovelaceElement { public hass?: HomeAssistant; + @property() private _config?: ServiceButtonElementConfig; + private _domain?: string; + private _service?: string; static get properties() { diff --git a/src/panels/lovelace/elements/hui-state-badge-element.ts b/src/panels/lovelace/elements/hui-state-badge-element.ts index 2f9d24a219..a07334619c 100644 --- a/src/panels/lovelace/elements/hui-state-badge-element.ts +++ b/src/panels/lovelace/elements/hui-state-badge-element.ts @@ -1,29 +1,28 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, PropertyValues, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - -import "../../../components/entity/ha-state-label-badge"; -import "../components/hui-warning-element"; - import { computeStateName } from "../../../common/entity/compute_state_name"; -import { LovelaceElement, StateBadgeElementConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; +import "../../../components/entity/ha-state-label-badge"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning-element"; +import { LovelaceElement, StateBadgeElementConfig } from "./types"; @customElement("hui-state-badge-element") export class HuiStateBadgeElement extends LitElement implements LovelaceElement { @property() public hass?: HomeAssistant; + @property() private _config?: StateBadgeElementConfig; public setConfig(config: StateBadgeElementConfig): void { diff --git a/src/panels/lovelace/elements/hui-state-icon-element.ts b/src/panels/lovelace/elements/hui-state-icon-element.ts index e2d2e3084f..73497579e8 100644 --- a/src/panels/lovelace/elements/hui-state-icon-element.ts +++ b/src/panels/lovelace/elements/hui-state-icon-element.ts @@ -1,30 +1,29 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - import "../../../components/entity/state-badge"; -import "../components/hui-warning-element"; - -import { computeTooltip } from "../common/compute-tooltip"; -import { LovelaceElement, StateIconElementConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { computeTooltip } from "../common/compute-tooltip"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning-element"; +import { LovelaceElement, StateIconElementConfig } from "./types"; @customElement("hui-state-icon-element") export class HuiStateIconElement extends LitElement implements LovelaceElement { @property() public hass?: HomeAssistant; + @property() private _config?: StateIconElementConfig; public setConfig(config: StateIconElementConfig): void { diff --git a/src/panels/lovelace/elements/hui-state-label-element.ts b/src/panels/lovelace/elements/hui-state-label-element.ts index 93aa196d33..a43cc7f9ff 100644 --- a/src/panels/lovelace/elements/hui-state-label-element.ts +++ b/src/panels/lovelace/elements/hui-state-label-element.ts @@ -1,30 +1,29 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; - -import "../components/hui-warning-element"; - import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { computeTooltip } from "../common/compute-tooltip"; -import { LovelaceElement, StateLabelElementConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { computeTooltip } from "../common/compute-tooltip"; +import { actionHandler } from "../common/directives/action-handler-directive"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning-element"; +import { LovelaceElement, StateLabelElementConfig } from "./types"; @customElement("hui-state-label-element") class HuiStateLabelElement extends LitElement implements LovelaceElement { @property() public hass?: HomeAssistant; + @property() private _config?: StateLabelElementConfig; public setConfig(config: StateLabelElementConfig): void { diff --git a/src/panels/lovelace/elements/types.ts b/src/panels/lovelace/elements/types.ts index f12137d58f..46374b34c2 100644 --- a/src/panels/lovelace/elements/types.ts +++ b/src/panels/lovelace/elements/types.ts @@ -1,6 +1,6 @@ +import { ActionConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { Condition } from "../common/validate-condition"; -import { ActionConfig } from "../../../data/lovelace"; interface LovelaceElementConfigBase { type: string; diff --git a/src/panels/lovelace/entity-rows/hui-climate-entity-row.ts b/src/panels/lovelace/entity-rows/hui-climate-entity-row.ts index 9d8b04c1b3..4c36a5723f 100644 --- a/src/panels/lovelace/entity-rows/hui-climate-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-climate-entity-row.ts @@ -1,21 +1,19 @@ import { - html, - LitElement, - TemplateResult, - property, css, CSSResult, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - import "../../../components/ha-climate-state"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-climate-entity-row") class HuiClimateEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-cover-entity-row.ts b/src/panels/lovelace/entity-rows/hui-cover-entity-row.ts index dbd67cb5b2..ee48aa9f10 100644 --- a/src/panels/lovelace/entity-rows/hui-cover-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-cover-entity-row.ts @@ -1,23 +1,21 @@ import { - html, - LitElement, - TemplateResult, - property, css, CSSResult, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; import "../../../components/ha-cover-controls"; import "../../../components/ha-cover-tilt-controls"; -import "../components/hui-warning"; - -import { isTiltOnly } from "../../../util/cover-model"; import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; +import { isTiltOnly } from "../../../util/cover-model"; import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-cover-entity-row") class HuiCoverEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-group-entity-row.ts b/src/panels/lovelace/entity-rows/hui-group-entity-row.ts index f60e6a966d..d34420252b 100644 --- a/src/panels/lovelace/entity-rows/hui-group-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-group-entity-row.ts @@ -1,21 +1,19 @@ import { + customElement, html, LitElement, - TemplateResult, property, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; -import "../../../components/entity/ha-entity-toggle"; -import "../components/hui-warning"; - -import { computeStateDisplay } from "../../../common/entity/compute_state_display"; import { DOMAINS_TOGGLE } from "../../../common/const"; +import { computeStateDisplay } from "../../../common/entity/compute_state_display"; +import "../../../components/entity/ha-entity-toggle"; import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-group-entity-row") class HuiGroupEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts index cab9fb9437..c19ca31356 100644 --- a/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts @@ -1,29 +1,26 @@ import { + customElement, html, LitElement, - TemplateResult, property, PropertyValues, - customElement, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; -import "../../../components/paper-time-input.js"; -// tslint:disable-next-line:no-duplicate-imports -import { PaperTimeInput } from "../../../components/paper-time-input.js"; import "../../../components/ha-date-input"; -// tslint:disable-next-line:no-duplicate-imports -import { HaDateInput } from "../../../components/ha-date-input"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { setInputDateTimeValue } from "../../../data/input_datetime"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; +import type { HaDateInput } from "../../../components/ha-date-input"; +import "../../../components/paper-time-input"; +import type { PaperTimeInput } from "../../../components/paper-time-input"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { setInputDateTimeValue } from "../../../data/input_datetime"; +import type { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import type { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-input-datetime-entity-row") class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { @property() public hass?: HomeAssistant; + @property() private _config?: EntityConfig; public setConfig(config: EntityConfig): void { diff --git a/src/panels/lovelace/entity-rows/hui-input-number-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-number-entity-row.ts index 83d1d096bc..92d55253f7 100644 --- a/src/panels/lovelace/entity-rows/hui-input-number-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-number-entity-row.ts @@ -1,24 +1,22 @@ import { - html, - LitElement, - TemplateResult, - property, - customElement, css, CSSResult, + customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; -import "../../../components/ha-slider"; -import "../components/hui-warning"; - import { computeRTLDirection } from "../../../common/util/compute_rtl"; -import { LovelaceRow, EntityConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { setValue } from "../../../data/input_text"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../../../components/ha-slider"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { setValue } from "../../../data/input_text"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-input-number-entity-row") class HuiInputNumberEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-input-select-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-select-entity-row.ts index f6beceb621..dbcbdd2147 100644 --- a/src/panels/lovelace/entity-rows/hui-input-select-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-select-entity-row.ts @@ -1,38 +1,35 @@ +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-listbox/paper-listbox"; import { - html, - LitElement, - TemplateResult, - property, css, CSSResult, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; -import { ifDefined } from "lit-html/directives/if-defined"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; - -import "../../../components/ha-paper-dropdown-menu"; -import "../../../components/entity/state-badge"; -import "../components/hui-warning"; - -import { computeStateName } from "../../../common/entity/compute_state_name"; - -import { HomeAssistant, InputSelectEntity } from "../../../types"; -import { LovelaceRow } from "./types"; -import { setInputSelectOption } from "../../../data/input_select"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { forwardHaptic } from "../../../data/haptics"; -import { stopPropagation } from "../../../common/dom/stop_propagation"; import { classMap } from "lit-html/directives/class-map"; +import { ifDefined } from "lit-html/directives/if-defined"; import { DOMAINS_HIDE_MORE_INFO } from "../../../common/const"; +import { stopPropagation } from "../../../common/dom/stop_propagation"; import { computeDomain } from "../../../common/entity/compute_domain"; +import { computeStateName } from "../../../common/entity/compute_state_name"; +import "../../../components/entity/state-badge"; +import "../../../components/ha-paper-dropdown-menu"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { forwardHaptic } from "../../../data/haptics"; +import { setInputSelectOption } from "../../../data/input_select"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant, InputSelectEntity } from "../../../types"; import { EntitiesCardEntityConfig } from "../cards/types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; import { handleAction } from "../common/handle-action"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { hasAction } from "../common/has-action"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-warning"; +import { LovelaceRow } from "./types"; @customElement("hui-input-select-entity-row") class HuiInputSelectEntityRow extends LitElement implements LovelaceRow { @@ -104,9 +101,7 @@ class HuiInputSelectEntityRow extends LitElement implements LovelaceRow { ${stateObj.attributes.options ? stateObj.attributes.options.map( - (option) => html` - ${option} - ` + (option) => html` ${option} ` ) : ""} diff --git a/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts index 7515f48499..d2fcf6a71e 100644 --- a/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-text-entity-row.ts @@ -1,21 +1,19 @@ +import { PaperInputElement } from "@polymer/paper-input/paper-input"; import { + customElement, html, LitElement, - TemplateResult, property, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; - +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { setValue } from "../../../data/input_text"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { setValue } from "../../../data/input_text"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-input-text-entity-row") class HuiInputTextEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-lock-entity-row.ts b/src/panels/lovelace/entity-rows/hui-lock-entity-row.ts index 02e06564e1..322ec83208 100644 --- a/src/panels/lovelace/entity-rows/hui-lock-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-lock-entity-row.ts @@ -1,21 +1,19 @@ import { - html, - LitElement, - TemplateResult, - property, css, CSSResult, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-lock-entity-row") class HuiLockEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts index e0b3180095..6dd073cf07 100644 --- a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts @@ -1,46 +1,49 @@ +import "@polymer/paper-icon-button/paper-icon-button"; +import { HassEntity } from "home-assistant-js-websocket"; import { - html, - LitElement, - TemplateResult, css, CSSResult, - property, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; -import "@polymer/paper-icon-button/paper-icon-button"; - -import "../components/hui-generic-entity-row"; -import "../components/hui-warning"; -import "../../../components/ha-slider"; - -import { LovelaceRow, EntityConfig } from "./types"; -import { HomeAssistant } from "../../../types"; -import { HassEntity } from "home-assistant-js-websocket"; import { supportsFeature } from "../../../common/entity/supports-feature"; +import { computeRTLDirection } from "../../../common/util/compute_rtl"; +import { debounce } from "../../../common/util/debounce"; +import "../../../components/ha-slider"; +import { UNAVAILABLE, UNKNOWN } from "../../../data/entity"; import { SUPPORTS_PLAY, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, - SUPPORT_TURN_ON, - SUPPORT_TURN_OFF, SUPPORT_PREVIOUS_TRACK, - SUPPORT_VOLUME_SET, - SUPPORT_VOLUME_MUTE, + SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, SUPPORT_VOLUME_BUTTONS, + SUPPORT_VOLUME_MUTE, + SUPPORT_VOLUME_SET, } from "../../../data/media-player"; +import { HomeAssistant } from "../../../types"; import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { computeRTLDirection } from "../../../common/util/compute_rtl"; -import { debounce } from "../../../common/util/debounce"; -import { UNAVAILABLE, UNKNOWN } from "../../../data/entity"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-media-player-entity-row") class HuiMediaPlayerEntityRow extends LitElement implements LovelaceRow { @property() public hass?: HomeAssistant; + @property() private _config?: EntityConfig; + @property() private _narrow?: boolean = false; + @property() private _veryNarrow?: boolean = false; + private _resizeObserver?: ResizeObserver; + private _debouncedResizeListener = debounce( () => { this._narrow = (this.clientWidth || 0) < 300; @@ -226,7 +229,7 @@ class HuiMediaPlayerEntityRow extends LitElement implements LovelaceRow { return "hass:play"; } - // tslint:disable-next-line:no-bitwise + // eslint-disable-next-line:no-bitwise return supportsFeature(stateObj, SUPPORT_PAUSE) ? "hass:pause" : "hass:stop"; diff --git a/src/panels/lovelace/entity-rows/hui-scene-entity-row.ts b/src/panels/lovelace/entity-rows/hui-scene-entity-row.ts index bbd33c78ba..15b0f77798 100644 --- a/src/panels/lovelace/entity-rows/hui-scene-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-scene-entity-row.ts @@ -1,23 +1,21 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - CSSResult, - css, property, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; import "../../../components/entity/ha-entity-toggle"; -import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, ActionRowConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { activateScene } from "../../../data/scene"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { activateScene } from "../../../data/scene"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { ActionRowConfig, LovelaceRow } from "./types"; @customElement("hui-scene-entity-row") class HuiSceneEntityRow extends LitElement implements LovelaceRow { @@ -63,7 +61,7 @@ class HuiSceneEntityRow extends LitElement implements LovelaceRow { class="text-content" > ${this._config.action_name || - this.hass!.localize("ui.card.scene.activate")} + this.hass!.localize("ui.card.scene.activate")} `; diff --git a/src/panels/lovelace/entity-rows/hui-script-entity-row.ts b/src/panels/lovelace/entity-rows/hui-script-entity-row.ts index d07ad64a58..35413531b0 100644 --- a/src/panels/lovelace/entity-rows/hui-script-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-script-entity-row.ts @@ -1,22 +1,20 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, property, - CSSResult, - css, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; import "../../../components/entity/ha-entity-toggle"; -import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, ActionRowConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { ActionRowConfig, LovelaceRow } from "./types"; @customElement("hui-script-entity-row") class HuiScriptEntityRow extends LitElement implements LovelaceRow { @@ -71,7 +69,7 @@ class HuiScriptEntityRow extends LitElement implements LovelaceRow { class="text-content" > ${this._config.action_name || - this.hass!.localize("ui.card.script.execute")} + this.hass!.localize("ui.card.script.execute")} `} diff --git a/src/panels/lovelace/entity-rows/hui-sensor-entity-row.ts b/src/panels/lovelace/entity-rows/hui-sensor-entity-row.ts index f3f4e6da7e..a842909823 100644 --- a/src/panels/lovelace/entity-rows/hui-sensor-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-sensor-entity-row.ts @@ -1,23 +1,21 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, property, - CSSResult, - css, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - +import { computeStateDisplay } from "../../../common/entity/compute_state_display"; +import { SENSOR_DEVICE_CLASS_TIMESTAMP } from "../../../data/sensor"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-timestamp-display"; import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { SENSOR_DEVICE_CLASS_TIMESTAMP } from "../../../data/sensor"; +import { EntityConfig, LovelaceRow } from "./types"; interface SensorEntityConfig extends EntityConfig { format?: "relative" | "date" | "time" | "datetime"; diff --git a/src/panels/lovelace/entity-rows/hui-text-entity-row.ts b/src/panels/lovelace/entity-rows/hui-text-entity-row.ts index 45ccce5afb..4851f831f2 100644 --- a/src/panels/lovelace/entity-rows/hui-text-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-text-entity-row.ts @@ -1,21 +1,19 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, property, - CSSResult, - css, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; -import "../components/hui-warning"; - import { computeStateDisplay } from "../../../common/entity/compute_state_display"; import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-text-entity-row") class HuiTextEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-timer-entity-row.ts b/src/panels/lovelace/entity-rows/hui-timer-entity-row.ts index 4e5bcb71bb..c2b167119b 100644 --- a/src/panels/lovelace/entity-rows/hui-timer-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-timer-entity-row.ts @@ -1,22 +1,19 @@ +import { HassEntity } from "home-assistant-js-websocket"; import { + customElement, html, LitElement, - TemplateResult, property, PropertyValues, - customElement, + TemplateResult, } from "lit-element"; - +import secondsToDuration from "../../../common/datetime/seconds_to_duration"; +import { timerTimeRemaining } from "../../../common/entity/timer_time_remaining"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-warning"; - -import { timerTimeRemaining } from "../../../common/entity/timer_time_remaining"; -import secondsToDuration from "../../../common/datetime/seconds_to_duration"; - -import { HomeAssistant } from "../../../types"; import { EntityConfig } from "./types"; -import { HassEntity } from "home-assistant-js-websocket"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; @customElement("hui-timer-entity-row") class HuiTimerEntityRow extends LitElement { diff --git a/src/panels/lovelace/entity-rows/hui-toggle-entity-row.ts b/src/panels/lovelace/entity-rows/hui-toggle-entity-row.ts index 56d2339fa1..94efa0b92a 100644 --- a/src/panels/lovelace/entity-rows/hui-toggle-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-toggle-entity-row.ts @@ -1,21 +1,19 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, PropertyValues, + TemplateResult, } from "lit-element"; - -import "../components/hui-generic-entity-row"; -import "../../../components/entity/ha-entity-toggle"; -import "../components/hui-warning"; - import { computeStateDisplay } from "../../../common/entity/compute_state_display"; -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, EntityConfig } from "./types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../../../components/entity/ha-entity-toggle"; import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; +import "../components/hui-generic-entity-row"; +import "../components/hui-warning"; +import { EntityConfig, LovelaceRow } from "./types"; @customElement("hui-toggle-entity-row") class HuiToggleEntityRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/entity-rows/hui-weather-entity-row.ts b/src/panels/lovelace/entity-rows/hui-weather-entity-row.ts index 88a4c01f22..794630aa76 100644 --- a/src/panels/lovelace/entity-rows/hui-weather-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-weather-entity-row.ts @@ -1,32 +1,30 @@ import { - html, - LitElement, - TemplateResult, css, CSSResult, - property, customElement, + html, + LitElement, + property, PropertyValues, + TemplateResult, } from "lit-element"; - import "../../../components/entity/state-badge"; -import "../components/hui-warning"; - -import { LovelaceRow } from "./types"; +import { UNAVAILABLE_STATES } from "../../../data/entity"; +import { + getWeatherUnit, + weatherIcons, + weatherImages, +} from "../../../data/weather"; import { HomeAssistant, WeatherEntity } from "../../../types"; import { EntitiesCardEntityConfig } from "../cards/types"; import { hasConfigOrEntityChanged } from "../common/has-changed"; -import { - weatherIcons, - getWeatherUnit, - weatherImages, -} from "../../../data/weather"; - -import { UNAVAILABLE_STATES } from "../../../data/entity"; +import "../components/hui-warning"; +import { LovelaceRow } from "./types"; @customElement("hui-weather-entity-row") class HuiWeatherEntityRow extends LitElement implements LovelaceRow { @property() public hass?: HomeAssistant; + @property() private _config?: EntitiesCardEntityConfig; public setConfig(config: EntitiesCardEntityConfig): void { diff --git a/src/panels/lovelace/entity-rows/types.ts b/src/panels/lovelace/entity-rows/types.ts index 29b133c336..1407cc4563 100644 --- a/src/panels/lovelace/entity-rows/types.ts +++ b/src/panels/lovelace/entity-rows/types.ts @@ -1,6 +1,6 @@ +import { ActionConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { Condition } from "../common/validate-condition"; -import { ActionConfig } from "../../../data/lovelace"; export interface EntityConfig { entity: string; diff --git a/src/panels/lovelace/ha-panel-lovelace.ts b/src/panels/lovelace/ha-panel-lovelace.ts index 1b30c6938d..b0e1d7a4fc 100644 --- a/src/panels/lovelace/ha-panel-lovelace.ts +++ b/src/panels/lovelace/ha-panel-lovelace.ts @@ -1,31 +1,30 @@ import "@material/mwc-button"; import deepFreeze from "deep-freeze"; - import { + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { + deleteConfig, fetchConfig, + fetchResources, LovelaceConfig, saveConfig, subscribeLovelaceUpdates, WindowWithLovelaceProm, - deleteConfig, - fetchResources, } from "../../data/lovelace"; -import "../../layouts/hass-loading-screen"; import "../../layouts/hass-error-screen"; -import "./hui-root"; +import "../../layouts/hass-loading-screen"; import { HomeAssistant, PanelInfo, Route } from "../../types"; -import { Lovelace } from "./types"; -import { - LitElement, - html, - PropertyValues, - TemplateResult, - property, -} from "lit-element"; -import { showSaveDialog } from "./editor/show-save-config-dialog"; -import { generateLovelaceConfigFromHass } from "./common/generate-lovelace-config"; import { showToast } from "../../util/toast"; +import { generateLovelaceConfigFromHass } from "./common/generate-lovelace-config"; import { loadLovelaceResources } from "./common/load-resources"; +import { showSaveDialog } from "./editor/show-save-config-dialog"; +import "./hui-root"; +import { Lovelace } from "./types"; (window as any).loadCardHelpers = () => import("./custom-card-helpers"); @@ -57,7 +56,9 @@ class LovelacePanel extends LitElement { private mqls?: MediaQueryList[]; private _ignoreNextUpdateEvent = false; + private _fetchConfigOnConnect = false; + private _unsubUpdates?; constructor() { @@ -280,7 +281,7 @@ class LovelacePanel extends LitElement { conf = await confProm!; } catch (err) { if (err.code !== "config_not_found") { - // tslint:disable-next-line + // eslint-disable-next-line console.log(err); this._state = "error"; this._errorMsg = err.message; @@ -354,7 +355,7 @@ class LovelacePanel extends LitElement { this._ignoreNextUpdateEvent = true; await saveConfig(this.hass!, urlPath, newConfig); } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); // Rollback the optimistic update this._updateLovelace({ @@ -376,7 +377,7 @@ class LovelacePanel extends LitElement { this._ignoreNextUpdateEvent = true; await deleteConfig(this.hass!, urlPath); } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); // Rollback the optimistic update this._updateLovelace({ diff --git a/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts b/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts index 0f53f9a1b4..7ff040b071 100644 --- a/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-buttons-header-footer.ts @@ -1,18 +1,16 @@ import { customElement, - LitElement, html, + LitElement, property, TemplateResult, } from "lit-element"; - +import { HomeAssistant } from "../../../types"; +import { processConfigEntities } from "../common/process-config-entities"; import "../components/hui-buttons-base"; - +import { EntityConfig } from "../entity-rows/types"; import { LovelaceHeaderFooter } from "../types"; import { ButtonsHeaderFooterConfig } from "./types"; -import { processConfigEntities } from "../common/process-config-entities"; -import { EntityConfig } from "../entity-rows/types"; -import { HomeAssistant } from "../../../types"; @customElement("hui-buttons-header-footer") export class HuiButtonsHeaderFooter extends LitElement @@ -22,6 +20,7 @@ export class HuiButtonsHeaderFooter extends LitElement } @property() public hass?: HomeAssistant; + private _configEntities?: EntityConfig[]; public setConfig(config: ButtonsHeaderFooterConfig): void { diff --git a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts index 880cb71372..572065d2a6 100644 --- a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts @@ -1,20 +1,18 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, - customElement, property, PropertyValues, - CSSResult, - css, + TemplateResult, } from "lit-element"; - -import "../components/hui-graph-base"; - -import { LovelaceHeaderFooter } from "../types"; import { HomeAssistant } from "../../../types"; -import { GraphHeaderFooterConfig } from "./types"; import { getHistoryCoordinates } from "../common/graph/get-history-coordinates"; +import "../components/hui-graph-base"; +import { LovelaceHeaderFooter } from "../types"; +import { GraphHeaderFooterConfig } from "./types"; const MINUTE = 60000; @@ -26,8 +24,11 @@ export class HuiGraphHeaderFooter extends LitElement } @property() public hass?: HomeAssistant; + @property() protected _config?: GraphHeaderFooterConfig; + @property() private _coordinates?: any; + private _date?: Date; public setConfig(config: GraphHeaderFooterConfig): void { diff --git a/src/panels/lovelace/header-footer/hui-picture-header-footer.ts b/src/panels/lovelace/header-footer/hui-picture-header-footer.ts index 4317df3557..9807c4a0e6 100644 --- a/src/panels/lovelace/header-footer/hui-picture-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-picture-header-footer.ts @@ -1,23 +1,21 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "../../../components/ha-card"; - -import { LovelaceHeaderFooter } from "../types"; -import { HomeAssistant } from "../../../types"; import { classMap } from "lit-html/directives/class-map"; -import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; -import { handleAction } from "../common/handle-action"; import { ifDefined } from "lit-html/directives/if-defined"; +import "../../../components/ha-card"; +import { ActionHandlerEvent } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { actionHandler } from "../common/directives/action-handler-directive"; +import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { LovelaceHeaderFooter } from "../types"; import { PictureHeaderFooterConfig } from "./types"; @customElement("hui-picture-header-footer") @@ -64,7 +62,6 @@ export class HuiPictureHeaderFooter extends LitElement class="${classMap({ clickable, })}" - `; diff --git a/src/panels/lovelace/hui-editor.ts b/src/panels/lovelace/hui-editor.ts index 758ea6911d..8fae98ac7d 100644 --- a/src/panels/lovelace/hui-editor.ts +++ b/src/panels/lovelace/hui-editor.ts @@ -1,38 +1,33 @@ -import { - customElement, - LitElement, - html, - TemplateResult, - CSSResult, - css, - property, -} from "lit-element"; -import { classMap } from "lit-html/directives/class-map"; -import { safeDump, safeLoad } from "js-yaml"; - +import "@material/mwc-button"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; -import "@material/mwc-button"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-spinner/paper-spinner"; - -import { struct } from "./common/structs/struct"; -import { Lovelace } from "./types"; - -import "../../components/ha-icon"; -import { haStyle } from "../../resources/styles"; -import "../../components/ha-code-editor"; -// This is not a duplicate import, one is for types, one is for element. -// tslint:disable-next-line -import { HaCodeEditor } from "../../components/ha-code-editor"; -import { HomeAssistant } from "../../types"; +import { safeDump, safeLoad } from "js-yaml"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; import { computeRTL } from "../../common/util/compute_rtl"; -import { LovelaceConfig } from "../../data/lovelace"; +import "../../components/ha-code-editor"; +import type { HaCodeEditor } from "../../components/ha-code-editor"; +import "../../components/ha-icon"; +import type { LovelaceConfig } from "../../data/lovelace"; import { showAlertDialog, showConfirmationDialog, } from "../../dialogs/generic/show-dialog-box"; +import { haStyle } from "../../resources/styles"; +import type { HomeAssistant } from "../../types"; +import { struct } from "./common/structs/struct"; +import type { Lovelace } from "./types"; const lovelaceStruct = struct.interface({ title: "string?", @@ -42,9 +37,13 @@ const lovelaceStruct = struct.interface({ @customElement("hui-editor") class LovelaceFullConfigEditor extends LitElement { @property() public hass!: HomeAssistant; + @property() public lovelace?: Lovelace; + @property() public closeEditor?: () => void; + @property() private _saving?: boolean; + @property() private _changed?: boolean; private _generation = 1; diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index 484dec9afe..2501ccdf5f 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -1,66 +1,65 @@ -import { - html, - LitElement, - PropertyValues, - TemplateResult, - CSSResult, - css, - property, -} from "lit-element"; -import { classMap } from "lit-html/directives/class-map"; +import "@material/mwc-button"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-scroll-effects/effects/waterfall"; import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/paper-icon-button/paper-icon-button"; -import "@material/mwc-button"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-menu-button/paper-menu-button"; import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tabs"; - +import { + css, + CSSResult, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; +import { classMap } from "lit-html/directives/class-map"; +import memoizeOne from "memoize-one"; +import { isComponentLoaded } from "../../common/config/is_component_loaded"; +import { fireEvent } from "../../common/dom/fire_event"; import scrollToTarget from "../../common/dom/scroll-to-target"; - -import "../../layouts/ha-app-layout"; +import { navigate } from "../../common/navigate"; +import { computeRTLDirection } from "../../common/util/compute_rtl"; +import { debounce } from "../../common/util/debounce"; +import { afterNextRender } from "../../common/util/render-status"; +import "../../components/ha-icon"; import "../../components/ha-paper-icon-button-arrow-next"; import "../../components/ha-paper-icon-button-arrow-prev"; -import "../../components/ha-icon"; -import { debounce } from "../../common/util/debounce"; -import { HomeAssistant } from "../../types"; -import { LovelaceConfig, LovelacePanelConfig } from "../../data/lovelace"; -import { navigate } from "../../common/navigate"; -import { fireEvent } from "../../common/dom/fire_event"; -import { swapView } from "./editor/config-util"; - -import "./views/hui-view"; -// Not a duplicate import, this one is for type -// tslint:disable-next-line -import { HUIView } from "./views/hui-view"; -import "./views/hui-panel-view"; -// tslint:disable-next-line -import { HUIPanelView } from "./views/hui-panel-view"; -import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog"; -import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog"; -import { Lovelace } from "./types"; -import { afterNextRender } from "../../common/util/render-status"; -import { haStyle } from "../../resources/styles"; -import { computeRTLDirection } from "../../common/util/compute_rtl"; -import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-ha-voice-command-dialog"; -import { isComponentLoaded } from "../../common/config/is_component_loaded"; +import type { LovelaceConfig, LovelacePanelConfig } from "../../data/lovelace"; import { showAlertDialog, showConfirmationDialog, } from "../../dialogs/generic/show-dialog-box"; -import memoizeOne from "memoize-one"; +import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-ha-voice-command-dialog"; +import "../../layouts/ha-app-layout"; +import { haStyle } from "../../resources/styles"; +import type { HomeAssistant } from "../../types"; +import { swapView } from "./editor/config-util"; +import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog"; +import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog"; +import type { Lovelace } from "./types"; +import "./views/hui-panel-view"; +import type { HUIPanelView } from "./views/hui-panel-view"; +import { HUIView } from "./views/hui-view"; class HUIRoot extends LitElement { @property() public hass!: HomeAssistant; + @property() public lovelace?: Lovelace; + @property() public columns?: number; + @property() public narrow?: boolean; + @property() public route?: { path: string; prefix: string }; + @property() private _curView?: number | "hass-unused-entities"; + private _viewCache?: { [viewId: string]: HUIView }; private _debouncedConfigChanged: () => void; @@ -102,7 +101,7 @@ class HUIRoot extends LitElement { >
    ${this.config.title || - this.hass!.localize("ui.panel.lovelace.editor.header")} + this.hass!.localize("ui.panel.lovelace.editor.header")} ` : ""} diff --git a/src/panels/lovelace/special-rows/hui-attribute-row.ts b/src/panels/lovelace/special-rows/hui-attribute-row.ts index 289c1f5a64..9a5db8a85f 100644 --- a/src/panels/lovelace/special-rows/hui-attribute-row.ts +++ b/src/panels/lovelace/special-rows/hui-attribute-row.ts @@ -1,24 +1,23 @@ import { + css, + CSSResult, + customElement, html, LitElement, - TemplateResult, property, - CSSResult, - css, - customElement, PropertyValues, + TemplateResult, } from "lit-element"; - +import { HomeAssistant } from "../../../types"; +import { hasConfigOrEntityChanged } from "../common/has-changed"; import "../components/hui-generic-entity-row"; import "../components/hui-warning"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceRow, AttributeRowConfig } from "../entity-rows/types"; -import { hasConfigOrEntityChanged } from "../common/has-changed"; +import { AttributeRowConfig, LovelaceRow } from "../entity-rows/types"; @customElement("hui-attribute-row") class HuiAttributeRow extends LitElement implements LovelaceRow { @property() public hass?: HomeAssistant; + @property() private _config?: AttributeRowConfig; public setConfig(config: AttributeRowConfig): void { diff --git a/src/panels/lovelace/special-rows/hui-button-row.ts b/src/panels/lovelace/special-rows/hui-button-row.ts index 58fa793b62..a0cb5d7af8 100644 --- a/src/panels/lovelace/special-rows/hui-button-row.ts +++ b/src/panels/lovelace/special-rows/hui-button-row.ts @@ -1,26 +1,25 @@ +import "@material/mwc-button"; import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; -import "@material/mwc-button"; - import "../../../components/ha-icon"; - -import { LovelaceRow, ButtonRowConfig } from "../entity-rows/types"; +import { ActionHandlerEvent } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { actionHandler } from "../common/directives/action-handler-directive"; -import { hasAction } from "../common/has-action"; -import { ActionHandlerEvent } from "../../../data/lovelace"; import { handleAction } from "../common/handle-action"; +import { hasAction } from "../common/has-action"; +import { ButtonRowConfig, LovelaceRow } from "../entity-rows/types"; @customElement("hui-button-row") export class HuiButtonRow extends LitElement implements LovelaceRow { public hass?: HomeAssistant; + @property() private _config?: ButtonRowConfig; public setConfig(config: ButtonRowConfig): void { diff --git a/src/panels/lovelace/special-rows/hui-buttons-row.ts b/src/panels/lovelace/special-rows/hui-buttons-row.ts index e685bb0bda..9f7acf77bd 100644 --- a/src/panels/lovelace/special-rows/hui-buttons-row.ts +++ b/src/panels/lovelace/special-rows/hui-buttons-row.ts @@ -1,20 +1,18 @@ import { customElement, - LitElement, html, + LitElement, property, TemplateResult, } from "lit-element"; - +import { HomeAssistant } from "../../../types"; +import { processConfigEntities } from "../common/process-config-entities"; import "../components/hui-buttons-base"; - import { ButtonsRowConfig, EntityConfig, LovelaceRow, } from "../entity-rows/types"; -import { processConfigEntities } from "../common/process-config-entities"; -import { HomeAssistant } from "../../../types"; @customElement("hui-buttons-row") export class HuiButtonsRow extends LitElement implements LovelaceRow { @@ -23,6 +21,7 @@ export class HuiButtonsRow extends LitElement implements LovelaceRow { } @property() public hass?: HomeAssistant; + private _configEntities?: EntityConfig[]; public setConfig(config: ButtonsRowConfig): void { diff --git a/src/panels/lovelace/special-rows/hui-call-service-row.ts b/src/panels/lovelace/special-rows/hui-call-service-row.ts index 7f9fab6051..80a682e70b 100644 --- a/src/panels/lovelace/special-rows/hui-call-service-row.ts +++ b/src/panels/lovelace/special-rows/hui-call-service-row.ts @@ -1,5 +1,4 @@ import { customElement } from "lit-element"; - import { CallServiceConfig } from "../entity-rows/types"; import { HuiButtonRow } from "./hui-button-row"; diff --git a/src/panels/lovelace/special-rows/hui-cast-row.ts b/src/panels/lovelace/special-rows/hui-cast-row.ts index 7abe7d6c23..4b70d198fc 100644 --- a/src/panels/lovelace/special-rows/hui-cast-row.ts +++ b/src/panels/lovelace/special-rows/hui-cast-row.ts @@ -1,23 +1,21 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; import { classMap } from "lit-html/directives/class-map"; - -import { LovelaceRow, CastConfig } from "../entity-rows/types"; -import { HomeAssistant } from "../../../types"; - -import "../../../components/ha-icon"; import { CastManager } from "../../../cast/cast_manager"; import { - ensureConnectedCastSession, castSendShowLovelaceView, + ensureConnectedCastSession, } from "../../../cast/receiver_messages"; +import "../../../components/ha-icon"; +import { HomeAssistant } from "../../../types"; +import { CastConfig, LovelaceRow } from "../entity-rows/types"; @customElement("hui-cast-row") class HuiCastRow extends LitElement implements LovelaceRow { @@ -57,25 +55,19 @@ class HuiCastRow extends LitElement implements LovelaceRow {
    ${this._config.name}
    ${this._noHTTPS - ? html` - Cast requires HTTPS - ` + ? html` Cast requires HTTPS ` : this._castManager === undefined ? html`` : this._castManager === null - ? html` - Cast API unavailable - ` + ? html` Cast API unavailable ` : this._castManager.castState === "NO_DEVICES_AVAILABLE" - ? html` - No devices found - ` + ? html` No devices found ` : html`
    diff --git a/src/panels/lovelace/special-rows/hui-conditional-row.ts b/src/panels/lovelace/special-rows/hui-conditional-row.ts index e735f13870..06364cbef0 100644 --- a/src/panels/lovelace/special-rows/hui-conditional-row.ts +++ b/src/panels/lovelace/special-rows/hui-conditional-row.ts @@ -1,8 +1,7 @@ import { customElement } from "lit-element"; - import { HuiConditionalBase } from "../components/hui-conditional-base"; import { createRowElement } from "../create-element/create-row-element"; -import { LovelaceRow, ConditionalRowConfig } from "../entity-rows/types"; +import { ConditionalRowConfig, LovelaceRow } from "../entity-rows/types"; @customElement("hui-conditional-row") class HuiConditionalRow extends HuiConditionalBase implements LovelaceRow { diff --git a/src/panels/lovelace/special-rows/hui-divider-row.ts b/src/panels/lovelace/special-rows/hui-divider-row.ts index 1738bce7c9..7ee5e22be0 100644 --- a/src/panels/lovelace/special-rows/hui-divider-row.ts +++ b/src/panels/lovelace/special-rows/hui-divider-row.ts @@ -1,13 +1,12 @@ import { + customElement, html, LitElement, - TemplateResult, - customElement, property, + TemplateResult, } from "lit-element"; - -import { LovelaceRow, DividerConfig } from "../entity-rows/types"; import { HomeAssistant } from "../../../types"; +import { DividerConfig, LovelaceRow } from "../entity-rows/types"; @customElement("hui-divider-row") class HuiDividerRow extends LitElement implements LovelaceRow { @@ -40,9 +39,7 @@ class HuiDividerRow extends LitElement implements LovelaceRow { el.style.setProperty(prop, this._config!.style[prop]); }); - return html` - ${el} - `; + return html` ${el} `; } } diff --git a/src/panels/lovelace/special-rows/hui-section-row.ts b/src/panels/lovelace/special-rows/hui-section-row.ts index f0854cf1ca..d671784d2d 100644 --- a/src/panels/lovelace/special-rows/hui-section-row.ts +++ b/src/panels/lovelace/special-rows/hui-section-row.ts @@ -1,17 +1,15 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import { LovelaceRow, SectionConfig } from "../entity-rows/types"; -import { HomeAssistant } from "../../../types"; - import "../../../components/ha-icon"; +import { HomeAssistant } from "../../../types"; +import { LovelaceRow, SectionConfig } from "../entity-rows/types"; @customElement("hui-section-row") class HuiSectionRow extends LitElement implements LovelaceRow { @@ -35,9 +33,7 @@ class HuiSectionRow extends LitElement implements LovelaceRow { return html`
    ${this._config.label - ? html` -
    ${this._config.label}
    - ` + ? html`
    ${this._config.label}
    ` : html``} `; } diff --git a/src/panels/lovelace/special-rows/hui-weblink-row.ts b/src/panels/lovelace/special-rows/hui-weblink-row.ts index 36e09833eb..e510734689 100644 --- a/src/panels/lovelace/special-rows/hui-weblink-row.ts +++ b/src/panels/lovelace/special-rows/hui-weblink-row.ts @@ -1,17 +1,15 @@ import { - html, - LitElement, - TemplateResult, - customElement, - property, css, CSSResult, + customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import { LovelaceRow, WeblinkConfig } from "../entity-rows/types"; -import { HomeAssistant } from "../../../types"; - import "../../../components/ha-icon"; +import { HomeAssistant } from "../../../types"; +import { LovelaceRow, WeblinkConfig } from "../entity-rows/types"; @customElement("hui-weblink-row") class HuiWeblinkRow extends LitElement implements LovelaceRow { diff --git a/src/panels/lovelace/types.ts b/src/panels/lovelace/types.ts index 3a6d042fcf..0799e1c7ea 100644 --- a/src/panels/lovelace/types.ts +++ b/src/panels/lovelace/types.ts @@ -1,13 +1,13 @@ -import { HomeAssistant, Constructor } from "../../types"; import { + LovelaceBadgeConfig, LovelaceCardConfig, LovelaceConfig, - LovelaceBadgeConfig, } from "../../data/lovelace"; +import { Constructor, HomeAssistant } from "../../types"; import { LovelaceHeaderFooterConfig } from "./header-footer/types"; declare global { - // tslint:disable-next-line + // eslint-disable-next-line interface HASSDomEvents { "ll-rebuild": {}; "ll-badge-rebuild": {}; diff --git a/src/panels/lovelace/views/hui-panel-view.ts b/src/panels/lovelace/views/hui-panel-view.ts index 2eeb64a27c..ede0363fb4 100644 --- a/src/panels/lovelace/views/hui-panel-view.ts +++ b/src/panels/lovelace/views/hui-panel-view.ts @@ -1,24 +1,25 @@ import { + customElement, property, PropertyValues, - customElement, UpdatingElement, } from "lit-element"; - import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; - -import { HomeAssistant } from "../../../types"; -import { LovelaceCard, Lovelace } from "../types"; -import { createCardElement } from "../create-element/create-card-element"; import { LovelaceViewConfig } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; +import { createCardElement } from "../create-element/create-card-element"; +import { Lovelace, LovelaceCard } from "../types"; let editCodeLoaded = false; @customElement("hui-panel-view") export class HUIPanelView extends UpdatingElement { @property() public hass?: HomeAssistant; + @property() public lovelace?: Lovelace; + @property() public config?: LovelaceViewConfig; + @property({ type: Number }) public index!: number; protected firstUpdated(changedProperties: PropertyValues): void { diff --git a/src/panels/lovelace/views/hui-view-editable.ts b/src/panels/lovelace/views/hui-view-editable.ts index 4ef6e29420..d32e0774b4 100644 --- a/src/panels/lovelace/views/hui-view-editable.ts +++ b/src/panels/lovelace/views/hui-view-editable.ts @@ -1,3 +1,3 @@ // hui-view dependencies for when in edit mode. -import "../components/hui-card-options"; import "../../../components/ha-fab"; +import "../components/hui-card-options"; diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts index 9ecbeb3163..36601ac268 100644 --- a/src/panels/lovelace/views/hui-view.ts +++ b/src/panels/lovelace/views/hui-view.ts @@ -1,31 +1,28 @@ import { html, LitElement, + property, PropertyValues, TemplateResult, - property, } from "lit-element"; - -import "../../../components/entity/ha-state-label-badge"; // This one is for types - +import { classMap } from "lit-html/directives/class-map"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; - +import { computeRTL } from "../../../common/util/compute_rtl"; +import "../../../components/entity/ha-state-label-badge"; import { - LovelaceViewConfig, - LovelaceCardConfig, LovelaceBadgeConfig, + LovelaceCardConfig, + LovelaceViewConfig, } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; -import { classMap } from "lit-html/directives/class-map"; -import { Lovelace, LovelaceCard, LovelaceBadge } from "../types"; -import { createCardElement } from "../create-element/create-card-element"; -import { computeCardSize } from "../common/compute-card-size"; -import { showEditCardDialog } from "../editor/card-editor/show-edit-card-dialog"; import { HuiErrorCard } from "../cards/hui-error-card"; -import { computeRTL } from "../../../common/util/compute_rtl"; -import { createBadgeElement } from "../create-element/create-badge-element"; +import { computeCardSize } from "../common/compute-card-size"; import { processConfigEntities } from "../common/process-config-entities"; +import { createBadgeElement } from "../create-element/create-badge-element"; +import { createCardElement } from "../create-element/create-card-element"; +import { showEditCardDialog } from "../editor/card-editor/show-edit-card-dialog"; +import { Lovelace, LovelaceBadge, LovelaceCard } from "../types"; let editCodeLoaded = false; @@ -49,10 +46,15 @@ const getColumnIndex = (columnEntityCount: number[], size: number) => { export class HUIView extends LitElement { @property() public hass?: HomeAssistant; + @property() public lovelace?: Lovelace; + @property({ type: Number }) public columns?: number; + @property({ type: Number }) public index?: number; + @property() private _cards: Array = []; + @property() private _badges: LovelaceBadge[] = []; // Public to make demo happy @@ -265,12 +267,12 @@ export class HUIView extends LitElement { const elements: HUIView["_badges"] = []; const badges = processConfigEntities(config.badges as any); - for (const badge of badges) { + badges.forEach((badge) => { const element = createBadgeElement(badge); element.hass = this.hass; elements.push(element); root.appendChild(element); - } + }); this._badges = elements; root.style.display = elements.length > 0 ? "block" : "none"; } diff --git a/src/panels/mailbox/ha-dialog-show-audio-message.js b/src/panels/mailbox/ha-dialog-show-audio-message.js index c381c00e2d..edca1ab439 100644 --- a/src/panels/mailbox/ha-dialog-show-audio-message.js +++ b/src/panels/mailbox/ha-dialog-show-audio-message.js @@ -1,12 +1,11 @@ import "@material/mwc-button"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../resources/ha-style"; import "../../components/dialog/ha-paper-dialog"; - import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../resources/ha-style"; /* * @appliesMixin LocalizeMixin diff --git a/src/panels/mailbox/ha-panel-mailbox.js b/src/panels/mailbox/ha-panel-mailbox.js index f1f3158d53..4d15814302 100644 --- a/src/panels/mailbox/ha-panel-mailbox.js +++ b/src/panels/mailbox/ha-panel-mailbox.js @@ -1,22 +1,21 @@ +import "@material/mwc-button"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; -import "@material/mwc-button"; import "@polymer/paper-input/paper-textarea"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tabs"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../components/ha-menu-button"; -import "../../components/ha-card"; -import "../../resources/ha-style"; - import { formatDateTime } from "../../common/datetime/format_date_time"; -import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../components/ha-card"; +import "../../components/ha-menu-button"; import { EventsMixin } from "../../mixins/events-mixin"; +import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../resources/ha-style"; let registeredDialog = false; @@ -166,12 +165,12 @@ class HaPanelMailbox extends EventsMixin(LocalizeMixin(PolymerElement)) { this.hass.connection .subscribeEvents(this.hassChanged, "mailbox_updated") .then( - function(unsub) { + function (unsub) { this._unsubEvents = unsub; }.bind(this) ); this.computePlatforms().then( - function(platforms) { + function (platforms) { this.platforms = platforms; this.hassChanged(); }.bind(this) @@ -188,7 +187,7 @@ class HaPanelMailbox extends EventsMixin(LocalizeMixin(PolymerElement)) { this._messages = []; } this.getMessages().then( - function(items) { + function (items) { this._messages = items; }.bind(this) ); @@ -222,7 +221,7 @@ class HaPanelMailbox extends EventsMixin(LocalizeMixin(PolymerElement)) { platform: platform, }); } - return platformItems.sort(function(a, b) { + return platformItems.sort(function (a, b) { return new Date(b.timestamp) - new Date(a.timestamp); }); }); diff --git a/src/panels/map/ha-entity-marker.js b/src/panels/map/ha-entity-marker.js index d910b7b3a4..21c399bf62 100644 --- a/src/panels/map/ha-entity-marker.js +++ b/src/panels/map/ha-entity-marker.js @@ -1,7 +1,7 @@ import "@polymer/iron-image/iron-image"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { EventsMixin } from "../../mixins/events-mixin"; /* diff --git a/src/panels/map/ha-panel-map.js b/src/panels/map/ha-panel-map.js index 1c083e4199..2cdb157fb6 100644 --- a/src/panels/map/ha-panel-map.js +++ b/src/panels/map/ha-panel-map.js @@ -1,18 +1,16 @@ import "@polymer/app-layout/app-toolbar/app-toolbar"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../components/ha-menu-button"; -import "../../components/ha-icon"; -import { navigate } from "../../common/navigate"; - -import "./ha-entity-marker"; - +import { setupLeafletMap } from "../../common/dom/setup-leaflet-map"; import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { computeStateName } from "../../common/entity/compute_state_name"; -import LocalizeMixin from "../../mixins/localize-mixin"; -import { setupLeafletMap } from "../../common/dom/setup-leaflet-map"; +import { navigate } from "../../common/navigate"; +import "../../components/ha-icon"; +import "../../components/ha-menu-button"; import { defaultRadiusColor } from "../../data/zone"; +import LocalizeMixin from "../../mixins/localize-mixin"; +import "./ha-entity-marker"; /* * @appliesMixin LocalizeMixin @@ -108,14 +106,14 @@ class HaPanelMap extends LocalizeMixin(PolymerElement) { if (!map) return; if (this._mapItems) { - this._mapItems.forEach(function(marker) { + this._mapItems.forEach(function (marker) { marker.remove(); }); } var mapItems = (this._mapItems = []); if (this._mapZones) { - this._mapZones.forEach(function(marker) { + this._mapZones.forEach(function (marker) { marker.remove(); }); } @@ -190,7 +188,7 @@ class HaPanelMap extends LocalizeMixin(PolymerElement) { var entityPicture = entity.attributes.entity_picture || ""; var entityName = title .split(" ") - .map(function(part) { + .map(function (part) { return part.substr(0, 1); }) .join(""); diff --git a/src/panels/profile/ha-advanced-mode-row.ts b/src/panels/profile/ha-advanced-mode-row.ts index 4393dcc38e..c0d7942c70 100644 --- a/src/panels/profile/ha-advanced-mode-row.ts +++ b/src/panels/profile/ha-advanced-mode-row.ts @@ -1,25 +1,25 @@ import { + css, + CSSResult, + customElement, + html, LitElement, property, TemplateResult, - html, - customElement, - CSSResult, - css, } from "lit-element"; - import "../../components/ha-card"; - -import { HomeAssistant } from "../../types"; import { CoreFrontendUserData, getOptimisticFrontendUserDataCollection, } from "../../data/frontend"; +import { HomeAssistant } from "../../types"; @customElement("ha-advanced-mode-row") class AdvancedModeRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() public coreUserData?: CoreFrontendUserData; protected render(): TemplateResult { diff --git a/src/panels/profile/ha-change-password-card.js b/src/panels/profile/ha-change-password-card.js index 818b256707..93fd8aa26e 100644 --- a/src/panels/profile/ha-change-password-card.js +++ b/src/panels/profile/ha-change-password-card.js @@ -2,11 +2,10 @@ import "@material/mwc-button"; import "@polymer/paper-dialog/paper-dialog"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../components/ha-card"; - import LocalizeMixin from "../../mixins/localize-mixin"; - import "../../resources/ha-style"; /* diff --git a/src/panels/profile/ha-force-narrow-row.ts b/src/panels/profile/ha-force-narrow-row.ts index e2ce307e8a..27da08586d 100644 --- a/src/panels/profile/ha-force-narrow-row.ts +++ b/src/panels/profile/ha-force-narrow-row.ts @@ -1,22 +1,20 @@ import { - LitElement, - TemplateResult, - html, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "./ha-settings-row"; -import "../../components/ha-switch"; - -import { HomeAssistant } from "../../types"; import { fireEvent } from "../../common/dom/fire_event"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../components/ha-switch"; +import "../../components/ha-switch"; +import type { HaSwitch } from "../../components/ha-switch"; +import type { HomeAssistant } from "../../types"; +import "./ha-settings-row"; @customElement("ha-force-narrow-row") class HaForcedNarrowRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; protected render(): TemplateResult { diff --git a/src/panels/profile/ha-long-lived-access-tokens-card.js b/src/panels/profile/ha-long-lived-access-tokens-card.js index ca17ea7f67..5e85907e2d 100644 --- a/src/panels/profile/ha-long-lived-access-tokens-card.js +++ b/src/panels/profile/ha-long-lived-access-tokens-card.js @@ -1,16 +1,14 @@ import "@material/mwc-button"; - import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; -import { EventsMixin } from "../../mixins/events-mixin"; -import LocalizeMixin from "../../mixins/localize-mixin"; import { formatDateTime } from "../../common/datetime/format_date_time"; import "../../components/ha-card"; - -import "../../resources/ha-style"; - -import "./ha-settings-row"; import { showAlertDialog } from "../../dialogs/generic/show-dialog-box"; +import { EventsMixin } from "../../mixins/events-mixin"; +import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../resources/ha-style"; +import "./ha-settings-row"; /* * @appliesMixin EventsMixin diff --git a/src/panels/profile/ha-mfa-module-setup-flow.js b/src/panels/profile/ha-mfa-module-setup-flow.js index 2c6d2e0f54..cfa1d6b578 100644 --- a/src/panels/profile/ha-mfa-module-setup-flow.js +++ b/src/panels/profile/ha-mfa-module-setup-flow.js @@ -2,15 +2,14 @@ import "@material/mwc-button"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-spinner/paper-spinner"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../components/dialog/ha-paper-dialog"; import "../../components/ha-form/ha-form"; import "../../components/ha-markdown"; -import "../../resources/ha-style"; - import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../resources/ha-style"; let instance = 0; diff --git a/src/panels/profile/ha-mfa-modules-card.js b/src/panels/profile/ha-mfa-modules-card.js index 79f50daa14..c3ac5b989e 100644 --- a/src/panels/profile/ha-mfa-modules-card.js +++ b/src/panels/profile/ha-mfa-modules-card.js @@ -1,14 +1,13 @@ import "@material/mwc-button"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "../../components/ha-card"; - -import "../../resources/ha-style"; - import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; +import "../../resources/ha-style"; let registeredDialog = false; diff --git a/src/panels/profile/ha-panel-profile.ts b/src/panels/profile/ha-panel-profile.ts index f30509d8a2..429f2557f2 100644 --- a/src/panels/profile/ha-panel-profile.ts +++ b/src/panels/profile/ha-panel-profile.ts @@ -1,49 +1,51 @@ -import { - LitElement, - TemplateResult, - html, - CSSResultArray, - css, - property, -} from "lit-element"; +import "@material/mwc-button"; import "@polymer/app-layout/app-header-layout/app-header-layout"; import "@polymer/app-layout/app-header/app-header"; -import "@polymer/paper-item/paper-item-body"; -import "@polymer/paper-item/paper-item"; -import "@material/mwc-button"; import "@polymer/app-layout/app-toolbar/app-toolbar"; - -import "./ha-change-password-card"; -import "./ha-mfa-modules-card"; -import "./ha-refresh-tokens-card"; -import "./ha-long-lived-access-tokens-card"; -import "./ha-advanced-mode-row"; -import "./ha-pick-language-row"; -import "./ha-pick-theme-row"; -import "./ha-pick-dashboard-row"; -import "./ha-push-notifications-row"; -import "./ha-force-narrow-row"; -import "./ha-set-vibrate-row"; +import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; +import { UnsubscribeFunc } from "home-assistant-js-websocket"; +import { + css, + CSSResultArray, + html, + LitElement, + property, + TemplateResult, +} from "lit-element"; +import { fireEvent } from "../../common/dom/fire_event"; import "../../components/ha-card"; import "../../components/ha-menu-button"; -import "../../resources/ha-style"; - -import { - getOptimisticFrontendUserDataCollection, - CoreFrontendUserData, -} from "../../data/frontend"; import { isExternal } from "../../data/external"; +import { + CoreFrontendUserData, + getOptimisticFrontendUserDataCollection, +} from "../../data/frontend"; +import { showConfirmationDialog } from "../../dialogs/generic/show-dialog-box"; +import "../../resources/ha-style"; import { haStyle } from "../../resources/styles"; import { HomeAssistant } from "../../types"; -import { fireEvent } from "../../common/dom/fire_event"; -import { UnsubscribeFunc } from "home-assistant-js-websocket"; -import { showConfirmationDialog } from "../../dialogs/generic/show-dialog-box"; +import "./ha-advanced-mode-row"; +import "./ha-change-password-card"; +import "./ha-force-narrow-row"; +import "./ha-long-lived-access-tokens-card"; +import "./ha-mfa-modules-card"; +import "./ha-pick-dashboard-row"; +import "./ha-pick-language-row"; +import "./ha-pick-theme-row"; +import "./ha-push-notifications-row"; +import "./ha-refresh-tokens-card"; +import "./ha-set-vibrate-row"; class HaPanelProfile extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() private _refreshTokens?: unknown[]; + @property() private _coreUserData?: CoreFrontendUserData | null; + private _unsubCoreData?: UnsubscribeFunc; public connectedCallback() { diff --git a/src/panels/profile/ha-pick-dashboard-row.ts b/src/panels/profile/ha-pick-dashboard-row.ts index 138f87177f..53331c5792 100644 --- a/src/panels/profile/ha-pick-dashboard-row.ts +++ b/src/panels/profile/ha-pick-dashboard-row.ts @@ -1,25 +1,25 @@ -import { - LitElement, - TemplateResult, - html, - property, - customElement, - PropertyValues, -} from "lit-element"; - -import "./ha-settings-row"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; +import { + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import "../../components/ha-paper-dropdown-menu"; - -import { HomeAssistant } from "../../types"; -import { LovelaceDashboard, fetchDashboards } from "../../data/lovelace"; +import { fetchDashboards, LovelaceDashboard } from "../../data/lovelace"; import { setDefaultPanel } from "../../data/panel"; +import { HomeAssistant } from "../../types"; +import "./ha-settings-row"; @customElement("ha-pick-dashboard-row") class HaPickDashboardRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; + @property() private _dashboards: LovelaceDashboard[] = []; protected firstUpdated(changedProps: PropertyValues) { diff --git a/src/panels/profile/ha-pick-language-row.js b/src/panels/profile/ha-pick-language-row.js index 7b5c975be1..8ec1ccd6ad 100644 --- a/src/panels/profile/ha-pick-language-row.js +++ b/src/panels/profile/ha-pick-language-row.js @@ -1,13 +1,11 @@ import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../components/ha-paper-dropdown-menu"; - import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; - import "./ha-settings-row"; /* diff --git a/src/panels/profile/ha-pick-theme-row.js b/src/panels/profile/ha-pick-theme-row.js index 8c99823951..9d4f62dec1 100644 --- a/src/panels/profile/ha-pick-theme-row.js +++ b/src/panels/profile/ha-pick-theme-row.js @@ -1,10 +1,9 @@ import "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../../components/ha-paper-dropdown-menu"; - import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; diff --git a/src/panels/profile/ha-push-notifications-row.js b/src/panels/profile/ha-push-notifications-row.js index 90f514662b..ee2019a5b4 100644 --- a/src/panels/profile/ha-push-notifications-row.js +++ b/src/panels/profile/ha-push-notifications-row.js @@ -1,13 +1,11 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/iron-label/iron-label"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import { isComponentLoaded } from "../../common/config/is_component_loaded"; import { pushSupported } from "../../components/ha-push-notifications-toggle"; - import LocalizeMixin from "../../mixins/localize-mixin"; - import "./ha-settings-row"; /* diff --git a/src/panels/profile/ha-refresh-tokens-card.js b/src/panels/profile/ha-refresh-tokens-card.js index d3a4176e35..f3768587ae 100644 --- a/src/panels/profile/ha-refresh-tokens-card.js +++ b/src/panels/profile/ha-refresh-tokens-card.js @@ -1,14 +1,12 @@ import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-tooltip/paper-tooltip"; - -import "../../components/ha-card"; - import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; +import { formatDateTime } from "../../common/datetime/format_date_time"; +import "../../components/ha-card"; import { EventsMixin } from "../../mixins/events-mixin"; import LocalizeMixin from "../../mixins/localize-mixin"; -import { formatDateTime } from "../../common/datetime/format_date_time"; - import "./ha-settings-row"; /* diff --git a/src/panels/profile/ha-set-vibrate-row.ts b/src/panels/profile/ha-set-vibrate-row.ts index c9366daee0..2075b1a4f1 100644 --- a/src/panels/profile/ha-set-vibrate-row.ts +++ b/src/panels/profile/ha-set-vibrate-row.ts @@ -1,23 +1,21 @@ import { - LitElement, - TemplateResult, - html, - property, customElement, + html, + LitElement, + property, + TemplateResult, } from "lit-element"; - -import "./ha-settings-row"; -import "../../components/ha-switch"; - -import { HomeAssistant } from "../../types"; import { fireEvent } from "../../common/dom/fire_event"; -// tslint:disable-next-line: no-duplicate-imports -import { HaSwitch } from "../../components/ha-switch"; +import "../../components/ha-switch"; +import type { HaSwitch } from "../../components/ha-switch"; import { forwardHaptic } from "../../data/haptics"; +import type { HomeAssistant } from "../../types"; +import "./ha-settings-row"; @customElement("ha-set-vibrate-row") class HaSetVibrateRow extends LitElement { @property() public hass!: HomeAssistant; + @property() public narrow!: boolean; protected render(): TemplateResult { diff --git a/src/panels/profile/ha-settings-row.js b/src/panels/profile/ha-settings-row.js index cfdb7b1512..15ddb6c917 100644 --- a/src/panels/profile/ha-settings-row.js +++ b/src/panels/profile/ha-settings-row.js @@ -1,4 +1,5 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; class HaSettingsRow extends PolymerElement { diff --git a/src/panels/shopping-list/ha-panel-shopping-list.js b/src/panels/shopping-list/ha-panel-shopping-list.js index 1ac2c6eec0..6be4c26bff 100644 --- a/src/panels/shopping-list/ha-panel-shopping-list.js +++ b/src/panels/shopping-list/ha-panel-shopping-list.js @@ -5,18 +5,18 @@ import "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item"; +import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-menu-button/paper-menu-button"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../../components/ha-menu-button"; -import "../../components/ha-card"; -import LocalizeMixin from "../../mixins/localize-mixin"; import { isComponentLoaded } from "../../common/config/is_component_loaded"; +import "../../components/ha-card"; +import "../../components/ha-menu-button"; import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-ha-voice-command-dialog"; +import LocalizeMixin from "../../mixins/localize-mixin"; /* * @appliesMixin LocalizeMixin @@ -166,7 +166,7 @@ class HaPanelShoppingList extends LocalizeMixin(PolymerElement) { this.hass.connection .subscribeEvents(this._fetchData, "shopping_list_updated") .then( - function(unsub) { + function (unsub) { this._unsubEvents = unsub; }.bind(this) ); @@ -180,7 +180,7 @@ class HaPanelShoppingList extends LocalizeMixin(PolymerElement) { _fetchData() { this.hass.callApi("get", "shopping_list").then( - function(items) { + function (items) { items.reverse(); this.items = items; }.bind(this) diff --git a/src/resources/codemirror.ts b/src/resources/codemirror.ts index a741a8b157..4fc2764582 100644 --- a/src/resources/codemirror.ts +++ b/src/resources/codemirror.ts @@ -2,8 +2,8 @@ import _CodeMirror, { Editor } from "codemirror"; // @ts-ignore import _codeMirrorCss from "codemirror/lib/codemirror.css"; -import "codemirror/mode/yaml/yaml"; import "codemirror/mode/jinja2/jinja2"; +import "codemirror/mode/yaml/yaml"; import { fireEvent } from "../common/dom/fire_event"; _CodeMirror.commands.save = (cm: Editor) => { diff --git a/src/resources/custom-card-support.ts b/src/resources/custom-card-support.ts index 1ccba106e2..2e33e53552 100644 --- a/src/resources/custom-card-support.ts +++ b/src/resources/custom-card-support.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit-element"; +import { css, html, LitElement } from "lit-element"; (LitElement.prototype as any).html = html; (LitElement.prototype as any).css = css; diff --git a/src/resources/ha-chart-scripts.js b/src/resources/ha-chart-scripts.js index 576e8cd6e8..500c803788 100644 --- a/src/resources/ha-chart-scripts.js +++ b/src/resources/ha-chart-scripts.js @@ -3,7 +3,7 @@ import "chartjs-chart-timeline"; // This function add a new interaction mode to Chart.js that // returns one point for every dataset. -Chart.Interaction.modes.neareach = function(chart, e, options) { +Chart.Interaction.modes.neareach = function (chart, e, options) { const getRange = { x: (a, b) => Math.abs(a.x - b.x), y: (a, b) => Math.abs(a.y - b.y), diff --git a/src/resources/ha-style.ts b/src/resources/ha-style.ts index 778277bf41..8d79a090ad 100644 --- a/src/resources/ha-style.ts +++ b/src/resources/ha-style.ts @@ -1,6 +1,6 @@ import "@polymer/paper-styles/paper-styles"; import "@polymer/polymer/lib/elements/custom-style"; -import { haStyle, haStyleDialog, derivedStyles } from "./styles"; +import { derivedStyles, haStyle, haStyleDialog } from "./styles"; const documentContainer = document.createElement("template"); documentContainer.setAttribute("style", "display: none;"); diff --git a/src/resources/html-import/import-href.js b/src/resources/html-import/import-href.js index 5daf931bf8..32083338c3 100644 --- a/src/resources/html-import/import-href.js +++ b/src/resources/html-import/import-href.js @@ -37,7 +37,7 @@ function whenImportsReady(cb) { * Defaults to `false`. * @return {!HTMLLinkElement} The link element for the URL to be loaded. */ -export const importHref = function(href, onload, onerror, optAsync) { +export const importHref = function (href, onload, onerror, optAsync) { let link /** @type {HTMLLinkElement} */ = document.head.querySelector( 'link[href="' + href + '"][import-href]' ); @@ -55,11 +55,11 @@ export const importHref = function(href, onload, onerror, optAsync) { // NOTE: the link may now be in 3 states: (1) pending insertion, // (2) inflight, (3) already loaded. In each case, we need to add // event listeners to process callbacks. - const cleanup = function() { + const cleanup = function () { link.removeEventListener("load", loadListener); link.removeEventListener("error", errorListener); }; - let loadListener = function(event) { + let loadListener = function (event) { cleanup(); // In case of a successful load, cache the load event on the link so // that it can be used to short-circuit this method in the future when @@ -71,7 +71,7 @@ export const importHref = function(href, onload, onerror, optAsync) { }); } }; - let errorListener = function(event) { + let errorListener = function (event) { cleanup(); // In case of an error, remove the link from the document so that it // will be automatically created again the next time `importHref` is diff --git a/src/resources/html-import/polyfill.js b/src/resources/html-import/polyfill.js index bb357ae2f6..51844ed272 100644 --- a/src/resources/html-import/polyfill.js +++ b/src/resources/html-import/polyfill.js @@ -7,7 +7,7 @@ Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ -(function(q) { +(function (q) { function y(a, b) { if ("function" === typeof window.CustomEvent) return new CustomEvent(a, b); var c = document.createEvent("CustomEvent"); @@ -29,8 +29,8 @@ var b = k(document, "link[rel=import]:not([import-dependency])"), c = b.length; c - ? g(b, function(b) { - return t(b, function() { + ? g(b, function (b) { + return t(b, function () { 0 === --c && a(); }); }) @@ -46,8 +46,8 @@ b(); } function A(a) { - z(function() { - return D(function() { + z(function () { + return D(function () { return a && a(); }); }); @@ -60,7 +60,7 @@ ) (a.__loaded = !0), b && b(); else { - var c = function(d) { + var c = function (d) { a.removeEventListener(d.type, c); a.__loaded = !0; b && b(); @@ -80,22 +80,22 @@ var a = this; this.a = {}; this.b = 0; - this.g = new MutationObserver(function(b) { + this.g = new MutationObserver(function (b) { return a.w(b); }); this.g.observe(document.head, { childList: !0, subtree: !0 }); this.loadImports(document); } function B(a) { - g(k(a, "template"), function(a) { + g(k(a, "template"), function (a) { g( k( a.content, 'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]' ), - function(a) { + function (a) { var b = document.createElement("script"); - g(a.attributes, function(a) { + g(a.attributes, function (a) { return b.setAttribute(a.name, a.value); }); b.textContent = a.textContent; @@ -119,7 +119,7 @@ w = null; !1 === "currentScript" in document && Object.defineProperty(document, "currentScript", { - get: function() { + get: function () { return ( w || ("complete" !== document.readyState @@ -133,7 +133,7 @@ G = /(@import[\s]+(?!url\())([^;]*)(;)/g, H = /(]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g, e = { - u: function(a, b) { + u: function (a, b) { a.href && a.setAttribute("href", e.c(a.getAttribute("href"), b)); a.src && a.setAttribute("src", e.c(a.getAttribute("src"), b)); if ("style" === a.localName) { @@ -141,14 +141,14 @@ a.textContent = e.o(c, b, G); } }, - o: function(a, b, c) { - return a.replace(c, function(a, c, l, g) { + o: function (a, b, c) { + return a.replace(c, function (a, c, l, g) { a = l.replace(/["']/g, ""); b && (a = e.c(a, b)); return c + "'" + a + "'" + g; }); }, - c: function(a, b) { + c: function (a, b) { if (void 0 === e.f) { e.f = !1; try { @@ -172,7 +172,7 @@ }, C = { async: !0, - load: function(a, b, c) { + load: function (a, b, c) { if (a) if (a.match(/^data:/)) { a = a.split(","); @@ -182,7 +182,7 @@ } else { var f = new XMLHttpRequest(); f.open("GET", a, C.async); - f.onload = function() { + f.onload = function () { var a = f.responseURL || f.getResponseHeader("Location"); a && 0 === a.indexOf("/") && @@ -204,13 +204,13 @@ v = /Trident/.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent); - h.prototype.loadImports = function(a) { + h.prototype.loadImports = function (a) { var b = this; - g(k(a, "link[rel=import]"), function(a) { + g(k(a, "link[rel=import]"), function (a) { return b.l(a); }); }; - h.prototype.l = function(a) { + h.prototype.l = function (a) { var b = this, c = a.href; if (void 0 !== this.a[c]) { @@ -221,24 +221,24 @@ (this.a[c] = "pending"), C.load( c, - function(a, d) { + function (a, d) { a = b.A(a, d || c); b.a[c] = a; b.b--; b.loadImports(a); b.m(); }, - function() { + function () { b.a[c] = null; b.b--; b.m(); } ); }; - h.prototype.A = function(a, b) { + h.prototype.A = function (a, b) { if (!a) return document.createDocumentFragment(); v && - (a = a.replace(H, function(a, b, c) { + (a = a.replace(H, function (a, b, c) { return -1 === a.indexOf("type=") ? b + " type=import-disable " + c : a; })); var c = document.createElement("template"); @@ -255,7 +255,7 @@ a, 'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]' ), - function(a) { + function (a) { t(a); e.u(a, b); a.setAttribute("import-dependency", ""); @@ -276,14 +276,14 @@ ); return a; }; - h.prototype.m = function() { + h.prototype.m = function () { var a = this; if (!this.b) { this.g.disconnect(); this.flatten(document); var b = !1, c = !1, - d = function() { + d = function () { c && b && (a.loadImports(document), @@ -291,19 +291,19 @@ (a.g.observe(document.head, { childList: !0, subtree: !0 }), a.v())); }; - this.C(function() { + this.C(function () { c = !0; d(); }); - this.B(function() { + this.B(function () { b = !0; d(); }); } }; - h.prototype.flatten = function(a) { + h.prototype.flatten = function (a) { var b = this; - g(k(a, "link[rel=import]"), function(a) { + g(k(a, "link[rel=import]"), function (a) { var c = b.a[a.href]; (a.__import = c) && c.nodeType === Node.DOCUMENT_FRAGMENT_NODE && @@ -314,18 +314,18 @@ a.appendChild(c)); }); }; - h.prototype.B = function(a) { + h.prototype.B = function (a) { function b(f) { if (f < d) { var l = c[f], e = document.createElement("script"); l.removeAttribute("import-dependency"); - g(l.attributes, function(a) { + g(l.attributes, function (a) { return e.setAttribute(a.name, a.value); }); w = e; l.parentNode.replaceChild(e, l); - t(e, function() { + t(e, function () { w = null; b(f + 1); }); @@ -335,7 +335,7 @@ d = c.length; b(0); }; - h.prototype.C = function(a) { + h.prototype.C = function (a) { var b = k( document, "style[import-dependency],link[rel=stylesheet][import-dependency]" @@ -347,8 +347,8 @@ !!document.querySelector( "link[rel=stylesheet][href][type=import-disable]" ); - g(b, function(b) { - t(b, function() { + g(b, function (b) { + t(b, function () { b.removeAttribute("import-dependency"); 0 === --c && a(); }); @@ -365,17 +365,17 @@ }); } else a(); }; - h.prototype.v = function() { + h.prototype.v = function () { var a = this; g( k(document, "link[rel=import]"), - function(b) { + function (b) { return a.j(b); }, !0 ); }; - h.prototype.j = function(a) { + h.prototype.j = function (a) { a.__loaded || ((a.__loaded = !0), a.import && (a.import.readyState = "complete"), @@ -387,10 +387,10 @@ }) )); }; - h.prototype.w = function(a) { + h.prototype.w = function (a) { var b = this; - g(a, function(a) { - return g(a.addedNodes, function(a) { + g(a, function (a) { + return g(a.addedNodes, function (a) { a && a.nodeType === Node.ELEMENT_NODE && (r(a) ? b.l(a) : b.loadImports(a)); @@ -399,10 +399,10 @@ }; var x = null; if (u) - g(k(document, "link[rel=import]"), function(a) { + g(k(document, "link[rel=import]"), function (a) { (a.import && "loading" === a.import.readyState) || (a.__loaded = !0); }), - (n = function(a) { + (n = function (a) { a = a.target; r(a) && (a.__loaded = !0); }), @@ -414,7 +414,7 @@ (!p || p.configurable ? Node : Element).prototype, "baseURI", { - get: function() { + get: function () { var a = r(this) ? this : m(this); return a ? a.href @@ -427,17 +427,17 @@ } ); Object.defineProperty(HTMLLinkElement.prototype, "import", { - get: function() { + get: function () { return this.__import || null; }, configurable: !0, enumerable: !0, }); - z(function() { + z(function () { x = new h(); }); } - A(function() { + A(function () { return document.dispatchEvent( y("HTMLImportsLoaded", { cancelable: !0, bubbles: !0, detail: void 0 }) ); @@ -445,7 +445,7 @@ q.useNative = u; q.whenReady = A; q.importForElement = m; - q.loadImports = function(a) { + q.loadImports = function (a) { x && x.loadImports(a); }; })((window.HTMLImports = window.HTMLImports || {})); diff --git a/src/state-summary/state-card-climate.js b/src/state-summary/state-card-climate.js index 70cf125569..16e2c17e6e 100644 --- a/src/state-summary/state-card-climate.js +++ b/src/state-summary/state-card-climate.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import "../components/ha-climate-state"; diff --git a/src/state-summary/state-card-configurator.js b/src/state-summary/state-card-configurator.js index 5cc66cf4f5..fe6199c9c3 100644 --- a/src/state-summary/state-card-configurator.js +++ b/src/state-summary/state-card-configurator.js @@ -1,10 +1,9 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; - import LocalizeMixin from "../mixins/localize-mixin"; /* diff --git a/src/state-summary/state-card-content.js b/src/state-summary/state-card-content.js index 61f0d69732..22375c13f7 100644 --- a/src/state-summary/state-card-content.js +++ b/src/state-summary/state-card-content.js @@ -1,5 +1,7 @@ +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - +import dynamicContentUpdater from "../common/dom/dynamic_content_updater"; +import { stateCardType } from "../common/entity/state_card_type"; import "./state-card-climate"; import "./state-card-configurator"; import "./state-card-cover"; @@ -17,9 +19,6 @@ import "./state-card-vacuum"; import "./state-card-water_heater"; import "./state-card-weblink"; -import { stateCardType } from "../common/entity/state_card_type"; -import dynamicContentUpdater from "../common/dom/dynamic_content_updater"; - class StateCardContent extends PolymerElement { static get properties() { return { diff --git a/src/state-summary/state-card-cover.js b/src/state-summary/state-card-cover.js index 2ecb7f66ed..02fc9f246c 100644 --- a/src/state-summary/state-card-cover.js +++ b/src/state-summary/state-card-cover.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import "../components/ha-cover-controls"; import "../components/ha-cover-tilt-controls"; diff --git a/src/state-summary/state-card-display.js b/src/state-summary/state-card-display.js index 76456f4069..1312e5da52 100755 --- a/src/state-summary/state-card-display.js +++ b/src/state-summary/state-card-display.js @@ -1,14 +1,12 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/entity/state-info"; - -import LocalizeMixin from "../mixins/localize-mixin"; - import { attributeClassNames } from "../common/entity/attribute_class_names"; import { computeStateDisplay } from "../common/entity/compute_state_display"; import { computeRTL } from "../common/util/compute_rtl"; +import "../components/entity/state-info"; +import LocalizeMixin from "../mixins/localize-mixin"; /* * @appliesMixin LocalizeMixin diff --git a/src/state-summary/state-card-input_number.js b/src/state-summary/state-card-input_number.js index 6f914e6662..7d974d174c 100644 --- a/src/state-summary/state-card-input_number.js +++ b/src/state-summary/state-card-input_number.js @@ -3,8 +3,8 @@ import { IronResizableBehavior } from "@polymer/iron-resizable-behavior/iron-res import "@polymer/paper-input/paper-input"; import { mixinBehaviors } from "@polymer/polymer/lib/legacy/class"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import "../components/ha-slider"; diff --git a/src/state-summary/state-card-input_select.ts b/src/state-summary/state-card-input_select.ts index 46c8b25e03..5e55755447 100644 --- a/src/state-summary/state-card-input_select.ts +++ b/src/state-summary/state-card-input_select.ts @@ -1,30 +1,28 @@ -import { - LitElement, - customElement, - TemplateResult, - html, - CSSResult, - css, - property, - PropertyValues, -} from "lit-element"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; import "@polymer/paper-item/paper-item"; -// tslint:disable-next-line: no-duplicate-imports -import { PaperItemElement } from "@polymer/paper-item/paper-item"; +import type { PaperItemElement } from "@polymer/paper-item/paper-item"; import "@polymer/paper-listbox/paper-listbox"; - -import "../components/entity/state-badge"; - -import { computeStateName } from "../common/entity/compute_state_name"; -import { HomeAssistant, InputSelectEntity } from "../types"; -import { setInputSelectOption } from "../data/input_select"; -import { PolymerIronSelectEvent } from "../polymer-types"; +import { + css, + CSSResult, + customElement, + html, + LitElement, + property, + PropertyValues, + TemplateResult, +} from "lit-element"; import { stopPropagation } from "../common/dom/stop_propagation"; +import { computeStateName } from "../common/entity/compute_state_name"; +import "../components/entity/state-badge"; +import { setInputSelectOption } from "../data/input_select"; +import type { PolymerIronSelectEvent } from "../polymer-types"; +import type { HomeAssistant, InputSelectEntity } from "../types"; @customElement("state-card-input_select") class StateCardInputSelect extends LitElement { @property() public hass!: HomeAssistant; + @property() public stateObj!: InputSelectEntity; protected render(): TemplateResult { @@ -38,9 +36,7 @@ class StateCardInputSelect extends LitElement { > ${this.stateObj.attributes.options.map( - (option) => html` - ${option} - ` + (option) => html` ${option} ` )} diff --git a/src/state-summary/state-card-input_text.js b/src/state-summary/state-card-input_text.js index 7840133218..3685524f60 100644 --- a/src/state-summary/state-card-input_text.js +++ b/src/state-summary/state-card-input_text.js @@ -1,8 +1,9 @@ +/* eslint-plugin-disable lit */ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/paper-input/paper-input"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; class StateCardInputText extends PolymerElement { diff --git a/src/state-summary/state-card-lock.js b/src/state-summary/state-card-lock.js index a91c11b9e6..d0280b7a1d 100644 --- a/src/state-summary/state-card-lock.js +++ b/src/state-summary/state-card-lock.js @@ -1,10 +1,9 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; - import LocalizeMixin from "../mixins/localize-mixin"; /* diff --git a/src/state-summary/state-card-media_player.js b/src/state-summary/state-card-media_player.js index afc3b97103..048034be74 100644 --- a/src/state-summary/state-card-media_player.js +++ b/src/state-summary/state-card-media_player.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import LocalizeMixin from "../mixins/localize-mixin"; import HassMediaPlayerEntity from "../util/hass-media-player-model"; diff --git a/src/state-summary/state-card-scene.js b/src/state-summary/state-card-scene.js index c26fb49010..c7ece92453 100644 --- a/src/state-summary/state-card-scene.js +++ b/src/state-summary/state-card-scene.js @@ -1,11 +1,11 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; -import LocalizeMixin from "../mixins/localize-mixin"; import { activateScene } from "../data/scene"; +import LocalizeMixin from "../mixins/localize-mixin"; /* * @appliesMixin LocalizeMixin diff --git a/src/state-summary/state-card-script.js b/src/state-summary/state-card-script.js index c15794bb57..462467b363 100644 --- a/src/state-summary/state-card-script.js +++ b/src/state-summary/state-card-script.js @@ -1,11 +1,10 @@ -import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@material/mwc-button"; +import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/ha-entity-toggle"; import "../components/entity/state-info"; - import LocalizeMixin from "../mixins/localize-mixin"; /* diff --git a/src/state-summary/state-card-timer.js b/src/state-summary/state-card-timer.js index 6c803ec6a0..96586e8804 100644 --- a/src/state-summary/state-card-timer.js +++ b/src/state-summary/state-card-timer.js @@ -1,11 +1,10 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/entity/state-info"; - -import { timerTimeRemaining } from "../common/entity/timer_time_remaining"; import secondsToDuration from "../common/datetime/seconds_to_duration"; +import { timerTimeRemaining } from "../common/entity/timer_time_remaining"; +import "../components/entity/state-info"; class StateCardTimer extends PolymerElement { static get template() { diff --git a/src/state-summary/state-card-toggle.js b/src/state-summary/state-card-toggle.js index 391da0dc25..e7136c5776 100644 --- a/src/state-summary/state-card-toggle.js +++ b/src/state-summary/state-card-toggle.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/ha-entity-toggle"; import "../components/entity/state-info"; diff --git a/src/state-summary/state-card-vacuum.js b/src/state-summary/state-card-vacuum.js index 2900d322cd..228ccef009 100644 --- a/src/state-summary/state-card-vacuum.js +++ b/src/state-summary/state-card-vacuum.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import "../components/ha-vacuum-state"; diff --git a/src/state-summary/state-card-water_heater.js b/src/state-summary/state-card-water_heater.js index 92ae779930..672972b9c3 100644 --- a/src/state-summary/state-card-water_heater.js +++ b/src/state-summary/state-card-water_heater.js @@ -1,7 +1,7 @@ import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - import "../components/entity/state-info"; import "../components/ha-water_heater-state"; diff --git a/src/state-summary/state-card-weblink.js b/src/state-summary/state-card-weblink.js index 5c99cf1537..aeb233b61f 100644 --- a/src/state-summary/state-card-weblink.js +++ b/src/state-summary/state-card-weblink.js @@ -1,9 +1,8 @@ import { html } from "@polymer/polymer/lib/utils/html-tag"; +/* eslint-plugin-disable lit */ import { PolymerElement } from "@polymer/polymer/polymer-element"; - -import "../components/entity/state-badge"; - import { computeStateName } from "../common/entity/compute_state_name"; +import "../components/entity/state-badge"; class StateCardWeblink extends PolymerElement { static get template() { @@ -31,9 +30,7 @@ class StateCardWeblink extends PolymerElement { } static get stateBadgeTemplate() { - return html` - - `; + return html` `; } static get properties() { diff --git a/src/state/auth-mixin.ts b/src/state/auth-mixin.ts index f2964fd829..26ef533590 100644 --- a/src/state/auth-mixin.ts +++ b/src/state/auth-mixin.ts @@ -1,8 +1,8 @@ -import { clearState } from "../util/ha-pref-storage"; import { askWrite } from "../common/auth/token_storage"; import { subscribeUser, userCollection } from "../data/ws-user"; -import { HassBaseEl } from "./hass-base-mixin"; import { Constructor } from "../types"; +import { clearState } from "../util/ha-pref-storage"; +import { HassBaseEl } from "./hass-base-mixin"; declare global { // for fire event @@ -49,7 +49,7 @@ export default >(superClass: T) => clearState(); document.location.href = "/"; } catch (err) { - // tslint:disable-next-line + // eslint-disable-next-line console.error(err); alert("Log out failed"); } diff --git a/src/state/connection-mixin.ts b/src/state/connection-mixin.ts index 1c8b8b2fa1..7a8ff2bfba 100644 --- a/src/state/connection-mixin.ts +++ b/src/state/connection-mixin.ts @@ -1,27 +1,25 @@ import { - ERR_INVALID_AUTH, - subscribeEntities, - subscribeConfig, - subscribeServices, - callService, Auth, + callService, Connection, + ERR_INVALID_AUTH, + subscribeConfig, + subscribeEntities, + subscribeServices, } from "home-assistant-js-websocket"; - -import { translationMetadata } from "../resources/translations-metadata"; - -import { getState } from "../util/ha-pref-storage"; -import { getLocalLanguage } from "../util/hass-translation"; -import { fetchWithAuth } from "../util/fetch-with-auth"; -import hassCallApi from "../util/hass-call-api"; -import { subscribePanels } from "../data/ws-panels"; -import { forwardHaptic } from "../data/haptics"; import { fireEvent } from "../common/dom/fire_event"; -import { Constructor, ServiceCallResponse } from "../types"; -import { HassBaseEl } from "./hass-base-mixin"; import { broadcastConnectionStatus } from "../data/connection-status"; import { subscribeFrontendUserData } from "../data/frontend"; +import { forwardHaptic } from "../data/haptics"; import { DEFAULT_PANEL } from "../data/panel"; +import { subscribePanels } from "../data/ws-panels"; +import { translationMetadata } from "../resources/translations-metadata"; +import { Constructor, ServiceCallResponse } from "../types"; +import { fetchWithAuth } from "../util/fetch-with-auth"; +import { getState } from "../util/ha-pref-storage"; +import hassCallApi from "../util/hass-call-api"; +import { getLocalLanguage } from "../util/hass-translation"; +import { HassBaseEl } from "./hass-base-mixin"; export const connectionMixin = >( superClass: T @@ -52,7 +50,7 @@ export const connectionMixin = >( hassUrl: (path = "") => new URL(path, auth.data.hassUrl).toString(), callService: async (domain, service, serviceData = {}) => { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log("Calling service", domain, service, serviceData); } try { @@ -64,7 +62,7 @@ export const connectionMixin = >( )) as Promise; } catch (err) { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.error( "Error calling service", domain, @@ -91,7 +89,7 @@ export const connectionMixin = >( // For messages that do not get a response sendWS: (msg) => { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log("Sending", msg); } conn.sendMessage(msg); @@ -99,7 +97,7 @@ export const connectionMixin = >( // For messages that expect a response callWS: (msg) => { if (__DEV__) { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console console.log("Sending", msg); } @@ -107,9 +105,9 @@ export const connectionMixin = >( if (__DEV__) { resp.then( - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console (result) => console.log("Received", result), - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console (err) => console.error("Error", err) ); } diff --git a/src/state/dialog-manager-mixin.ts b/src/state/dialog-manager-mixin.ts index f6e525b5fc..9d2a4104dd 100644 --- a/src/state/dialog-manager-mixin.ts +++ b/src/state/dialog-manager-mixin.ts @@ -1,7 +1,7 @@ import { HASSDomEvent } from "../common/dom/fire_event"; -import { HassBaseEl } from "./hass-base-mixin"; import { makeDialogManager, showDialog } from "../dialogs/make-dialog-manager"; import { Constructor } from "../types"; +import { HassBaseEl } from "./hass-base-mixin"; interface RegisterDialogParams { dialogShowEvent: keyof HASSDomEvents; diff --git a/src/state/disconnect-toast-mixin.ts b/src/state/disconnect-toast-mixin.ts index 80d4e836d9..006cdad269 100644 --- a/src/state/disconnect-toast-mixin.ts +++ b/src/state/disconnect-toast-mixin.ts @@ -1,6 +1,6 @@ -import { HassBaseEl } from "./hass-base-mixin"; -import { showToast } from "../util/toast"; import { Constructor } from "../types"; +import { showToast } from "../util/toast"; +import { HassBaseEl } from "./hass-base-mixin"; export default >(superClass: T) => class extends superClass { diff --git a/src/state/haptic-mixin.ts b/src/state/haptic-mixin.ts index 3fe9adea69..384c31b9a9 100644 --- a/src/state/haptic-mixin.ts +++ b/src/state/haptic-mixin.ts @@ -1,10 +1,9 @@ import { PropertyValues } from "lit-element"; -import { HassBaseEl } from "./hass-base-mixin"; - -import { HapticType } from "../data/haptics"; -import { HomeAssistant, Constructor } from "../types"; import { HASSDomEvent } from "../common/dom/fire_event"; +import { HapticType } from "../data/haptics"; +import { Constructor, HomeAssistant } from "../types"; import { storeState } from "../util/ha-pref-storage"; +import { HassBaseEl } from "./hass-base-mixin"; interface VibrateParams { vibrate: HomeAssistant["vibrate"]; diff --git a/src/state/hass-base-mixin.ts b/src/state/hass-base-mixin.ts index 34bd9eebae..75c3174dc8 100644 --- a/src/state/hass-base-mixin.ts +++ b/src/state/hass-base-mixin.ts @@ -1,11 +1,13 @@ +import { Auth, Connection } from "home-assistant-js-websocket"; import { LitElement, property } from "lit-element"; import { HomeAssistant } from "../types"; -import { Auth, Connection } from "home-assistant-js-websocket"; export class HassBaseEl extends LitElement { @property() public hass?: HomeAssistant; + protected _pendingHass: Partial = {}; - // tslint:disable-next-line: variable-name + + // eslint-disable-next-line: variable-name private __provideHass: HTMLElement[] = []; public provideHass(el) { @@ -15,24 +17,24 @@ export class HassBaseEl extends LitElement { protected initializeHass(_auth: Auth, _conn: Connection) { // implemented in connection-mixin - // tslint:disable-next-line + // eslint-disable-next-line } // Exists so all methods can safely call super method protected hassConnected() { - // tslint:disable-next-line + // eslint-disable-next-line } protected hassReconnected() { - // tslint:disable-next-line + // eslint-disable-next-line } protected hassDisconnected() { - // tslint:disable-next-line + // eslint-disable-next-line } protected panelUrlChanged(_newPanelUrl) { - // tslint:disable-next-line + // eslint-disable-next-line } protected hassChanged(hass, _oldHass) { diff --git a/src/state/hass-element.ts b/src/state/hass-element.ts index a81856bfd6..977ee68f9d 100644 --- a/src/state/hass-element.ts +++ b/src/state/hass-element.ts @@ -1,18 +1,18 @@ +import { Constructor } from "../types"; import AuthMixin from "./auth-mixin"; -import TranslationsMixin from "./translations-mixin"; -import ThemesMixin from "./themes-mixin"; -import MoreInfoMixin from "./more-info-mixin"; -import ZHADialogMixin from "./zha-dialog-mixin"; -import SidebarMixin from "./sidebar-mixin"; -import { dialogManagerMixin } from "./dialog-manager-mixin"; import { connectionMixin } from "./connection-mixin"; -import NotificationMixin from "./notification-mixin"; +import { dialogManagerMixin } from "./dialog-manager-mixin"; import DisconnectToastMixin from "./disconnect-toast-mixin"; import { hapticMixin } from "./haptic-mixin"; -import { urlSyncMixin } from "./url-sync-mixin"; -import { Constructor } from "../types"; import { HassBaseEl } from "./hass-base-mixin"; +import MoreInfoMixin from "./more-info-mixin"; +import NotificationMixin from "./notification-mixin"; import { panelTitleMixin } from "./panel-title-mixin"; +import SidebarMixin from "./sidebar-mixin"; +import ThemesMixin from "./themes-mixin"; +import TranslationsMixin from "./translations-mixin"; +import { urlSyncMixin } from "./url-sync-mixin"; +import ZHADialogMixin from "./zha-dialog-mixin"; const ext = (baseClass: T, mixins): T => mixins.reduceRight((base, mixin) => mixin(base), baseClass); diff --git a/src/state/more-info-mixin.ts b/src/state/more-info-mixin.ts index 8eea164579..b2d3d852af 100644 --- a/src/state/more-info-mixin.ts +++ b/src/state/more-info-mixin.ts @@ -1,5 +1,5 @@ -import { HassBaseEl } from "./hass-base-mixin"; import { Constructor } from "../types"; +import { HassBaseEl } from "./hass-base-mixin"; declare global { // for fire event diff --git a/src/state/notification-mixin.ts b/src/state/notification-mixin.ts index 7a6d7b4af2..f0a80a1b05 100644 --- a/src/state/notification-mixin.ts +++ b/src/state/notification-mixin.ts @@ -1,5 +1,5 @@ -import { HassBaseEl } from "./hass-base-mixin"; import { Constructor } from "../types"; +import { HassBaseEl } from "./hass-base-mixin"; export default >(superClass: T) => class extends superClass { diff --git a/src/state/panel-title-mixin.ts b/src/state/panel-title-mixin.ts index b6f814a4ff..d6ec6a2f90 100644 --- a/src/state/panel-title-mixin.ts +++ b/src/state/panel-title-mixin.ts @@ -1,6 +1,6 @@ import { getPanelTitle } from "../data/panel"; +import { Constructor, HomeAssistant } from "../types"; import { HassBaseEl } from "./hass-base-mixin"; -import { HomeAssistant, Constructor } from "../types"; const setTitle = (title: string | undefined) => { document.title = title ? `${title} - Home Assistant` : "Home Assistant"; diff --git a/src/state/sidebar-mixin.ts b/src/state/sidebar-mixin.ts index 1e08fc7463..b009bbfcb1 100644 --- a/src/state/sidebar-mixin.ts +++ b/src/state/sidebar-mixin.ts @@ -1,7 +1,7 @@ +import { HASSDomEvent } from "../common/dom/fire_event"; +import { Constructor, HomeAssistant } from "../types"; import { storeState } from "../util/ha-pref-storage"; import { HassBaseEl } from "./hass-base-mixin"; -import { HASSDomEvent } from "../common/dom/fire_event"; -import { HomeAssistant, Constructor } from "../types"; interface DockSidebarParams { dock: HomeAssistant["dockedSidebar"]; diff --git a/src/state/themes-mixin.ts b/src/state/themes-mixin.ts index de4ceeffc3..d93435dbda 100644 --- a/src/state/themes-mixin.ts +++ b/src/state/themes-mixin.ts @@ -2,11 +2,11 @@ import { applyThemesOnElement, invalidateThemeCache, } from "../common/dom/apply_themes_on_element"; -import { storeState } from "../util/ha-pref-storage"; -import { subscribeThemes } from "../data/ws-themes"; -import { HassBaseEl } from "./hass-base-mixin"; import { HASSDomEvent } from "../common/dom/fire_event"; +import { subscribeThemes } from "../data/ws-themes"; import { Constructor } from "../types"; +import { storeState } from "../util/ha-pref-storage"; +import { HassBaseEl } from "./hass-base-mixin"; declare global { // for add event listener diff --git a/src/state/translations-mixin.ts b/src/state/translations-mixin.ts index 1ab6bc4805..755951d0da 100644 --- a/src/state/translations-mixin.ts +++ b/src/state/translations-mixin.ts @@ -1,18 +1,18 @@ -import { translationMetadata } from "../resources/translations-metadata"; -import { - getTranslation, - getLocalLanguage, - getUserLanguage, -} from "../util/hass-translation"; -import { HassBaseEl } from "./hass-base-mixin"; import { computeLocalize } from "../common/translations/localize"; import { computeRTL } from "../common/util/compute_rtl"; -import { HomeAssistant, Constructor } from "../types"; -import { storeState } from "../util/ha-pref-storage"; import { getHassTranslations, saveTranslationPreferences, } from "../data/translation"; +import { translationMetadata } from "../resources/translations-metadata"; +import { Constructor, HomeAssistant } from "../types"; +import { storeState } from "../util/ha-pref-storage"; +import { + getLocalLanguage, + getTranslation, + getUserLanguage, +} from "../util/hass-translation"; +import { HassBaseEl } from "./hass-base-mixin"; /* * superClass needs to contain `this.hass` and `this._updateHass`. @@ -20,7 +20,7 @@ import { export default >(superClass: T) => class extends superClass { - // tslint:disable-next-line: variable-name + // eslint-disable-next-line: variable-name private __coreProgress?: string; protected firstUpdated(changedProps) { diff --git a/src/state/url-sync-mixin.ts b/src/state/url-sync-mixin.ts index 94325cab7b..d7178b3fe0 100644 --- a/src/state/url-sync-mixin.ts +++ b/src/state/url-sync-mixin.ts @@ -1,8 +1,8 @@ -import { HassBaseEl } from "./hass-base-mixin"; +/* eslint-disable no-console */ import { fireEvent } from "../common/dom/fire_event"; import { Constructor } from "../types"; +import { HassBaseEl } from "./hass-base-mixin"; -/* tslint:disable:no-console */ const DEBUG = false; export const urlSyncMixin = >( @@ -13,7 +13,9 @@ export const urlSyncMixin = >( ? superClass : class extends superClass { private _ignoreNextHassChange = false; + private _ignoreNextPopstate = false; + private _moreInfoOpenedFromPath?: string; public connectedCallback(): void { diff --git a/src/state/zha-dialog-mixin.ts b/src/state/zha-dialog-mixin.ts index ba6e294c2d..82721b8e80 100644 --- a/src/state/zha-dialog-mixin.ts +++ b/src/state/zha-dialog-mixin.ts @@ -1,11 +1,11 @@ import { UpdatingElement } from "lit-element"; -import { HassBaseEl } from "./hass-base-mixin"; +import { HASSDomEvent } from "../common/dom/fire_event"; import { showZHADeviceInfoDialog, ZHADeviceInfoDialogParams, } from "../dialogs/zha-device-info-dialog/show-dialog-zha-device-info"; -import { HASSDomEvent } from "../common/dom/fire_event"; import { Constructor } from "../types"; +import { HassBaseEl } from "./hass-base-mixin"; declare global { // for fire event diff --git a/src/types.ts b/src/types.ts index 066c644fea..206c76b04b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,23 +1,25 @@ import { - HassEntities, - HassConfig, Auth, Connection, - MessageBase, - HassEntityBase, + HassConfig, + HassEntities, HassEntityAttributeBase, + HassEntityBase, HassServices, + MessageBase, } from "home-assistant-js-websocket"; import { LocalizeFunc } from "./common/translations/localize"; -import { ExternalMessaging } from "./external_app/external_messaging"; import { CoreFrontendUserData } from "./data/frontend"; +import { ExternalMessaging } from "./external_app/external_messaging"; declare global { + /* eslint-disable no-var, no-redeclare */ var __DEV__: boolean; var __DEMO__: boolean; var __BUILD__: "latest" | "es5"; var __VERSION__: string; var __STATIC_PATH__: string; + /* eslint-enable no-var, no-redeclare */ interface Window { // Custom panel entry point url diff --git a/src/types/node-vibrant.d.ts b/src/types/node-vibrant.d.ts index 7e7b457f53..3b16ea4b69 100644 --- a/src/types/node-vibrant.d.ts +++ b/src/types/node-vibrant.d.ts @@ -1,4 +1,5 @@ +// eslint-disable-next-line no-var +declare var Vibrant: Any; declare module "node-vibrant" { export default Vibrant; } -declare var Vibrant: Any; diff --git a/src/util/app-localstorage-document.js b/src/util/app-localstorage-document.js index a966f8ee5f..b00fdffba1 100644 --- a/src/util/app-localstorage-document.js +++ b/src/util/app-localstorage-document.js @@ -65,7 +65,7 @@ Polymer({ observers: ["__storageSourceChanged(storage, key)"], - attached: function() { + attached: function () { this.listen(window, "storage", "__onStorage"); this.listen( window.top, @@ -74,7 +74,7 @@ Polymer({ ); }, - detached: function() { + detached: function () { this.unlisten(window, "storage", "__onStorage"); this.unlisten( window.top, @@ -93,7 +93,7 @@ Polymer({ * @param {*} key The new key to use. * @return {Promise} */ - saveValue: function(key) { + saveValue: function (key) { try { this.__setStorageValue(/*{@type if (key ty){String}}*/ key, this.data); } catch (e) { @@ -105,12 +105,12 @@ Polymer({ return Promise.resolve(); }, - reset: function() { + reset: function () { this.key = null; this.data = this.zeroValue; }, - destroy: function() { + destroy: function () { try { this.storage.removeItem(this.key); this.reset(); @@ -121,7 +121,7 @@ Polymer({ return Promise.resolve(); }, - getStoredValue: function(path) { + getStoredValue: function (path) { var value; if (this.key != null) { @@ -141,7 +141,7 @@ Polymer({ return Promise.resolve(value); }, - setStoredValue: function(path, value) { + setStoredValue: function (path, value) { if (this.key != null) { try { this.__setStorageValue(this.key, this.data); @@ -155,25 +155,25 @@ Polymer({ return Promise.resolve(value); }, - __computeStorage: function(sessionOnly) { + __computeStorage: function (sessionOnly) { return sessionOnly ? window.sessionStorage : window.localStorage; }, - __storageSourceChanged: function(storage, key) { + __storageSourceChanged: function (storage, key) { this._initializeStoredValue(); }, - __onStorage: function(event) { + __onStorage: function (event) { if (event.key !== this.key || event.storageArea !== this.storage) { return; } - this.syncToMemory(function() { + this.syncToMemory(function () { this.set("data", this.__parseValueFromStorage()); }); }, - __onAppLocalStorageChanged: function(event) { + __onAppLocalStorageChanged: function (event) { if ( event.detail === this || event.detail.key !== this.key || @@ -181,12 +181,12 @@ Polymer({ ) { return; } - this.syncToMemory(function() { + this.syncToMemory(function () { this.set("data", event.detail.data); }); }, - __parseValueFromStorage: function() { + __parseValueFromStorage: function () { try { return JSON.parse(this.storage.getItem(this.key)); } catch (e) { @@ -194,7 +194,7 @@ Polymer({ } }, - __setStorageValue: function(key, value) { + __setStorageValue: function (key, value) { if (typeof value === "undefined") value = null; this.storage.setItem(key, JSON.stringify(value)); }, diff --git a/src/util/ha-pref-storage.ts b/src/util/ha-pref-storage.ts index 74e0d7f84c..ac5319bfa6 100644 --- a/src/util/ha-pref-storage.ts +++ b/src/util/ha-pref-storage.ts @@ -11,10 +11,10 @@ const STORAGE = window.localStorage || {}; export function storeState(hass: HomeAssistant) { try { - for (const key of STORED_STATE) { + STORED_STATE.forEach((key) => { const value = hass[key]; STORAGE[key] = JSON.stringify(value === undefined ? null : value); - } + }); } catch (err) { // Safari throws exception in private mode } @@ -23,7 +23,7 @@ export function storeState(hass: HomeAssistant) { export function getState() { const state = {}; - for (const key of STORED_STATE) { + STORED_STATE.forEach((key) => { if (key in STORAGE) { let value = JSON.parse(STORAGE[key]); // dockedSidebar went from boolean to enum on 20190720 @@ -32,7 +32,7 @@ export function getState() { } state[key] = value; } - } + }); return state; } diff --git a/src/util/hass-call-api.ts b/src/util/hass-call-api.ts index bcde8b745a..ba75db21f9 100644 --- a/src/util/hass-call-api.ts +++ b/src/util/hass-call-api.ts @@ -1,5 +1,5 @@ -import { fetchWithAuth } from "./fetch-with-auth"; import { Auth } from "home-assistant-js-websocket"; +import { fetchWithAuth } from "./fetch-with-auth"; export const handleFetchPromise = async ( fetchPromise: Promise @@ -9,6 +9,7 @@ export const handleFetchPromise = async ( try { response = await fetchPromise; } catch (err) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal throw { error: "Request error", status_code: undefined, @@ -24,6 +25,7 @@ export const handleFetchPromise = async ( try { body = await response.json(); } catch (err) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal throw { error: "Unable to parse JSON response", status_code: err.status, @@ -35,6 +37,7 @@ export const handleFetchPromise = async ( } if (!response.ok) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal throw { error: `Response error: ${response.status}`, status_code: response.status, diff --git a/src/util/hass-translation.ts b/src/util/hass-translation.ts index 5378428402..67aa62b0c4 100644 --- a/src/util/hass-translation.ts +++ b/src/util/hass-translation.ts @@ -1,6 +1,6 @@ +import { fetchTranslationPreferences } from "../data/translation"; import { translationMetadata } from "../resources/translations-metadata"; import { HomeAssistant } from "../types"; -import { fetchTranslationPreferences } from "../data/translation"; const STORAGE = window.localStorage || {}; @@ -32,11 +32,9 @@ function findAvailableLanguage(language: string) { return LOCALE_LOOKUP[langLower]; } - for (const lang in Object.keys(translationMetadata.translations)) { - if (lang.toLowerCase() === langLower) { - return lang; - } - } + return Object.keys(translationMetadata.translations).find( + (lang) => lang.toLowerCase() === langLower + ); } /** diff --git a/src/util/legacy-support.js b/src/util/legacy-support.js index f45d14fc3a..ab77431315 100644 --- a/src/util/legacy-support.js +++ b/src/util/legacy-support.js @@ -2,9 +2,10 @@ * Provide legacy support to HTML imports by exposing Polymer and * Polymer.Element on the window object. */ +/* eslint-plugin-disable lit */ +import { html } from "@polymer/polymer/lib/utils/html-tag"; import { PolymerElement } from "@polymer/polymer/polymer-element"; import { Polymer } from "@polymer/polymer/polymer-legacy"; -import { html } from "@polymer/polymer/lib/utils/html-tag"; Polymer.Element = PolymerElement; Polymer.html = html; diff --git a/src/util/toast-deleted-success.ts b/src/util/toast-deleted-success.ts index a44028de6c..046e099fec 100644 --- a/src/util/toast-deleted-success.ts +++ b/src/util/toast-deleted-success.ts @@ -1,6 +1,6 @@ -import { showToast } from "./toast"; -import { HomeAssistant } from "../types"; import { ShowToastParams } from "../managers/notification-manager"; +import { HomeAssistant } from "../types"; +import { showToast } from "./toast"; export const showDeleteSuccessToast = ( el: HTMLElement, diff --git a/src/util/toast-saved-success.ts b/src/util/toast-saved-success.ts index 8d7c8c360b..41eb40baca 100644 --- a/src/util/toast-saved-success.ts +++ b/src/util/toast-saved-success.ts @@ -1,5 +1,5 @@ -import { showToast } from "./toast"; import { HomeAssistant } from "../types"; +import { showToast } from "./toast"; export const showSaveSuccessToast = (el: HTMLElement, hass: HomeAssistant) => showToast(el, { diff --git a/src/util/toast.ts b/src/util/toast.ts index 169d09044c..593591f17a 100644 --- a/src/util/toast.ts +++ b/src/util/toast.ts @@ -1,6 +1,5 @@ -import { ShowToastParams } from "../managers/notification-manager"; - import { fireEvent } from "../common/dom/fire_event"; +import { ShowToastParams } from "../managers/notification-manager"; export const showToast = (el: HTMLElement, params: ShowToastParams) => fireEvent(el, "hass-notification", params); diff --git a/test-mocha/common/entity/feature_class_names_test.ts b/test-mocha/common/entity/feature_class_names_test.ts index 70ef71f03a..0928ea98b3 100644 --- a/test-mocha/common/entity/feature_class_names_test.ts +++ b/test-mocha/common/entity/feature_class_names_test.ts @@ -17,7 +17,7 @@ describe("featureClassNames", () => { }); it("Matches no features", () => { - // tslint:disable-next-line + // eslint-disable-next-line const stateObj = { attributes: { supported_features: 64, @@ -27,7 +27,7 @@ describe("featureClassNames", () => { }); it("Matches one feature", () => { - // tslint:disable-next-line + // eslint-disable-next-line const stateObj = { attributes: { supported_features: 72, @@ -40,7 +40,7 @@ describe("featureClassNames", () => { }); it("Matches two features", () => { - // tslint:disable-next-line + // eslint-disable-next-line const stateObj = { attributes: { supported_features: 73, diff --git a/test-mocha/tslint.json b/test-mocha/tslint.json deleted file mode 100644 index 1e32f15d50..0000000000 --- a/test-mocha/tslint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["../tslint.json"], - "rules": { - "no-implicit-dependencies": [true, "dev"] - } -} diff --git a/test/index.html b/test/index.html index 839314e0fa..c258110591 100644 --- a/test/index.html +++ b/test/index.html @@ -1,19 +1,23 @@ - - - - Tests - - - - - - + + + + Tests + + + + + + + diff --git a/test/state-card-display-test.html b/test/state-card-display-test.html index ddf9fcfef1..4dc00562f2 100644 --- a/test/state-card-display-test.html +++ b/test/state-card-display-test.html @@ -1,60 +1,63 @@ - + - - - + + + - - - - - - + + + + + + - - + test("state display text", function (done) { + flush(function () { + const stateDiv = lightOrShadow(card, ".state"); + assert.isOk(stateDiv); + assert.deepEqual(stateDiv.innerText, "Mock Off Text"); + done(); + }); + }); + }); + + diff --git a/test/state-info-test.html b/test/state-info-test.html index cc876f9630..f92af611e7 100644 --- a/test/state-info-test.html +++ b/test/state-info-test.html @@ -1,100 +1,121 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + - - + + diff --git a/tslint.json b/tslint.json deleted file mode 100644 index a9442303c3..0000000000 --- a/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": ["tslint:latest", "tslint-eslint-rules", "tslint-config-prettier"], - "rulesDirectory": ["tslint-plugin-prettier"], - "rules": { - "prettier": true, - "interface-name": false, - "no-submodule-imports": false, - "ordered-imports": false, - "object-literal-sort-keys": false, - "variable-name": [ - true, - "ban-keywords", - "check-format", - "allow-leading-underscore" - ] - } -} diff --git a/yarn.lock b/yarn.lock index 0e066ef8e5..401e9e7e21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,12 +23,12 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.4": - version "7.8.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz#d28ce872778c23551cbb9432fc68d28495b613b9" - integrity sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg== +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== dependencies: - browserslist "^4.8.5" + browserslist "^4.9.1" invariant "^2.2.4" semver "^5.5.0" @@ -52,22 +52,23 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== +"@babel/core@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" - json5 "^2.1.0" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" @@ -105,6 +106,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" + integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== + dependencies: + "@babel/types" "^7.9.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -135,13 +146,22 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" - integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" + integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== dependencies: - "@babel/types" "^7.8.3" - esutils "^2.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" "@babel/helper-call-delegate@^7.4.4": version "7.4.4" @@ -152,22 +172,13 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-compilation-targets@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" - integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== - dependencies: - "@babel/compat-data" "^7.8.4" - browserslist "^4.8.5" + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" @@ -192,6 +203,15 @@ "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" +"@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + "@babel/helper-define-map@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" @@ -244,6 +264,15 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" @@ -312,16 +341,17 @@ "@babel/types" "^7.5.5" lodash "^4.17.13" -"@babel/helper-module-transforms@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" - integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.0.0": @@ -404,6 +434,16 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/helper-simple-access@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" @@ -434,6 +474,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + "@babel/helper-wrap-function@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" @@ -463,14 +508,14 @@ "@babel/traverse" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/helpers@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" - integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.0.0": version "7.0.0" @@ -500,6 +545,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + "@babel/plugin-external-helpers@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4" @@ -573,6 +623,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" @@ -581,13 +639,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== +"@babel/plugin-proposal-object-rest-spread@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116" + integrity sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" "@babel/plugin-proposal-optional-catch-binding@^7.8.3": version "7.8.3" @@ -597,14 +656,22 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" - integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" @@ -676,6 +743,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" @@ -794,17 +868,17 @@ "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" - integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== +"@babel/plugin-transform-classes@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" @@ -829,14 +903,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" - integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== +"@babel/plugin-transform-destructuring@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== @@ -881,10 +955,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-for-of@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" - integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -941,41 +1015,41 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-amd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" - integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" - integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" - integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" - integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": @@ -1017,12 +1091,11 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-parameters@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" - integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== +"@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== dependencies: - "@babel/helper-call-delegate" "^7.8.3" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -1033,12 +1106,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" - integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== +"@babel/plugin-transform-react-jsx@^7.9.4": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== dependencies: - "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" @@ -1049,12 +1123,12 @@ dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-regenerator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.8.3": version "7.8.3" @@ -1137,10 +1211,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" - integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== +"@babel/plugin-transform-typescript@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz#4bb4dde4f10bbf2d787fce9707fb09b483e33359" + integrity sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -1163,27 +1237,29 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" - integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== +"@babel/preset-env@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f" + integrity sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ== dependencies: - "@babel/compat-data" "^7.8.4" - "@babel/helper-compilation-targets" "^7.8.4" + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" "@babel/plugin-proposal-dynamic-import" "^7.8.3" "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.5" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" @@ -1192,26 +1268,26 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-for-of" "^7.9.0" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.8.3" - "@babel/plugin-transform-modules-commonjs" "^7.8.3" - "@babel/plugin-transform-modules-systemjs" "^7.8.3" - "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-parameters" "^7.9.5" "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" "@babel/plugin-transform-reserved-words" "^7.8.3" "@babel/plugin-transform-shorthand-properties" "^7.8.3" "@babel/plugin-transform-spread" "^7.8.3" @@ -1219,20 +1295,40 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.3" - browserslist "^4.8.5" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.5" + browserslist "^4.9.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-typescript@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz#90af8690121beecd9a75d0cc26c6be39d1595d13" - integrity sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA== +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" + integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" "@babel/runtime@7.0.0": version "7.0.0" @@ -1255,6 +1351,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.8.4": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.1.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -1273,6 +1376,15 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/traverse@^7.0.0", "@babel/traverse@^7.0.0-beta.42", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" @@ -1288,7 +1400,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": +"@babel/traverse@^7.8.3": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== @@ -1303,6 +1415,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" + integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.5" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.42", "@babel/types@^7.2.0", "@babel/types@^7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c" @@ -1330,6 +1457,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" + integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@gfx/zopfli@^1.0.9": version "1.0.11" resolved "https://registry.yarnpkg.com/@gfx/zopfli/-/zopfli-1.0.11.tgz#6ced06b4566a5feb0036fe6a1e0262ce6cb1d6c5" @@ -1337,6 +1473,15 @@ dependencies: base64-js "^1.3.0" +"@iarna/cli@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641" + integrity sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA== + dependencies: + signal-exit "^3.0.2" + update-notifier "^2.2.0" + yargs "^8.0.2" + "@jimp/bmp@^0.9.3": version "0.9.3" resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.9.3.tgz#98eafc81674ce750f428ac9380007f1a4e90255e" @@ -2415,6 +2560,11 @@ dependencies: "@types/tern" "*" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/compression@^0.0.33": version "0.0.33" resolved "https://registry.yarnpkg.com/@types/compression/-/compression-0.0.33.tgz#95dc733a2339aa846381d7f1377792d2553dc27d" @@ -2449,6 +2599,11 @@ resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-0.0.20.tgz#cae698714dd61ebee5ab3f2aeb9a34ba1011735a" integrity sha512-6dhZJLbA7aOwkYB2GDGdIqJ20wmHnkDzaxV9PJXe7O02I2dSFTERzRB6JrX6cWKaS+VqhhY7cQUMCbO5kloFUw== +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + "@types/estree@*", "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -2535,6 +2690,11 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.1.tgz#5c6f4a1eabca84792fbd916f0cb40847f123c656" integrity sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA== +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -2750,6 +2910,49 @@ resolved "https://registry.yarnpkg.com/@types/which/-/which-1.3.1.tgz#7802c380887986ca909008afea4e08025b130f8d" integrity sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ== +"@typescript-eslint/eslint-plugin@^2.28.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.28.0.tgz#4431bc6d3af41903e5255770703d4e55a0ccbdec" + integrity sha512-w0Ugcq2iatloEabQP56BRWJowliXUP5Wv6f9fKzjJmDW81hOTBxRoJ4LoEOxRpz9gcY51Libytd2ba3yLmSOfg== + dependencies: + "@typescript-eslint/experimental-utils" "2.28.0" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.28.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.28.0.tgz#1fd0961cd8ef6522687b4c562647da6e71f8833d" + integrity sha512-4SL9OWjvFbHumM/Zh/ZeEjUFxrYKtdCi7At4GyKTbQlrj1HcphIDXlje4Uu4cY+qzszR5NdVin4CCm6AXCjd6w== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.28.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^2.24.0", "@typescript-eslint/parser@^2.28.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.28.0.tgz#bb761286efd2b0714761cab9d0ee5847cf080385" + integrity sha512-RqPybRDquui9d+K86lL7iPqH6Dfp9461oyqvlXMNtap+PyqYbkY5dB7LawQjDzot99fqzvS0ZLZdfe+1Bt3Jgw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.28.0" + "@typescript-eslint/typescript-estree" "2.28.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.28.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.28.0.tgz#d34949099ff81092c36dc275b6a1ea580729ba00" + integrity sha512-HDr8MP9wfwkiuqzRVkuM3BeDrOC4cKbO5a6BymZBHUt5y/2pL0BXD6I/C/ceq2IZoHWhcASk+5/zo+dwgu9V8Q== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + "@vaadin/vaadin-button@^2.1.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@vaadin/vaadin-button/-/vaadin-button-2.2.1.tgz#129b585d176053289b13451767495727b2201763" @@ -3061,7 +3264,15 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abbrev@1: +JSONStream@^1.3.4, JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -3094,10 +3305,10 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn-jsx@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" - integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn@^3.0.4: version "3.3.0" @@ -3119,10 +3330,10 @@ acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== adm-zip@~0.4.3: version "0.4.13" @@ -3134,13 +3345,27 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@^4.1.0: +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@^4.1.0, agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -3176,6 +3401,16 @@ ajv@^6.10.0, ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -3207,11 +3442,18 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -3251,6 +3493,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -3268,6 +3515,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -3278,6 +3533,16 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= + +ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= + any-base@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" @@ -3321,11 +3586,16 @@ append-field@^1.0.0: resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"aproba@^1.1.2 || 2", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archiver-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" @@ -3352,7 +3622,7 @@ archiver@2.1.1: tar-stream "^1.5.0" zip-stream "^1.2.0" -archy@^1.0.0: +archy@^1.0.0, archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= @@ -3476,6 +3746,15 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-initial@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" @@ -3542,6 +3821,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" @@ -3552,7 +3839,7 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@^2.0.0, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -3736,15 +4023,16 @@ babel-helper-to-multiple-sequence-expressions@^0.4.3: resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.4.3.tgz#5b518b1127f47b3038773386a1561a2b48e632b6" integrity sha1-W1GLESf0ezA4dzOGoVYaK0jmMrY= -babel-loader@^8.0.5: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" babel-messages@^6.23.0: version "6.23.0" @@ -4074,6 +4362,18 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bin-links@^1.1.2, bin-links@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228" + integrity sha512-KgmVfx+QqggqP9dA3iIc5pA4T1qEEEL+hOhOhNPaUm77OTrJoOXE/C05SJLNJe6m/2wUK7F1tDSou7n5TfCDzQ== + dependencies: + bluebird "^3.5.3" + cmd-shim "^3.0.0" + gentle-fs "^2.3.0" + graceful-fs "^4.1.15" + npm-normalize-package-bin "^1.0.0" + write-file-atomic "^2.3.0" + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -4105,6 +4405,11 @@ blocking-elements@^0.1.0: resolved "https://registry.yarnpkg.com/blocking-elements/-/blocking-elements-0.1.0.tgz#e590b35969bb2eea571c95407e9843a80bd113a8" integrity sha512-m9UvynAHLhlWH4vSovSDAopW7DyJ91qeDnNrJqy+DE+tjhUYiXW1x7pOm3DZBczlQPPypWpOwOz5xd5A76vNvg== +bluebird@^3.5.1: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" @@ -4308,7 +4613,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.3, browserslist@^4.8.5: +browserslist@^4.8.3: version "4.8.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0" integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA== @@ -4317,6 +4622,16 @@ browserslist@^4.8.3, browserslist@^4.8.5: electron-to-chromium "^1.3.349" node-releases "^1.1.49" +browserslist@^4.9.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" + integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== + dependencies: + caniuse-lite "^1.0.30001038" + electron-to-chromium "^1.3.390" + node-releases "^1.1.53" + pkg-up "^2.0.0" + browserstack@^1.2.0: version "1.5.2" resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.2.tgz#17d8bb76127a1cc0ea416424df80d218f803673f" @@ -4397,16 +4712,16 @@ buffer@^5.2.0: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + busboy@^0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" @@ -4415,6 +4730,16 @@ busboy@^0.2.11: dicer "0.2.5" readable-stream "1.1.x" +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4445,6 +4770,27 @@ cacache@^11.0.2, cacache@^11.3.1: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^12.0.0, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" @@ -4481,6 +4827,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-limit@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" + integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ== + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -4536,7 +4887,7 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.0.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= @@ -4558,6 +4909,11 @@ caniuse-lite@^1.0.30001027: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz#283e2ef17d94889cc216a22c6f85303d78ca852d" integrity sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg== +caniuse-lite@^1.0.30001038: + version "1.0.30001041" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001041.tgz#c2ea138dafc6fe03877921ddcddd4a02a14daf76" + integrity sha512-fqDtRCApddNrQuBxBS7kEiSGdBsgO4wiVw4G/IClfqzfhW45MbTumfN4cuUJGTM0YGFNn97DCXPJ683PS6zwvA== + capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" @@ -4580,7 +4936,7 @@ chai@^4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4611,6 +4967,14 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" @@ -4725,6 +5089,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chownr@^1.1.2, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -4742,6 +5111,13 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cidr-regex@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" + integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== + dependencies: + ip-regex "^2.1.0" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -4782,6 +5158,14 @@ cli-boxes@^1.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +cli-columns@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" + integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= + dependencies: + string-width "^2.0.0" + strip-ansi "^3.0.1" + cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -4789,6 +5173,23 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@^0.5.0, cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -4873,6 +5274,14 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" +cmd-shim@^3.0.0, cmd-shim@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" + integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4912,12 +5321,19 @@ color-convert@^1.9.0, color-convert@^1.9.1: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -4948,6 +5364,11 @@ colornames@^1.1.1: resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + colors@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" @@ -4961,6 +5382,14 @@ colorspace@1.1.x: color "3.0.x" text-hex "1.0.x" +columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -4993,7 +5422,7 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.12.1, commander@^2.14.1, commander@^2.19.0, commander@^2.9.0, commander@~2.19.0: +commander@^2.14.1, commander@^2.19.0, commander@^2.9.0, commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -5073,6 +5502,14 @@ concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -5085,10 +5522,10 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confusing-browser-globals@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" - integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== connect-history-api-fallback@^1.6.0: version "1.6.0" @@ -5102,7 +5539,7 @@ console-browserify@^1.1.0: dependencies: date-now "^0.1.4" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -5213,6 +5650,11 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + core-js@^2.4.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -5455,6 +5897,13 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" +debug@3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@3.2.6, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -5469,12 +5918,10 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" @@ -5548,7 +5995,7 @@ default-resolution@^2.0.0: resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= -defaults@^1.0.2: +defaults@^1.0.2, defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= @@ -5666,16 +6113,34 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-node@^2.0.3, detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +dezalgo@^1.0.0, dezalgo@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + diagnostics@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" @@ -5698,11 +6163,6 @@ diff@3.5.0, diff@^3.1.0, diff@^3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -diff@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" - integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== - diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -5739,14 +6199,6 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -doctrine@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" - integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= - dependencies: - esutils "^1.1.6" - isarray "0.0.1" - doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -5852,6 +6304,11 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +dotenv@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== + duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -5902,6 +6359,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +editor@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5912,6 +6374,11 @@ electron-to-chromium@^1.3.349: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.349.tgz#663f26a69d348a462df47b4d7ab162a2f29bbcb7" integrity sha512-uEb2zs6EJ6OZIqaMsCSliYVgzE/f7/s1fLWqtvRtHg/v5KBF2xds974fUnyatfxIDgkqzQVwFtam5KExqywx0Q== +electron-to-chromium@^1.3.390: + version "1.3.403" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.403.tgz#c8bab4e2e72bf78bc28bad1cc355c061f9cc1918" + integrity sha512-JaoxV4RzdBAZOnsF4dAlZ2ijJW72MbqO5lNfOBHUWiBQl3Rwe+mk2RCUMrRI3rSClLJ8HSNQNqcry12H+0ZjFw== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -5940,11 +6407,21 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + enabled@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" @@ -5957,6 +6434,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -6013,7 +6497,7 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -enhanced-resolve@~0.9.0: +enhanced-resolve@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= @@ -6027,11 +6511,21 @@ entities@^1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +env-paths@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + env-variable@0.0.x: version "0.0.5" resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA== +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -6046,7 +6540,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -6058,6 +6552,23 @@ es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0 is-regex "^1.0.4" object-keys "^1.0.12" +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" @@ -6067,6 +6578,15 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.49" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.49.tgz#059a239de862c94494fec28f8150c977028c6c5e" @@ -6143,19 +6663,37 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-airbnb-base@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" - integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== +eslint-config-airbnb-base@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" + integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw== dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.1" -eslint-config-prettier@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.2.0.tgz#80e0b8714e3f6868c4ac2a25fbf39c02e73527a7" - integrity sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ== +eslint-config-airbnb-typescript@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-7.2.1.tgz#bce3f02fa894d1ec2f31ac527992e03761a9b7d4" + integrity sha512-D3elVKUbdsCfkOVstSyWuiu+KGCVTrYxJPoenPIqZtL6Li/R4xBeVTXjZIui8B8D17bDN3Pz5dSr7jRLY5HqIg== + dependencies: + "@typescript-eslint/parser" "^2.24.0" + eslint-config-airbnb "^18.1.0" + eslint-config-airbnb-base "^14.1.0" + +eslint-config-airbnb@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz#724d7e93dadd2169492ff5363c5aaa779e01257d" + integrity sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw== + dependencies: + eslint-config-airbnb-base "^14.1.0" + object.assign "^4.1.0" + object.entries "^1.1.1" + +eslint-config-prettier@^6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" + integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== dependencies: get-stdin "^6.0.0" @@ -6167,76 +6705,97 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-import-resolver-webpack@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz#fcf1fd57a775f51e18f442915f85dd6ba45d2f26" - integrity sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg== +eslint-import-resolver-webpack@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.1.tgz#771ae561e887ca4e53ee87605fbb36c5e290b0f5" + integrity sha512-O/sUAXk6GWrICiN8JUkkjdt9uZpqZHP+FVnTxtEILL6EZMaPSrnP4lGPSFwcKsv7O211maqq4Nz60+dh236hVg== dependencies: array-find "^1.0.0" - debug "^2.6.8" - enhanced-resolve "~0.9.0" + debug "^2.6.9" + enhanced-resolve "^0.9.1" find-root "^1.1.0" - has "^1.0.1" - interpret "^1.0.0" - lodash "^4.17.4" + has "^1.0.3" + interpret "^1.2.0" + lodash "^4.17.15" node-libs-browser "^1.0.0 || ^2.0.0" - resolve "^1.10.0" - semver "^5.3.0" + resolve "^1.13.1" + semver "^5.7.1" -eslint-module-utils@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" - integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== +eslint-module-utils@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.18.2: - version "2.18.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== +eslint-plugin-disable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-disable/-/eslint-plugin-disable-2.0.1.tgz#01762b33b4cd807cb91096047e63896e7c37cfc2" + integrity sha512-nM46IxpAD1Lh1ka/iQ6CTYfBaAp4EzM5chvMMiDpmfKh7JNEnzvPK4D2FSZBLXVTOR/AT7Wov51eucyNisCVBA== + dependencies: + eslint ">=0.16.0" + resolve "^1.1.6" + +eslint-plugin-import@^2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" minimatch "^3.0.4" object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" -eslint-plugin-prettier@^2.2.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" - integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== +eslint-plugin-lit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-lit/-/eslint-plugin-lit-1.2.0.tgz#57ec9c82c1d9fc0477de4d858527ff183c3044c9" + integrity sha512-Y80R6ajNygpq8HsLzh6oEVPrUR0POP75oYb/kLxHkZe1DhZAZJ29DQiih9SktiFxv1AbZR7vN6p6ab5USe+cyQ== dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" + parse5 "^5.1.0" + parse5-htmlparser2-tree-adapter "^5.1.0" + requireindex "^1.2.0" -eslint-plugin-prettier@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d" - integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA== +eslint-plugin-prettier@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" + integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react@^7.14.3: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== +eslint-plugin-react@^7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-plugin-wc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-wc/-/eslint-plugin-wc-1.2.0.tgz#c47cedfce92823ea9bd5ebbe25121377cdcb55e4" + integrity sha512-p1Vv8GkiTS8ZNfsmWvNJfKsGwsfCDteo2QsFE53x5DuHN7YDVf36II46DauP3mBCQ9pZnYD8lZyl/uz3qBtwQw== + dependencies: + js-levenshtein-esm "^1.2.0" + validate-element-name "^2.1.1" eslint-scope@^4.0.3: version "4.0.3" @@ -6254,22 +6813,29 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.3.0.tgz#1f1a902f67bfd4c354e7288b81e40654d927eb6a" - integrity sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow== +eslint@>=0.16.0, eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -6278,19 +6844,19 @@ eslint@^6.3.0: debug "^4.0.1" doctrine "^3.0.0" eslint-scope "^5.0.0" - eslint-utils "^1.4.2" + eslint-utils "^1.4.3" eslint-visitor-keys "^1.1.0" - espree "^6.1.1" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.4.1" + inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" @@ -6299,7 +6865,7 @@ eslint@^6.3.0: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -6317,13 +6883,13 @@ espree@^3.5.2: acorn "^5.5.0" acorn-jsx "^3.0.0" -espree@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" + acorn "^7.1.1" + acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" esprima@^4.0.0: @@ -6355,16 +6921,6 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -esutils@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" - integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= - -esutils@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -6624,7 +7180,12 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-diff@^1.1.1, fast-diff@^1.1.2: +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== @@ -6634,7 +7195,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -6680,6 +7241,11 @@ fecha@^3.0.2: resolved "https://registry.yarnpkg.com/fecha/-/fecha-3.0.2.tgz#fb3adb02762ab6dd27f7d5419f2f6c21a4229cd7" integrity sha512-oJK6YbKtmz1uvuDsUHOmo9X2HKmYAcRWtzW2yrCzOJRUfyGUEu/8cDymBdedgEnkdJiTpNyPogWqfTuYffU4yA== +figgy-pudding@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -6700,6 +7266,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -6778,6 +7351,11 @@ find-index@^0.1.1: resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= +find-npm-prefix@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" + integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== + find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -6978,6 +7556,14 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +from2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" + integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.10" + from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -7024,7 +7610,16 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" -fs-write-stream-atomic@^1.0.8: +fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + +fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= @@ -7085,11 +7680,33 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gentle-fs@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.1.tgz#11201bf66c18f930ddca72cf69460bdfa05727b1" + integrity sha512-OlwBBwqCFPcjm33rF2BjW+Pr6/ll2741l+xooiwTCeaX2CA1ZuclavyMBe0/KlR21/XGsgY6hzEQZ15BdNa13Q== + dependencies: + aproba "^1.1.2" + chownr "^1.1.2" + cmd-shim "^3.0.3" + fs-vacuum "^1.2.10" + graceful-fs "^4.1.11" + iferr "^0.1.5" + infer-owner "^1.0.4" + mkdirp "^0.5.1" + path-is-inside "^1.0.2" + read-cmd-shim "^1.0.1" + slide "^1.1.6" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -7125,7 +7742,7 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -7258,6 +7875,18 @@ glob@^7.0.5, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -7309,11 +7938,18 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -7376,6 +8012,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +graceful-fs@^4.2.2, graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -7546,7 +8187,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.0, har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -7590,12 +8231,22 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= -has-unicode@^2.0.0: +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0, has-unicode@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -7698,6 +8349,11 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +hosted-git-info@^2.7.1, hosted-git-info@^2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -7762,6 +8418,11 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -7804,6 +8465,14 @@ http-parser-js@>=0.4.0: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -7855,6 +8524,21 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + husky@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/husky/-/husky-1.3.1.tgz#26823e399300388ca2afff11cfa8a86b0033fae0" @@ -7878,7 +8562,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7895,6 +8579,11 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= +iferr@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" + integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== + ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -7975,12 +8664,12 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -inflight@^1.0.4: +inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= @@ -7998,7 +8687,7 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -inherits@2.0.4: +inherits@2.0.4, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8008,23 +8697,37 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.4.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" through "^2.3.6" internal-ip@^4.3.0: @@ -8035,7 +8738,16 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@1.2.0, interpret@^1.0.0, interpret@^1.1.0: +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +interpret@1.2.0, interpret@^1.1.0, interpret@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== @@ -8082,7 +8794,7 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.0, ip@^1.1.5: +ip@1.1.5, ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -8156,6 +8868,11 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -8170,6 +8887,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-cidr@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f" + integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g== + dependencies: + cidr-regex "^2.0.10" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -8265,6 +8989,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -8383,6 +9112,11 @@ is-posix-bracket@^0.1.0: resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" @@ -8405,6 +9139,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -8427,6 +9168,11 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -8515,11 +9261,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -jest-docblock@^21.0.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" - integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== - joi@^14.3.1: version "14.3.1" resolved "https://registry.yarnpkg.com/joi/-/joi-14.3.1.tgz#164a262ec0b855466e0c35eea2a885ae8b6c703c" @@ -8534,6 +9275,11 @@ jpeg-js@^0.3.4: resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== +js-levenshtein-esm@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz#96532c34e0c90df198c9419963c64ca3cf43ae92" + integrity sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8580,7 +9326,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -8636,6 +9382,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -8653,6 +9406,11 @@ jsonminify@~0.2.3: resolved "https://registry.yarnpkg.com/jsonminify/-/jsonminify-0.2.3.tgz#4b842c8a3fe5d6aa48b2f8f95a1cf9a80c019d8e" integrity sha1-S4Qsij/l1qpIsvj5Whz5qAwBnY4= +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsonschema@^1.1.0, jsonschema@^1.1.1: version "1.2.4" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464" @@ -8668,10 +9426,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== +jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" object.assign "^4.1.0" @@ -8754,6 +9512,11 @@ launchpad@^0.7.0: q "^1.4.1" underscore "^1.8.3" +lazy-property@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" + integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -8812,6 +9575,140 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libcipm@^4.0.7: + version "4.0.8" + resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89" + integrity sha512-IN3hh2yDJQtZZ5paSV4fbvJg4aHxCCg5tcZID/dSVlTuUiWktsgaldVljJv6Z5OUlYspx6xQkbR0efNodnIrOA== + dependencies: + bin-links "^1.1.2" + bluebird "^3.5.1" + figgy-pudding "^3.5.1" + find-npm-prefix "^1.0.2" + graceful-fs "^4.1.11" + ini "^1.3.5" + lock-verify "^2.1.0" + mkdirp "^0.5.1" + npm-lifecycle "^3.0.0" + npm-logical-tree "^1.2.1" + npm-package-arg "^6.1.0" + pacote "^9.1.0" + read-package-json "^2.0.13" + rimraf "^2.6.2" + worker-farm "^1.6.0" + +libnpm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" + integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== + dependencies: + bin-links "^1.1.2" + bluebird "^3.5.3" + find-npm-prefix "^1.0.2" + libnpmaccess "^3.0.2" + libnpmconfig "^1.2.1" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmpublish "^1.1.2" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" + lock-verify "^2.0.2" + npm-lifecycle "^3.0.0" + npm-logical-tree "^1.2.1" + npm-package-arg "^6.1.0" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.0" + npmlog "^4.1.2" + pacote "^9.5.3" + read-package-json "^2.0.13" + stringify-package "^1.0.0" + +libnpmaccess@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" + integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== + dependencies: + aproba "^2.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + +libnpmconfig@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" + integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== + dependencies: + figgy-pudding "^3.5.1" + find-up "^3.0.0" + ini "^1.3.5" + +libnpmhook@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" + integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmorg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" + integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmpublish@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" + integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + semver "^5.5.1" + ssri "^6.0.1" + +libnpmsearch@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" + integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== + dependencies: + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmteam@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" + integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpx@^10.2.2: + version "10.2.3" + resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.3.tgz#d5e01f12d383ffca9a947807ca6a8f587d38fe2c" + integrity sha512-bCvdARu55fLQBhMfcYGF0GznF1kB2sqxq/9zKZ3652M8DDFWpVpCnpgzjzn0yWMDMez5ZGMBiX24yR11uEYZVQ== + dependencies: + dotenv "^5.0.1" + npm-package-arg "^6.0.0" + rimraf "^2.6.2" + safe-buffer "^5.1.0" + update-notifier "^2.3.0" + which "^1.3.0" + y18n "^4.0.0" + yargs "^11.0.0" + liftoff@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" @@ -8826,11 +9723,6 @@ liftoff@^3.1.0: rechoir "^0.6.2" resolve "^1.1.7" -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - lint-staged@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79" @@ -8969,7 +9861,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -8988,6 +9880,15 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -9004,6 +9905,35 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lock-verify@^2.0.2, lock-verify@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.0.tgz#12432feb68bb647071c78c44bde16029a0f7d935" + integrity sha512-BhM1Vqsu7x0s+EalTifNjdDPks+ZjdAhComvnA6VcCIlDOI5ouELXqAe1BYuEIP4zGN0W08xVm6byJV1LnCiJg== + dependencies: + "@iarna/cli" "^1.2.0" + npm-package-arg "^6.1.0" + semver "^5.4.1" + +lockfile@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= + lodash._escapehtmlchar@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" @@ -9049,6 +9979,11 @@ lodash._reunescapedhtml@~2.4.1: lodash._htmlescapes "~2.4.1" lodash.keys "~2.4.1" +lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + lodash._shimkeys@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" @@ -9061,6 +9996,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= +lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -9165,6 +10105,16 @@ lodash.templatesettings@~2.4.1: lodash._reinterpolate "~2.4.1" lodash.escape "~2.4.1" +lodash.union@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + +lodash.uniq@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + lodash.values@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" @@ -9172,6 +10122,11 @@ lodash.values@~2.4.1: dependencies: lodash.keys "~2.4.1" +lodash.without@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= + lodash@4.17.11, "lodash@>=3.5 <5", lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.8.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -9182,7 +10137,7 @@ lodash@^3.0.0, lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14: +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -9194,7 +10149,7 @@ log-symbols@2.2.0, log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -log-symbols@^1.0.2: +log-symbols@^1.0.0, log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= @@ -9319,6 +10274,23 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -9410,11 +10382,23 @@ mdn-polyfills@^5.16.0: resolved "https://registry.yarnpkg.com/mdn-polyfills/-/mdn-polyfills-5.17.0.tgz#462b3e34d5c6ba769a32fda2b270e711da634a05" integrity sha512-KntYq3r7jQ3lqjGvQ+1zIv6Yvlt+G3Y3TngDZqzSB7SNBjW7IZ8WyrhHM4LyLWzgUVX53DrC2XR7cymQqbTFkw== +meant@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" + integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + mem@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.2.0.tgz#5ee057680ed9cb8dad8a78d820f9a8897a102025" @@ -9580,6 +10564,11 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.0.0.tgz#0913ff0b121db44ef5848242c38bbb35d44cabde" integrity sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -9626,6 +10615,11 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -9639,6 +10633,14 @@ minipass@^2.2.1, minipass@^2.3.4: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^2.3.5, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minizlib@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" @@ -9646,6 +10648,13 @@ minizlib@^1.1.1: dependencies: minipass "^2.2.1" +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -9685,6 +10694,13 @@ mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" +mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mocha@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.0.2.tgz#cdc1a6fdf66472c079b5605bac59d29807702d2c" @@ -9746,6 +10762,11 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multer@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.1.tgz#24b12a416a22fec2ade810539184bf138720159e" @@ -9793,10 +10814,10 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mz@^2.4.0, mz@^2.6.0: version "2.7.0" @@ -9903,11 +10924,37 @@ node-environment-flags@1.0.4: dependencies: object.getownpropertydescriptors "^2.0.3" +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== +node-gyp@^5.0.2, node-gyp@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" + integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + "node-libs-browser@^1.0.0 || ^2.0.0": version "2.2.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" @@ -9989,6 +11036,11 @@ node-releases@^1.1.49: dependencies: semver "^6.3.0" +node-releases@^1.1.53: + version "1.1.53" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" + integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== + node-vibrant@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/node-vibrant/-/node-vibrant-3.1.5.tgz#8729bf35aabd54cd2eccbfadf22124ab4e1305b0" @@ -10018,7 +11070,15 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +nopt@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -10047,11 +11107,74 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" +npm-audit-report@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.3.tgz#8226deeb253b55176ed147592a3995442f2179ed" + integrity sha512-8nH/JjsFfAWMvn474HB9mpmMjrnKb1Hx/oTAdjv4PT9iZBvBxiZ+wtDUapHCJwLqYGQVPaAfs+vL5+5k9QndXw== + dependencies: + cli-table3 "^0.5.0" + console-control-strings "^1.1.0" + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== +npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= + +npm-install-checks@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" + integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== + dependencies: + semver "^2.3.0 || 3.x || 4 || 5" + +npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-logical-tree@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" + integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.12, npm-packlist@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-packlist@^1.1.6: version "1.4.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" @@ -10067,6 +11190,37 @@ npm-path@^2.0.2: dependencies: which "^1.2.10" +npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-profile@^4.0.2, npm-profile@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b" + integrity sha512-Ta8xq8TLMpqssF0H60BXS1A90iMoM6GeKwsmravJ6wYjWwSzcYBTdyWa3DZCYqPutacBMEm7cxiOkiIeCUAHDQ== + dependencies: + aproba "^1.1.2 || 2" + figgy-pudding "^3.4.1" + npm-registry-fetch "^4.0.0" + +npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz#3c2179e39e04f9348b1c2979545951d36bee8766" + integrity sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -10074,6 +11228,11 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-user-validate@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" + integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= + npm-which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" @@ -10083,7 +11242,128 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npmlog@^4.0.2: +npm@^6.14.4: + version "6.14.4" + resolved "https://registry.yarnpkg.com/npm/-/npm-6.14.4.tgz#50a1c6274fb451ca18f6ff472d2a73f006adbd66" + integrity sha512-B8UDDbWvdkW6RgXFn8/h2cHJP/u/FPa4HWeGzW23aNEBARN3QPrRaHqPIZW2NSN3fW649gtgUDNZpaRs0zTMPw== + dependencies: + JSONStream "^1.3.5" + abbrev "~1.1.1" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + aproba "^2.0.0" + archy "~1.0.0" + bin-links "^1.1.7" + bluebird "^3.5.5" + byte-size "^5.0.1" + cacache "^12.0.3" + call-limit "^1.1.1" + chownr "^1.1.4" + ci-info "^2.0.0" + cli-columns "^3.1.2" + cli-table3 "^0.5.1" + cmd-shim "^3.0.3" + columnify "~1.5.4" + config-chain "^1.1.12" + detect-indent "~5.0.0" + detect-newline "^2.1.0" + dezalgo "~1.0.3" + editor "~1.0.0" + figgy-pudding "^3.5.1" + find-npm-prefix "^1.0.2" + fs-vacuum "~1.2.10" + fs-write-stream-atomic "~1.0.10" + gentle-fs "^2.3.0" + glob "^7.1.6" + graceful-fs "^4.2.3" + has-unicode "~2.0.1" + hosted-git-info "^2.8.8" + iferr "^1.0.2" + infer-owner "^1.0.4" + inflight "~1.0.6" + inherits "^2.0.4" + ini "^1.3.5" + init-package-json "^1.10.3" + is-cidr "^3.0.0" + json-parse-better-errors "^1.0.2" + lazy-property "~1.0.0" + libcipm "^4.0.7" + libnpm "^3.0.1" + libnpmaccess "^3.0.2" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" + libnpx "^10.2.2" + lock-verify "^2.1.0" + lockfile "^1.0.4" + lodash._baseuniq "~4.6.0" + lodash.clonedeep "~4.5.0" + lodash.union "~4.6.0" + lodash.uniq "~4.5.0" + lodash.without "~4.4.0" + lru-cache "^5.1.1" + meant "~1.0.1" + mississippi "^3.0.0" + mkdirp "^0.5.4" + move-concurrently "^1.0.1" + node-gyp "^5.1.0" + nopt "~4.0.1" + normalize-package-data "^2.5.0" + npm-audit-report "^1.3.2" + npm-cache-filename "~1.0.2" + npm-install-checks "^3.0.2" + npm-lifecycle "^3.1.4" + npm-package-arg "^6.1.1" + npm-packlist "^1.4.8" + npm-pick-manifest "^3.0.2" + npm-profile "^4.0.4" + npm-registry-fetch "^4.0.3" + npm-user-validate "~1.0.0" + npmlog "~4.1.2" + once "~1.4.0" + opener "^1.5.1" + osenv "^0.1.5" + pacote "^9.5.12" + path-is-inside "~1.0.2" + promise-inflight "~1.0.1" + qrcode-terminal "^0.12.0" + query-string "^6.8.2" + qw "~1.0.1" + read "~1.0.7" + read-cmd-shim "^1.0.5" + read-installed "~4.0.3" + read-package-json "^2.1.1" + read-package-tree "^5.3.1" + readable-stream "^3.6.0" + readdir-scoped-modules "^1.1.0" + request "^2.88.0" + retry "^0.12.0" + rimraf "^2.7.1" + safe-buffer "^5.1.2" + semver "^5.7.1" + sha "^3.0.0" + slide "~1.1.6" + sorted-object "~2.0.1" + sorted-union-stream "~2.1.3" + ssri "^6.0.1" + stringify-package "^1.0.1" + tar "^4.4.13" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + uid-number "0.0.6" + umask "~1.1.0" + unique-filename "^1.1.1" + unpipe "~1.0.0" + update-notifier "^2.5.0" + uuid "^3.3.3" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "~3.0.0" + which "^1.3.1" + worker-farm "^1.7.0" + write-file-atomic "^2.4.3" + +npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -10129,11 +11409,21 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + object-keys@^1.0.11, object-keys@^1.0.12: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -10161,25 +11451,25 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== +object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" - has "^1.0.1" + has "^1.0.3" object.getownpropertydescriptors@^2.0.3: version "2.0.3" @@ -10230,6 +11520,16 @@ object.values@^1.1.0: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + obuf@^1.0.0, obuf@^1.1.1, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -10252,7 +11552,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -10271,6 +11571,18 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + opn@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a" @@ -10293,17 +11605,17 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" ordered-read-streams@^0.3.0: version "0.3.0" @@ -10344,6 +11656,15 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -10358,7 +11679,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.3, osenv@^0.1.4: +osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -10446,6 +11767,42 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== + dependencies: + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + pako@^1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -10558,6 +11915,13 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse5-htmlparser2-tree-adapter@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc" + integrity sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw== + dependencies: + parse5 "^5.1.1" + parse5@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -10568,6 +11932,11 @@ parse5@^5.1.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -10629,7 +11998,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -10780,6 +12149,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" @@ -11084,10 +12460,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" + integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== pretty-bytes@^4.0.2: version "4.0.2" @@ -11117,7 +12493,7 @@ pretty-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -private@^0.1.6, private@~0.1.5: +private@^0.1.6, private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -11147,11 +12523,19 @@ progress@2.0.3, progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: +promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + promise@^8.0.1: version "8.0.3" resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" @@ -11159,6 +12543,13 @@ promise@^8.0.1: dependencies: asap "~2.0.6" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + dependencies: + read "1" + prop-types-extra@^1.0.1, prop-types-extra@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz#32609910ea2dcf190366bacd3490d5a6412a605f" @@ -11181,6 +12572,18 @@ property-expr@^1.5.0: resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" @@ -11212,6 +12615,11 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -11254,7 +12662,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@2.x.x, punycode@^2.1.0: +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -11274,6 +12682,11 @@ q@^1.4.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qrcode-terminal@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" + integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== + qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -11284,6 +12697,15 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +query-string@^6.8.2: + version "6.12.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.12.1.tgz#2ae4d272db4fba267141665374e49a1de09e8a7c" + integrity sha512-OHj+zzfRMyj3rmo/6G8a5Ifvw3AleL/EbcHMD27YA31Q+cO5lfmQxECkImuNVjcskLcvBRVHNAB3w6udMs1eAA== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -11299,6 +12721,11 @@ querystringify@^2.0.0: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +qw@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" + integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= + randomatic@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" @@ -11421,6 +12848,48 @@ react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" +read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -11464,6 +12933,13 @@ read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" +read@1, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -11477,7 +12953,7 @@ read-pkg@^4.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.1.x, readable-stream@^1.0.26-2, readable-stream@^1.0.26-4, readable-stream@~1.1.9: +readable-stream@1.1.x, readable-stream@^1.0.26-2, readable-stream@^1.0.26-4, readable-stream@~1.1.10, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -11506,6 +12982,25 @@ readable-stream@1.1.x, readable-stream@^1.0.26-2, readable-stream@^1.0.26-4, rea isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -11552,6 +13047,13 @@ regenerate-unicode-properties@^8.1.0: dependencies: regenerate "^1.4.0" +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -11572,6 +13074,11 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -11579,6 +13086,14 @@ regenerator-transform@^0.14.0: dependencies: private "^0.1.6" +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -11594,11 +13109,24 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + regexpu-core@^4.5.4, regexpu-core@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" @@ -11611,6 +13139,18 @@ regexpu-core@^4.5.4, regexpu-core@^4.6.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + registry-auth-token@^3.0.1: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" @@ -11631,6 +13171,11 @@ regjsgen@^0.5.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + regjsparser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" @@ -11638,6 +13183,13 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + reify@^0.18.1: version "0.18.1" resolved "https://registry.yarnpkg.com/reify/-/reify-0.18.1.tgz#7e5fab2f4a33418ad42afded905cd0e78eef110b" @@ -11746,6 +13298,32 @@ request@2.88.0, request@^2.85.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-dir@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817" @@ -11766,6 +13344,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + requirejs@^2.3.4: version "2.3.6" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" @@ -11830,10 +13413,10 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, dependencies: path-parse "^1.0.6" -resolve@^1.10.1, resolve@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" @@ -11845,11 +13428,24 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -11862,7 +13458,7 @@ rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.6.3: +rimraf@^2.5.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11896,10 +13492,10 @@ rollup@^1.3.0: "@types/node" "^11.11.6" acorn "^6.1.1" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= +run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== dependencies: is-promise "^2.1.0" @@ -11915,18 +13511,30 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.3.3, rxjs@^6.4.0: +rxjs@^6.3.3: version "6.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== dependencies: tslib "^1.9.0" +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -11969,6 +13577,14 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -12024,6 +13640,11 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.5.1, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -12173,6 +13794,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae" + integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw== + dependencies: + graceful-fs "^4.1.2" + shady-css-parser@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/shady-css-parser/-/shady-css-parser-0.1.0.tgz#534dc79c8ca5884c5ed92a4e5a13d6d863bca428" @@ -12209,6 +13837,14 @@ shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -12284,6 +13920,16 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -12380,6 +14026,35 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + +sorted-object@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= + +sorted-union-stream@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" + integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= + dependencies: + from2 "^1.3.0" + stream-iterate "^1.1.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -12506,6 +14181,11 @@ spdy@^4.0.1: select-hose "^2.0.0" spdy-transport "^3.0.0" +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -12533,7 +14213,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -12618,6 +14298,14 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-iterate@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" + integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= + dependencies: + readable-stream "^2.1.5" + stream-shift "^1.0.0" + stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" @@ -12649,6 +14337,11 @@ streamsearch@0.1.2: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" @@ -12663,7 +14356,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12680,6 +14373,61 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -12708,6 +14456,11 @@ stringify-object@^3.2.2, stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +stringify-package@^1.0.0, stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + strip-ansi@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" @@ -12736,6 +14489,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -12842,6 +14602,13 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -12957,6 +14724,19 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + temp@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -13039,7 +14819,7 @@ text-hex@1.0.x: resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== -text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -13105,7 +14885,7 @@ through2@^3.0.0: dependencies: readable-stream "2 || 3" -through@^2.3.6, through@^2.3.8, through@~2.3.6: +"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -13137,6 +14917,11 @@ timm@^1.6.1: resolved "https://registry.yarnpkg.com/timm/-/timm-1.6.2.tgz#dfd8c6719f7ba1fcfc6295a32670a1c6d166c0bd" integrity sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw== +tiny-relative-date@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" + integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== + tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" @@ -13251,6 +15036,14 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -13307,69 +15100,15 @@ tsconfig-paths@^3.5.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== - -tslib@^1.10.0, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslint-config-prettier@^1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" - integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - -tslint-eslint-rules@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" - integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - dependencies: - doctrine "0.7.2" - tslib "1.9.0" - tsutils "^3.0.0" - -tslint-plugin-prettier@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.0.1.tgz#95b6a3b766622ffc44375825d7760225c50c3680" - integrity sha512-4FX9JIx/1rKHIPJNfMb+ooX1gPk5Vg3vNi7+dyFYpLO+O57F4g+b/fo1+W/G0SUOkBLHB/YKScxjX/P+7ZT/Tw== - dependencies: - eslint-plugin-prettier "^2.2.0" - lines-and-columns "^1.1.6" - tslib "^1.7.1" - -tslint@^5.20.1: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -tsutils@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.9.1.tgz#2a40dc742943c71eca6d5c1994fcf999956be387" - integrity sha512-hrxVtLtPqQr//p8/msPT1X1UYXUjizqSit5d9AQ5k38TcV38NyecL5xODNxa73cLe/5sdiJ+w1FqzDhRBA/anA== +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" @@ -13402,6 +15141,16 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@^1.6.4, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -13423,10 +15172,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.2.tgz#27e489b95fa5909445e9fef5ee48d81697ad18fb" - integrity sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ== +typescript@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== typical@^2.6.1: version "2.6.1" @@ -13451,6 +15200,16 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + +umask@^1.1.0, umask@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -13516,6 +15275,11 @@ unicode-match-property-value-ecmascript@^1.1.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" @@ -13595,7 +15359,7 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== -update-notifier@^2.2.0, update-notifier@^2.3.0: +update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== @@ -13678,6 +15442,18 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= + +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -13715,6 +15491,11 @@ uuid@^3.0.1, uuid@^3.2.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-compile-cache@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" @@ -13737,7 +15518,16 @@ vali-date@^1.0.0: resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= -validate-npm-package-license@^3.0.1: +validate-element-name@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/validate-element-name/-/validate-element-name-2.1.1.tgz#8ff75f7da69f73e7c510588362130508b7ac644e" + integrity sha1-j/dffaafc+fFEFiDYhMFCLesZE4= + dependencies: + is-potential-custom-element-name "^1.0.0" + log-symbols "^1.0.0" + meow "^3.7.0" + +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -13745,6 +15535,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" @@ -13953,6 +15750,13 @@ wct-sauce@^2.0.2: temp "^0.8.1" uuid "^3.2.1" +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + wd@^1.2.0: version "1.11.1" resolved "https://registry.yarnpkg.com/wd/-/wd-1.11.1.tgz#21a33e21977ad20522bb189f6529c3b55ac3862c" @@ -14172,7 +15976,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1.3.1, which@^1.0.8, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1.3.1, which@^1.0.8, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14221,16 +16025,16 @@ winston@^3.0.0: triple-beam "^1.3.0" winston-transport "^4.3.0" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - wordwrapjs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" @@ -14381,7 +16185,7 @@ worker-farm@^1.5.2: dependencies: errno "~0.1.7" -worker-farm@^1.7.0: +worker-farm@^1.6.0, worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -14434,6 +16238,15 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^2.3.0, write-file-atomic@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -14503,6 +16316,13 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + xss@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" @@ -14541,6 +16361,11 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@11.1.1, yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -14564,6 +16389,20 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + yargs-unparser@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" @@ -14608,6 +16447,24 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" +yargs@^11.0.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" + integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" @@ -14627,6 +16484,25 @@ yargs@^7.1.0: y18n "^3.2.1" yargs-parser "^5.0.0" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"