diff --git a/build-scripts/bundle.js b/build-scripts/bundle.js index 1183a5ce06..dc4b59b02a 100644 --- a/build-scripts/bundle.js +++ b/build-scripts/bundle.js @@ -52,6 +52,7 @@ module.exports.terserOptions = (latestBuild) => ({ module.exports.babelOptions = ({ latestBuild }) => ({ babelrc: false, + compact: false, presets: [ !latestBuild && [ "@babel/preset-env", @@ -79,12 +80,6 @@ module.exports.babelOptions = ({ latestBuild }) => ({ ].filter(Boolean), }); -// Are already ES5, cause warnings when babelified. -module.exports.babelExclude = () => [ - require.resolve("@mdi/js/mdi.js"), - require.resolve("hls.js"), -]; - const outputPath = (outputRoot, latestBuild) => path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5"); diff --git a/build-scripts/rollup.js b/build-scripts/rollup.js index 7d9cf93046..f57e9f7e64 100644 --- a/build-scripts/rollup.js +++ b/build-scripts/rollup.js @@ -57,7 +57,6 @@ const createRollupConfig = ({ babel({ ...bundle.babelOptions({ latestBuild }), extensions, - exclude: bundle.babelExclude(), babelHelpers: isWDS ? "inline" : "bundled", }), string({ diff --git a/build-scripts/webpack.js b/build-scripts/webpack.js index fe025abac2..3dcac91de9 100644 --- a/build-scripts/webpack.js +++ b/build-scripts/webpack.js @@ -47,7 +47,6 @@ const createWebpackConfig = ({ rules: [ { test: /\.m?js$|\.ts$/, - exclude: bundle.babelExclude(), use: { loader: "babel-loader", options: bundle.babelOptions({ latestBuild }), diff --git a/hassio/src/components/supervisor-snapshot-content.ts b/hassio/src/components/supervisor-snapshot-content.ts index 8c87976329..2d95864d33 100644 --- a/hassio/src/components/supervisor-snapshot-content.ts +++ b/hassio/src/components/supervisor-snapshot-content.ts @@ -44,6 +44,9 @@ const _computeFolders = (folders): CheckboxItem[] => { if (folders.includes("share")) { list.push({ slug: "share", name: "Share", checked: false }); } + if (folders.includes("media")) { + list.push({ slug: "media", name: "Media", checked: false }); + } if (folders.includes("addons/local")) { list.push({ slug: "addons/local", name: "Local add-ons", checked: false }); } diff --git a/hassio/src/ingress-view/hassio-ingress-view.ts b/hassio/src/ingress-view/hassio-ingress-view.ts index 710cf3b5e3..24d050acb9 100644 --- a/hassio/src/ingress-view/hassio-ingress-view.ts +++ b/hassio/src/ingress-view/hassio-ingress-view.ts @@ -97,16 +97,23 @@ class HassioIngressView extends LitElement { title: requestedAddon, }); await nextRender(); - history.back(); + navigate("/hassio/store", { replace: true }); return; } - if (!addonInfo.ingress) { + if (!addonInfo.version) { + await showAlertDialog(this, { + text: this.supervisor.localize("my.error_addon_not_installed"), + title: addonInfo.name, + }); + await nextRender(); + navigate(`/hassio/addon/${addonInfo.slug}/info`, { replace: true }); + } else if (!addonInfo.ingress) { await showAlertDialog(this, { text: this.supervisor.localize("my.error_addon_no_ingress"), title: addonInfo.name, }); await nextRender(); - history.back(); + navigate(`/hassio/addon/${addonInfo.slug}/info`, { replace: true }); } else { navigate(`/hassio/ingress/${addonInfo.slug}`, { replace: true }); } diff --git a/lint-staged.config.js b/lint-staged.config.js index 15d6269cbc..2c08d7e620 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,5 +1,4 @@ module.exports = { - "*.ts": () => "tsc -p tsconfig.json", "*.{js,ts}": "eslint --fix", "!(/translations)*.{js,ts,json,css,md,html}": "prettier --write", }; diff --git a/package.json b/package.json index c316946391..e54c178377 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "fecha": "^4.2.0", "fuse.js": "^6.0.0", "google-timezones-json": "^1.0.2", - "hls.js": "^1.0.4", + "hls.js": "^1.0.5", "home-assistant-js-websocket": "^5.10.0", "idb-keyval": "^5.0.5", "intl-messageformat": "^9.6.16", diff --git a/setup.py b/setup.py index 972990e191..cdb54db937 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="home-assistant-frontend", - version="20210601.1", + version="20210603.0", description="The Home Assistant frontend", url="https://github.com/home-assistant/home-assistant-polymer", author="The Home Assistant Authors", diff --git a/src/common/search/search-input.ts b/src/common/search/search-input.ts index bde0c9ab5c..5a45277a0e 100644 --- a/src/common/search/search-input.ts +++ b/src/common/search/search-input.ts @@ -1,9 +1,16 @@ import "@material/mwc-icon-button/mwc-icon-button"; import { mdiClose, mdiMagnify } from "@mdi/js"; import "@polymer/paper-input/paper-input"; -import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators"; -import { classMap } from "lit/directives/class-map"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; +import { + css, + CSSResultGroup, + html, + LitElement, + PropertyValues, + TemplateResult, +} from "lit"; +import { customElement, property, query } from "lit/decorators"; import "../../components/ha-svg-icon"; import { fireEvent } from "../dom/fire_event"; @@ -27,18 +34,11 @@ class SearchInput extends LitElement { this.shadowRoot!.querySelector("paper-input")!.focus(); } + @query("paper-input", true) private _input!: PaperInputElement; + protected render(): TemplateResult { return html` - ; + @customElement("ha-hls-player") class HaHLSPlayer extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -39,7 +44,7 @@ class HaHLSPlayer extends LitElement { @state() private _attached = false; - private _hlsPolyfillInstance?: HlsType; + private _hlsPolyfillInstance?: HlsLite; private _useExoPlayer = false; @@ -103,7 +108,8 @@ class HaHLSPlayer extends LitElement { const useExoPlayerPromise = this._getUseExoPlayer(); const masterPlaylistPromise = fetch(this.url); - const Hls = (await import("hls.js")).default; + const Hls: typeof HlsType = (await import("hls.js/dist/hls.light.min.js")) + .default; let hlsSupported = Hls.isSupported(); if (!hlsSupported) { @@ -182,7 +188,7 @@ class HaHLSPlayer extends LitElement { url: string ) { const hls = new Hls({ - liveBackBufferLength: 60, + backBufferLength: 60, fragLoadingTimeOut: 30000, manifestLoadingTimeOut: 30000, levelLoadingTimeOut: 30000, diff --git a/src/html/authorize.html.template b/src/html/authorize.html.template index 1cf1c7bba4..555aea9e0e 100644 --- a/src/html/authorize.html.template +++ b/src/html/authorize.html.template @@ -48,6 +48,9 @@ window.providersPromise = fetch("/auth/providers", { credentials: "same-origin", }); + if (!window.globalThis) { + window.globalThis = window; + }